Patch 8.0.0794
Problem:    The script to check translations fails if there is more than one
            NL in one line.
Solution:   Count the number of NL characters.  Make count() accept a string.
Files:      src/po/check.vim, src/evalfunc.c, runtime/doc/eval.txt,
            src/testdir/test_functions.vim


*** ../vim-8.0.0793/src/po/check.vim    2017-07-19 14:34:37.829053506 +0200
--- src/po/check.vim    2017-07-28 16:24:04.051329077 +0200
***************
*** 114,127 ****
  func! CountNl(first, last)
    let nl = 0
    for lnum in range(a:first, a:last)
!     if getline(lnum) =~ '\\n'
!       let nl += 1
!     endif
    endfor
    return nl
  endfunc
  
! " Check that the \n at the end of the msid line is also present in the msgstr
  " line.  Skip over the header.
  /^"MIME-Version:
  while 1
--- 114,125 ----
  func! CountNl(first, last)
    let nl = 0
    for lnum in range(a:first, a:last)
!     let nl += count(getline(lnum), "\n")
    endfor
    return nl
  endfunc
  
! " Check that the \n at the end of the msgid line is also present in the msgstr
  " line.  Skip over the header.
  /^"MIME-Version:
  while 1
***************
*** 138,144 ****
    let transcount = CountNl(strlnum, end - 1)
    " Allow for a few more or less line breaks when there are 2 or more
    if origcount != transcount && (origcount <= 2 || transcount <= 2)
!     echomsg 'Mismatching "\\n" in line ' . line('.')
      if error == 0
        let error = lnum
      endif
--- 136,142 ----
    let transcount = CountNl(strlnum, end - 1)
    " Allow for a few more or less line breaks when there are 2 or more
    if origcount != transcount && (origcount <= 2 || transcount <= 2)
!     echomsg 'Mismatching "\n" in line ' . line('.')
      if error == 0
        let error = lnum
      endif
*** ../vim-8.0.0793/src/evalfunc.c      2017-07-17 23:20:18.339903503 +0200
--- src/evalfunc.c      2017-07-28 16:38:12.585254452 +0200
***************
*** 2314,2321 ****
  {
      long      n = 0;
      int               ic = FALSE;
  
!     if (argvars[0].v_type == VAR_LIST)
      {
        listitem_T      *li;
        list_T          *l;
--- 2314,2358 ----
  {
      long      n = 0;
      int               ic = FALSE;
+     int               error = FALSE;
  
!     if (argvars[2].v_type != VAR_UNKNOWN)
!       ic = (int)get_tv_number_chk(&argvars[2], &error);
! 
!     if (argvars[0].v_type == VAR_STRING)
!     {
!       char_u *expr = get_tv_string_chk(&argvars[1]);
!       char_u *p = argvars[0].vval.v_string;
!       char_u *next;
! 
!       if (!error && expr != NULL && p != NULL)
!       {
!           if (ic)
!           {
!               size_t len = STRLEN(expr);
! 
!               while (*p != NUL)
!               {
!                   if (MB_STRNICMP(p, expr, len) == 0)
!                   {
!                       ++n;
!                       p += len;
!                   }
!                   else
!                       MB_PTR_ADV(p);
!               }
!           }
!           else
!               while ((next = (char_u *)strstr((char *)p, (char *)expr))
!                                                                      != NULL)
!               {
!                   ++n;
!                   p = next + STRLEN(expr);
!               }
!       }
! 
!     }
!     else if (argvars[0].v_type == VAR_LIST)
      {
        listitem_T      *li;
        list_T          *l;
***************
*** 2326,2334 ****
            li = l->lv_first;
            if (argvars[2].v_type != VAR_UNKNOWN)
            {
-               int error = FALSE;
- 
-               ic = (int)get_tv_number_chk(&argvars[2], &error);
                if (argvars[3].v_type != VAR_UNKNOWN)
                {
                    idx = (long)get_tv_number_chk(&argvars[3], &error);
--- 2363,2368 ----
***************
*** 2356,2366 ****
  
        if ((d = argvars[0].vval.v_dict) != NULL)
        {
-           int error = FALSE;
- 
            if (argvars[2].v_type != VAR_UNKNOWN)
            {
-               ic = (int)get_tv_number_chk(&argvars[2], &error);
                if (argvars[3].v_type != VAR_UNKNOWN)
                    EMSG(_(e_invarg));
            }
--- 2390,2397 ----
*** ../vim-8.0.0793/runtime/doc/eval.txt        2017-07-08 22:37:02.023229159 
+0200
--- runtime/doc/eval.txt        2017-07-28 16:15:39.971030985 +0200
***************
*** 3249,3259 ****
                
  count({comp}, {expr} [, {ic} [, {start}]])                    *count()*
                Return the number of times an item with value {expr} appears
!               in |List| or |Dictionary| {comp}.
                If {start} is given then start with the item with this index.
                {start} can only be used with a |List|.
                When {ic} is given and it's |TRUE| then case is ignored.
  
  
                                                        *cscope_connection()*
  cscope_connection([{num} , {dbpath} [, {prepend}]])
--- 3255,3270 ----
                
  count({comp}, {expr} [, {ic} [, {start}]])                    *count()*
                Return the number of times an item with value {expr} appears
!               in |String|, |List| or |Dictionary| {comp}.
! 
                If {start} is given then start with the item with this index.
                {start} can only be used with a |List|.
+ 
                When {ic} is given and it's |TRUE| then case is ignored.
  
+               When {comp} is a string then the number of not overlapping
+               occurences of {expr} is returned.
+ 
  
                                                        *cscope_connection()*
  cscope_connection([{num} , {dbpath} [, {prepend}]])
*** ../vim-8.0.0793/src/testdir/test_functions.vim      2017-06-05 
18:46:20.497845949 +0200
--- src/testdir/test_functions.vim      2017-07-28 16:26:29.690268473 +0200
***************
*** 635,641 ****
    call assert_equal(0, count(d, 'c', 1))
  
    call assert_fails('call count(d, "a", 0, 1)', 'E474:')
!   call assert_fails('call count("a", "a")', 'E712:')
  endfunc
  
  func Test_changenr()
--- 635,647 ----
    call assert_equal(0, count(d, 'c', 1))
  
    call assert_fails('call count(d, "a", 0, 1)', 'E474:')
! 
!   call assert_equal(0, count("foo", "bar"))
!   call assert_equal(1, count("foo", "oo"))
!   call assert_equal(2, count("foo", "o"))
!   call assert_equal(0, count("foo", "O"))
!   call assert_equal(2, count("foo", "O", 1))
!   call assert_equal(2, count("fooooo", "oo"))
  endfunc
  
  func Test_changenr()
*** ../vim-8.0.0793/src/version.c       2017-07-28 15:55:28.576158675 +0200
--- src/version.c       2017-07-28 16:10:00.981551326 +0200
***************
*** 771,772 ****
--- 771,774 ----
  {   /* Add new patch number below this line */
+ /**/
+     794,
  /**/

-- 
FIRST HEAD:  Oh! quick! get the sword out I want to cut his head off.
THIRD HEAD:  Oh, cut your own head off.
SECOND HEAD: Yes - do us all a favour.
                 "Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD

 /// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net   \\\
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\  an exciting new programming language -- http://www.Zimbu.org        ///
 \\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Raspunde prin e-mail lui