Patch 8.0.0572
Problem:    Building the command table requires Perl.
Solution:   Use a Vim script solution. (Dominique Pelle, closes #1641)
Files:      src/Makefile, src/create_cmdidxs.pl, src/create_cmdidxs.vim,
            src/ex_cmdidxs.h, src/ex_docmd.c, Filelist


*** ../vim-8.0.0571/src/Makefile        2017-04-20 20:19:57.876326844 +0200
--- src/Makefile        2017-04-20 21:43:52.848100156 +0200
***************
*** 1885,1899 ****
        -rm -rf autom4te.cache
        -rm -f auto/config.status auto/config.cache
  
! # Run Perl to generate the Ex command lookup table.  This only needs to be run
! # when a command name has been added or changed.
! # NOTE: Only works when perl and vim executables are available
  cmdidxs: ex_cmds.h
!       if test X`perl -e "print 123"` = "X123"; then \
!          vim ex_docmd.c -c 
'/Beginning.*create_cmdidxs/,/End.*create_cmdidxs/! perl create_cmdidxs.pl' -c 
wq; \
!       else \
!          echo Cannot run Perl; \
!       fi
  
  # Re-execute this Makefile to include the new auto/config.mk produced by
  # configure Only used when typing "make" with a fresh auto/config.mk.
--- 1885,1896 ----
        -rm -rf autom4te.cache
        -rm -f auto/config.status auto/config.cache
  
! # Run vim script to generate the Ex command lookup table.
! # This only needs to be run when a command name has been added or changed.
! # If this fails because you don't have Vim yet, first build and install Vim
! # without changes.
  cmdidxs: ex_cmds.h
!       vim -u NONE -i NONE -X -S create_cmdidxs.vim
  
  # Re-execute this Makefile to include the new auto/config.mk produced by
  # configure Only used when typing "make" with a fresh auto/config.mk.
*** ../vim-8.0.0571/src/create_cmdidxs.pl       2017-03-26 21:46:23.349430081 
+0200
--- src/create_cmdidxs.pl       1970-01-01 01:00:00.000000000 +0100
***************
*** 1,75 ****
- #!/usr/bin/perl -w
- #
- # This script generates the tables cmdidxs1[] and cmdidxs2[][] which,
- # given a Ex command, determine the first value to probe to find
- # a matching command in cmdnames[] based on the first character
- # and the first 2 characters of the command.
- # This is used to speed up lookup in cmdnames[].
- #
- # Script should be run every time new Ex commands are added in Vim,
- # from the src/vim directory, since it reads commands from "ex_cmds.h".
- 
- use strict;
- 
- # Find the list of Vim commands from cmdnames[] table in ex_cmds.h
- my @cmds;
- my $skipped_cmds;
- open(IN, "< ex_cmds.h") or die "can't open ex_cmds.h: $!\n";
- while (<IN>) {
-   if (/^EX\(CMD_\S*,\s*"([a-z][^"]*)"/) {
-     push @cmds, $1;
-   } elsif (/^EX\(CMD_/) {
-     ++$skipped_cmds;
-   }
- }
- 
- my %cmdidxs1;
- my %cmdidxs2;
- 
- for (my $i = $#cmds; $i >= 0; --$i) {
-   my $cmd = $cmds[$i];
-   my $c1 = substr($cmd, 0, 1); # First character of command.
- 
-   $cmdidxs1{$c1} = $i;
- 
-   if (length($cmd) > 1) {
-     my $c2 = substr($cmd, 1, 1); # Second character of command.
-     $cmdidxs2{$c1}{$c2} = $i if (('a' lt $c2) and ($c2 lt 'z'));
-   }
- }
- 
- print "/* Beginning of automatically generated code by create_cmdidxs.pl\n",
-       " *\n",
-       " * Table giving the index of the first command in cmdnames[] to 
lookup\n",
-       " * based on the first letter of a command.\n",
-       " */\n",
-       "static const unsigned short cmdidxs1[26] =\n{\n",
-       join(",\n", map("  /* $_ */ $cmdidxs1{$_}", ('a' .. 'z'))),
-       "\n};\n",
-       "\n",
-       "/*\n",
-       " * Table giving the index of the first command in cmdnames[] to 
lookup\n",
-       " * based on the first 2 letters of a command.\n",
-       " * Values in cmdidxs2[c1][c2] are relative to cmdidxs1[c1] so that 
they\n",
-       " * fit in a byte.\n",
-       " */\n",
-       "static const unsigned char cmdidxs2[26][26] =\n",
-       "{ /*         a   b   c   d   e   f   g   h   i   j   k   l   m   n   o 
  p   q   r   s   t   u   v   w   x   y   z */\n";
- for my $c1 ('a' .. 'z') {
-   print "  /* $c1 */ {";
-   for my $c2 ('a' .. 'z') {
-     if (exists $cmdidxs2{$c1}{$c2}) {
-       printf "%3d,", $cmdidxs2{$c1}{$c2} - $cmdidxs1{$c1};
-     } else {
-       printf "  0,";
-     }
-   }
-   print " }";
-   print "," unless ($c1 eq 'z');
-   print "\n";
- }
- print "};\n",
-       "\n",
-       "static const int command_count = ", scalar(@cmds) + $skipped_cmds, 
";\n",
-       "\n",
-       "/* End of automatically generated code by create_cmdidxs.pl */\n";
--- 0 ----
*** ../vim-8.0.0571/src/create_cmdidxs.vim      2017-04-20 21:53:05.012503522 
+0200
--- src/create_cmdidxs.vim      2017-04-20 21:41:04.777180180 +0200
***************
*** 0 ****
--- 1,81 ----
+ " This script generates the tables cmdidxs1[] and cmdidxs2[][] which,
+ " given a Ex command, determine the first value to probe to find
+ " a matching command in cmdnames[] based on the first character
+ " and the first 2 characters of the command.
+ " This is used to speed up lookup in cmdnames[].
+ "
+ " Script should be run every time new Ex commands are added in Vim,
+ " from the src/vim directory, since it reads commands from "ex_cmds.h".
+ 
+ let cmds = []
+ let skipped_cmds = 0
+ 
+ for line in readfile('ex_cmds.h')
+   if line =~ '^EX(CMD_'
+     let m = matchlist(line, '^EX(CMD_\S*,\s*"\([a-z][^"]*\)"')
+     if len(m) >= 2
+       let cmds += [ m[1] ]
+     else
+       let skipped_cmds += 1
+     endif
+   endif
+ endfor
+ 
+ let cmdidxs1 = {}
+ let cmdidxs2 = {}
+ 
+ for i in range(len(cmds) - 1, 0, -1)
+   let cmd = cmds[i]
+   let c1 = cmd[0] " First character of command
+   let c2 = cmd[1] " Second character of command (if any)
+ 
+   let cmdidxs1{c1} = i
+   if c2 >= 'a' && c2 <= 'z'
+     let cmdidxs2{c1}{c2} = i
+   endif
+ endfor
+ 
+ let output =  [ '/* Automatically generated code by create_cmdidxs.vim' ]
+ let output += [ ' *' ]
+ let output += [ ' * Table giving the index of the first command in cmdnames[] 
to lookup' ]
+ let output += [ ' * based on the first letter of a command.' ]
+ let output += [ ' */' ]
+ let output += [ 'static const unsigned short cmdidxs1[26] =' ]
+ let output += [ '{' ]
+ 
+ let a_to_z = map(range(char2nr('a'), char2nr('z')), 'nr2char(v:val)')
+ for c1 in a_to_z
+   let line = '  /* ' . c1 . ' */ ' . cmdidxs1{c1} . ((c1 == 'z') ? '' : ',')
+   let output += [ line ]
+ endfor
+ let output += [ '};' ]
+ let output += [ '' ]
+ let output += [ '/*' ]
+ let output += [ ' * Table giving the index of the first command in cmdnames[] 
to lookup' ]
+ let output += [ ' * based on the first 2 letters of a command.' ]
+ let output += [ ' * Values in cmdidxs2[c1][c2] are relative to cmdidxs1[c1] 
so that they' ]
+ let output += [ ' * fit in a byte.' ]
+ let output += [ ' */' ]
+ let output += [ 'static const unsigned char cmdidxs2[26][26] =' ]
+ let output += [ '{ /*         a   b   c   d   e   f   g   h   i   j   k   l   
m   n   o   p   q   r   s   t   u   v   w   x   y   z */' ]
+ 
+ for c1 in a_to_z
+   let line = '  /* ' . c1 . ' */ {'
+   for c2 in a_to_z
+     if exists('cmdidxs2{c1}{c2}')
+       let line .= printf('%3d', cmdidxs2{c1}{c2} - cmdidxs1{c1})
+     else
+       let line .= '  0'
+     endif
+     let line .= (c2 == 'z') ? '' : ','
+   endfor
+   let line .= ' }' . ((c1 == 'z') ? '' : ',')
+   let output += [ line ]
+ endfor
+ 
+ let output += [ '};' ]
+ let output += [ '' ]
+ let output += [ 'static const int command_count = ' . (len(cmds) + 
skipped_cmds) . ';' ]
+ 
+ call writefile(output, "ex_cmdidxs.h")
+ quit
*** ../vim-8.0.0571/src/ex_cmdidxs.h    2017-04-20 21:53:05.020503470 +0200
--- src/ex_cmdidxs.h    2017-04-20 21:43:59.844054518 +0200
***************
*** 0 ****
--- 1,72 ----
+ /* Automatically generated code by create_cmdidxs.vim
+  *
+  * Table giving the index of the first command in cmdnames[] to lookup
+  * based on the first letter of a command.
+  */
+ static const unsigned short cmdidxs1[26] =
+ {
+   /* a */ 0,
+   /* b */ 19,
+   /* c */ 42,
+   /* d */ 103,
+   /* e */ 125,
+   /* f */ 145,
+   /* g */ 161,
+   /* h */ 167,
+   /* i */ 176,
+   /* j */ 194,
+   /* k */ 196,
+   /* l */ 201,
+   /* m */ 259,
+   /* n */ 277,
+   /* o */ 297,
+   /* p */ 309,
+   /* q */ 348,
+   /* r */ 351,
+   /* s */ 370,
+   /* t */ 437,
+   /* u */ 472,
+   /* v */ 483,
+   /* w */ 501,
+   /* x */ 516,
+   /* y */ 525,
+   /* z */ 526
+ };
+ 
+ /*
+  * Table giving the index of the first command in cmdnames[] to lookup
+  * based on the first 2 letters of a command.
+  * Values in cmdidxs2[c1][c2] are relative to cmdidxs1[c1] so that they
+  * fit in a byte.
+  */
+ static const unsigned char cmdidxs2[26][26] =
+ { /*         a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   
q   r   s   t   u   v   w   x   y   z */
+   /* a */ {  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  5,  6,  0,  0,  
0,  7, 15,  0, 16,  0,  0,  0,  0,  0 },
+   /* b */ {  2,  0,  0,  4,  5,  7,  0,  0,  0,  0,  0,  8,  9, 10, 11, 12,  
0, 13,  0,  0,  0,  0, 22,  0,  0,  0 },
+   /* c */ {  3, 10, 12, 14, 16, 18, 21,  0,  0,  0,  0, 29, 33, 36, 42, 51, 
53, 54, 55,  0, 57,  0, 60,  0,  0,  0 },
+   /* d */ {  0,  0,  0,  0,  0,  0,  0,  0,  6, 15,  0, 16,  0,  0, 17,  0,  
0, 19, 20,  0,  0,  0,  0,  0,  0,  0 },
+   /* e */ {  1,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  7,  9, 10,  0,  0,  
0,  0,  0,  0,  0,  0,  0, 16,  0,  0 },
+   /* f */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  
0,  0,  0,  0, 15,  0,  0,  0,  0,  0 },
+   /* g */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  
0,  2,  0,  0,  4,  5,  0,  0,  0,  0 },
+   /* h */ {  5,  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
+   /* i */ {  1,  0,  0,  0,  0,  3,  0,  0,  0,  4,  0,  5,  6,  0,  0,  0,  
0,  0, 13,  0, 15,  0,  0,  0,  0,  0 },
+   /* j */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  1,  0,  0,  0,  0,  0 },
+   /* k */ {  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
+   /* l */ {  3,  9, 11, 15, 16, 20, 23, 28,  0,  0,  0, 30, 33, 36, 40, 46,  
0, 48, 57, 49, 50, 54, 56,  0,  0,  0 },
+   /* m */ {  1,  0,  0,  0,  7,  0,  0,  0,  0,  0, 10,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0, 16 },
+   /* n */ {  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  8, 10,  0,  
0,  0,  0,  0, 17,  0,  0,  0,  0,  0 },
+   /* o */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  5,  0,  0,  
0,  0,  0,  0,  9,  0, 11,  0,  0,  0 },
+   /* p */ {  1,  0,  3,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,  9,  
0,  0, 16, 17, 26,  0, 27,  0, 28,  0 },
+   /* q */ {  2,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
+   /* r */ {  0,  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0, 13, 18,  0,  0,  0,  0 },
+   /* s */ {  2,  6, 15,  0, 18, 22,  0, 24, 25,  0,  0, 28, 30, 34, 38, 40,  
0, 48,  0, 49,  0, 61, 62,  0, 63,  0 },
+   /* t */ {  2,  0, 19,  0, 22, 23,  0, 24,  0, 25,  0, 26, 27, 28, 29, 30,  
0, 31, 33,  0, 34,  0,  0,  0,  0,  0 },
+   /* u */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
+   /* v */ {  0,  0,  0,  0,  1,  0,  0,  0,  4,  0,  0,  0,  9, 12,  0,  0,  
0,  0, 15,  0, 16,  0,  0,  0,  0,  0 },
+   /* w */ {  2,  0,  0,  0,  0,  0,  0,  3,  4,  0,  0,  0,  0,  8,  0,  9, 
10,  0, 12,  0, 13, 14,  0,  0,  0,  0 },
+   /* x */ {  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  5,  0,  0,  
0,  0,  0,  0,  7,  0,  0,  0,  0,  0 },
+   /* y */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0 },
+   /* z */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0 }
+ };
+ 
+ static const int command_count = 539;
*** ../vim-8.0.0571/src/ex_docmd.c      2017-03-27 23:02:03.392337316 +0200
--- src/ex_docmd.c      2017-04-20 21:41:04.781180154 +0200
***************
*** 494,574 ****
   */
  #define DO_DECLARE_EXCMD
  #include "ex_cmds.h"
! 
! /* Beginning of automatically generated code by create_cmdidxs.pl
!  *
!  * Table giving the index of the first command in cmdnames[] to lookup
!  * based on the first letter of a command.
!  */
! static const unsigned short cmdidxs1[26] =
! {
!   /* a */ 0,
!   /* b */ 19,
!   /* c */ 42,
!   /* d */ 103,
!   /* e */ 125,
!   /* f */ 145,
!   /* g */ 161,
!   /* h */ 167,
!   /* i */ 176,
!   /* j */ 194,
!   /* k */ 196,
!   /* l */ 201,
!   /* m */ 259,
!   /* n */ 277,
!   /* o */ 297,
!   /* p */ 309,
!   /* q */ 348,
!   /* r */ 351,
!   /* s */ 370,
!   /* t */ 437,
!   /* u */ 472,
!   /* v */ 483,
!   /* w */ 501,
!   /* x */ 516,
!   /* y */ 525,
!   /* z */ 526
! };
! 
! /*
!  * Table giving the index of the first command in cmdnames[] to lookup
!  * based on the first 2 letters of a command.
!  * Values in cmdidxs2[c1][c2] are relative to cmdidxs1[c1] so that they
!  * fit in a byte.
!  */
! static const unsigned char cmdidxs2[26][26] =
! { /*         a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   
q   r   s   t   u   v   w   x   y   z */
!   /* a */ {  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  4,  5,  6,  0,  0,  
0,  7, 15,  0, 16,  0,  0,  0,  0,  0, },
!   /* b */ {  0,  0,  0,  4,  5,  7,  0,  0,  0,  0,  0,  8,  9, 10, 11, 12,  
0, 13,  0,  0,  0,  0, 22,  0,  0,  0, },
!   /* c */ {  0, 10, 12, 14, 16, 18, 21,  0,  0,  0,  0, 29, 33, 36, 42, 51, 
53, 54, 55,  0, 57,  0, 60,  0,  0,  0, },
!   /* d */ {  0,  0,  0,  0,  0,  0,  0,  0,  6, 15,  0, 16,  0,  0, 17,  0,  
0, 19, 20,  0,  0,  0,  0,  0,  0,  0, },
!   /* e */ {  0,  0,  2,  0,  0,  0,  0,  0,  0,  0,  0,  7,  9, 10,  0,  0,  
0,  0,  0,  0,  0,  0,  0, 16,  0,  0, },
!   /* f */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  9,  0,  
0,  0,  0,  0, 15,  0,  0,  0,  0,  0, },
!   /* g */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  0,  
0,  2,  0,  0,  4,  5,  0,  0,  0,  0, },
!   /* h */ {  0,  0,  0,  0,  0,  0,  0,  0,  6,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, },
!   /* i */ {  0,  0,  0,  0,  0,  3,  0,  0,  0,  4,  0,  5,  6,  0,  0,  0,  
0,  0, 13,  0, 15,  0,  0,  0,  0,  0, },
!   /* j */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  1,  0,  0,  0,  0,  0, },
!   /* k */ {  0,  0,  0,  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, },
!   /* l */ {  0,  9, 11, 15, 16, 20, 23, 28,  0,  0,  0, 30, 33, 36, 40, 46,  
0, 48, 57, 49, 50, 54, 56,  0,  0,  0, },
!   /* m */ {  0,  0,  0,  0,  7,  0,  0,  0,  0,  0, 10,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, },
!   /* n */ {  0,  1,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  5,  8, 10,  0,  
0,  0,  0,  0, 17,  0,  0,  0,  0,  0, },
!   /* o */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  1,  2,  5,  0,  0,  
0,  0,  0,  0,  9,  0, 11,  0,  0,  0, },
!   /* p */ {  0,  0,  3,  0,  4,  0,  0,  0,  0,  0,  0,  0,  0,  0,  7,  9,  
0,  0, 16, 17, 26,  0, 27,  0, 28,  0, },
!   /* q */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, },
!   /* r */ {  0,  0,  0,  0,  0,  0,  0,  0, 11,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0, 13, 18,  0,  0,  0,  0, },
!   /* s */ {  0,  6, 15,  0, 18, 22,  0, 24, 25,  0,  0, 28, 30, 34, 38, 40,  
0, 48,  0, 49,  0, 61, 62,  0, 63,  0, },
!   /* t */ {  0,  0, 19,  0, 22, 23,  0, 24,  0, 25,  0, 26, 27, 28, 29, 30,  
0, 31, 33,  0, 34,  0,  0,  0,  0,  0, },
!   /* u */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0, 10,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, },
!   /* v */ {  0,  0,  0,  0,  1,  0,  0,  0,  4,  0,  0,  0,  9, 12,  0,  0,  
0,  0, 15,  0, 16,  0,  0,  0,  0,  0, },
!   /* w */ {  0,  0,  0,  0,  0,  0,  0,  3,  4,  0,  0,  0,  0,  8,  0,  9, 
10,  0, 12,  0, 13, 14,  0,  0,  0,  0, },
!   /* x */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  2,  5,  0,  0,  
0,  0,  0,  0,  7,  0,  0,  0,  0,  0, },
!   /* y */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, },
!   /* z */ {  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  
0,  0,  0,  0,  0,  0,  0,  0,  0,  0, }
! };
! 
! static const int command_count = 539;
! 
! /* End of automatically generated code by create_cmdidxs.pl */
  
  static char_u dollar_command[2] = {'$', 0};
  
--- 494,500 ----
   */
  #define DO_DECLARE_EXCMD
  #include "ex_cmds.h"
! #include "ex_cmdidxs.h"
  
  static char_u dollar_command[2] = {'$', 0};
  
***************
*** 3046,3052 ****
--- 2972,2981 ----
  
  doend:
      if (curwin->w_cursor.lnum == 0)   /* can happen with zero line number */
+     {
        curwin->w_cursor.lnum = 1;
+       curwin->w_cursor.col = 0;
+     }
  
      if (errormsg != NULL && *errormsg != NUL && !did_emsg)
      {
*** ../vim-8.0.0571/Filelist    2017-04-20 20:19:57.880326819 +0200
--- Filelist    2017-04-20 21:47:41.202611421 +0200
***************
*** 24,29 ****
--- 24,30 ----
                src/edit.c \
                src/eval.c \
                src/evalfunc.c \
+               src/ex_cmdidxs.h \
                src/ex_cmds.c \
                src/ex_cmds.h \
                src/ex_cmds2.c \
***************
*** 215,221 ****
                src/config.mk.in \
                src/configure \
                src/configure.ac \
!               src/create_cmdidxs.pl \
                src/gui_at_fs.c \
                src/gui_at_sb.c \
                src/gui_at_sb.h \
--- 216,222 ----
                src/config.mk.in \
                src/configure \
                src/configure.ac \
!               src/create_cmdidxs.vim \
                src/gui_at_fs.c \
                src/gui_at_sb.c \
                src/gui_at_sb.h \
*** ../vim-8.0.0571/src/version.c       2017-04-20 21:12:26.592211591 +0200
--- src/version.c       2017-04-20 21:40:15.597494696 +0200
***************
*** 766,767 ****
--- 766,769 ----
  {   /* Add new patch number below this line */
+ /**/
+     572,
  /**/

-- 
A poem:                read aloud:

<> !*''#               Waka waka bang splat tick tick hash,
^"`$$-                 Caret quote back-tick dollar dollar dash,
!*=@$_                 Bang splat equal at dollar under-score,
%*<> ~#4               Percent splat waka waka tilde number four,
&[]../                 Ampersand bracket bracket dot dot slash,
|{,,SYSTEM HALTED      Vertical-bar curly-bracket comma comma CRASH.

Fred Bremmer and Steve Kroese (Calvin College & Seminary of Grand Rapids, MI.)

 /// 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