diff options
Diffstat (limited to 'source/ap/vim/patches/7.3.492')
-rw-r--r-- | source/ap/vim/patches/7.3.492 | 718 |
1 files changed, 718 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.3.492 b/source/ap/vim/patches/7.3.492 new file mode 100644 index 000000000..b32b6f68e --- /dev/null +++ b/source/ap/vim/patches/7.3.492 @@ -0,0 +1,718 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.492 +Fcc: outbox +From: Bram Moolenaar <Bram@moolenaar.net> +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.492 +Problem: Can't indent conditions separately from function arguments. +Solution: Add the 'k' flag in 'cino. (Lech Lorens) +Files: runtime/doc/indent.txt, src/misc1.c, src/testdir/test3.in, + src/testdir/test3.ok + + +*** ../vim-7.3.491/runtime/doc/indent.txt 2011-06-26 03:16:58.000000000 +0200 +--- runtime/doc/indent.txt 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 459,464 **** +--- 460,481 ---- + a_short_line(argument, a_short_line(argument, + argument); argument); + < ++ *cino-k* ++ kN When in unclosed parentheses which follow "if", "for" or ++ "while" and N is non-zero, overrides the behaviour defined by ++ "(N": causes the indent to be N characters relative to the outer ++ context (i.e. the line where "if", "for" or "while" is). Has ++ no effect on deeper levels of nesting. Affects flags like "wN" ++ only for the "if", "for" and "while" conditions. If 0, defaults ++ to behaviour defined by the "(N" flag. (default: 0). ++ ++ cino=(0 cino=(0,ks > ++ if (condition1 if (condition1 ++ && condition2) && condition2) ++ action(); action(); ++ function(argument1 function(argument1 ++ && argument2); && argument2); ++ < + *cino-m* + mN When N is non-zero, line up a line starting with a closing + parentheses with the first character of the line with the +*************** +*** 527,540 **** + + *cino-#* + #N When N is non-zero recognize shell/Perl comments, starting with +! '#'. Default N is zero: don't recognizes '#' comments. Note + that lines starting with # will still be seen as preprocessor + lines. + + + The defaults, spelled out in full, are: + cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, +! c3,C0,/0,(2s,us,U0,w0,W0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: + - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. +--- 546,559 ---- + + *cino-#* + #N When N is non-zero recognize shell/Perl comments, starting with +! '#'. Default N is zero: don't recognize '#' comments. Note + that lines starting with # will still be seen as preprocessor + lines. + + + The defaults, spelled out in full, are: + cinoptions=>s,e0,n0,f0,{0,}0,^0,L-1,:s,=s,l0,b0,gs,hs,N0,ps,ts,is,+s, +! c3,C0,/0,(2s,us,U0,w0,W0,k0,m0,j0,J0,)20,*70,#0 + + Vim puts a line in column 1 if: + - It starts with '#' (preprocessor directives), if 'cinkeys' contains '#'. +*** ../vim-7.3.491/src/misc1.c 2012-02-29 13:49:03.000000000 +0100 +--- src/misc1.c 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 5771,5776 **** +--- 5771,5822 ---- + } + + /* ++ * Check whether in "p" there is an "if", "for" or "while" before offset. ++ * Return 0 if there is none. ++ * Otherwise return !0 and update "*poffset" to point to the place where the ++ * string was found. ++ */ ++ static int ++ cin_is_if_for_while_before_offset(line, offset, poffset) ++ char_u *line; ++ size_t offset; ++ int *poffset; ++ { ++ ++ if (offset-- < 2) ++ return 0; ++ while (offset > 2 && vim_iswhite(line[offset])) ++ --offset; ++ ++ offset -= 1; ++ if (!STRNCMP(line + offset, "if", 2)) ++ goto probablyFound; ++ ++ if (offset >= 1) ++ { ++ offset -= 1; ++ if (!STRNCMP(line + offset, "for", 3)) ++ goto probablyFound; ++ ++ if (offset >= 2) ++ { ++ offset -= 2; ++ if (!STRNCMP(line + offset, "while", 5)) ++ goto probablyFound; ++ } ++ } ++ ++ return 0; ++ probablyFound: ++ if (!offset || !vim_isIDc(line[offset - 1])) ++ { ++ *poffset = offset; ++ return 1; ++ } ++ return 0; ++ } ++ ++ /* + * Return TRUE if we are at the end of a do-while. + * do + * nothing; +*************** +*** 6124,6130 **** + + /* + * Find the matching '(', failing if it is in a comment. +! * Return NULL of no match found. + */ + static pos_T * + find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ +--- 6170,6176 ---- + + /* + * Find the matching '(', failing if it is in a comment. +! * Return NULL if no match found. + */ + static pos_T * + find_match_paren(ind_maxparen, ind_maxcomment) /* XXX */ +*************** +*** 6393,6398 **** +--- 6439,6450 ---- + */ + int ind_cpp_namespace = 0; + ++ /* ++ * handle continuation lines containing conditions of if(), for() and ++ * while() ++ */ ++ int ind_if_for_while = 0; ++ + pos_T cur_curpos; + int amount; + int scope_amount; +*************** +*** 6437,6442 **** +--- 6489,6495 ---- + int cont_amount = 0; /* amount for continuation line */ + int original_line_islabel; + int added_to_amount = 0; ++ int is_if_for_while = 0; + + for (options = curbuf->b_p_cino; *options; ) + { +*************** +*** 6509,6514 **** +--- 6562,6568 ---- + case 'l': ind_keep_case_label = n; break; + case '#': ind_hash_comment = n; break; + case 'N': ind_cpp_namespace = n; break; ++ case 'k': ind_if_for_while = n; break; + } + if (*options == ',') + ++options; +*************** +*** 6812,6817 **** +--- 6866,6900 ---- + if (amount == -1) + { + int ignore_paren_col = 0; ++ int is_if_for_while = 0; ++ ++ if (ind_if_for_while) ++ { ++ /* Look for the outermost opening parenthesis on this line ++ * and check whether it belongs to an "if", "for" or "while". */ ++ ++ pos_T cursor_save = curwin->w_cursor; ++ pos_T outermost; ++ char_u *line; ++ int look_col; ++ ++ trypos = &our_paren_pos; ++ do { ++ outermost = *trypos; ++ curwin->w_cursor.lnum = outermost.lnum; ++ curwin->w_cursor.col = outermost.col; ++ ++ trypos = find_match_paren(ind_maxparen, ind_maxcomment); ++ } while (trypos && trypos->lnum == outermost.lnum); ++ ++ curwin->w_cursor = cursor_save; ++ ++ line = ml_get(outermost.lnum); ++ ++ is_if_for_while = ++ cin_is_if_for_while_before_offset(line, outermost.col, ++ &outermost.col); ++ } + + amount = skip_label(our_paren_pos.lnum, &look, ind_maxcomment); + look = skipwhite(look); +*************** +*** 6836,6842 **** + curwin->w_cursor.lnum = save_lnum; + look = ml_get(our_paren_pos.lnum) + look_col; + } +! if (theline[0] == ')' || ind_unclosed == 0 + || (!ind_unclosed_noignore && *look == '(' + && ignore_paren_col == 0)) + { +--- 6919,6925 ---- + curwin->w_cursor.lnum = save_lnum; + look = ml_get(our_paren_pos.lnum) + look_col; + } +! if (theline[0] == ')' || (ind_unclosed == 0 && is_if_for_while == 0) + || (!ind_unclosed_noignore && *look == '(' + && ignore_paren_col == 0)) + { +*************** +*** 6907,6913 **** + { + /* Line up with the start of the matching paren line. */ + } +! else if (ind_unclosed == 0 || (!ind_unclosed_noignore + && *look == '(' && ignore_paren_col == 0)) + { + if (cur_amount != MAXCOL) +--- 6990,6997 ---- + { + /* Line up with the start of the matching paren line. */ + } +! else if ((ind_unclosed == 0 && is_if_for_while == 0) +! || (!ind_unclosed_noignore + && *look == '(' && ignore_paren_col == 0)) + { + if (cur_amount != MAXCOL) +*************** +*** 6943,6949 **** + if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) + amount += ind_unclosed2; + else +! amount += ind_unclosed; + } + /* + * For a line starting with ')' use the minimum of the two +--- 7027,7038 ---- + if (find_match_paren(ind_maxparen, ind_maxcomment) != NULL) + amount += ind_unclosed2; + else +! { +! if (is_if_for_while) +! amount += ind_if_for_while; +! else +! amount += ind_unclosed; +! } + } + /* + * For a line starting with ')' use the minimum of the two +*** ../vim-7.3.491/src/testdir/test3.in 2011-12-14 20:21:29.000000000 +0100 +--- src/testdir/test3.in 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 1574,1579 **** +--- 1574,1793 ---- + } + + STARTTEST ++ :set cino=k2s,(0 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(s ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(s,U1 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ STARTTEST ++ :set cino=k2s,(0,W4 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ ++ a_long_line( ++ argument, ++ argument); ++ a_short_line(argument, ++ argument); ++ } ++ ++ STARTTEST ++ :set cino=k2s,u2 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ } ++ ++ STARTTEST ++ :set cino=k2s,(0,w1 ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ STARTTEST ++ :set cino=k2,(s ++ 2kdd3j=][ ++ ENDTEST ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ ++ STARTTEST + :set cino=N-s + /^NAMESPACESTART + =/^NAMESPACEEND +*** ../vim-7.3.491/src/testdir/test3.ok 2011-12-14 20:21:29.000000000 +0100 +--- src/testdir/test3.ok 2012-04-05 17:12:14.000000000 +0200 +*************** +*** 1411,1416 **** +--- 1411,1602 ---- + } + + ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ c = c1 && ++ ( ++ c2 || ++ c3 ++ ) && c4; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ ++ a_long_line( ++ argument, ++ argument); ++ a_short_line(argument, ++ argument); ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ if (c123456789 ++ && (c22345 ++ || c3)) ++ printf("foo\n"); ++ ++ if ( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ func( c1 ++ && ( c2 ++ || c3)) ++ foo; ++ } ++ ++ ++ void func(void) ++ { ++ if (condition1 ++ && condition2) ++ action(); ++ function(argument1 ++ && argument2); ++ ++ if (c1 && (c2 || ++ c3)) ++ foo; ++ if (c1 && ++ (c2 || c3)) ++ { ++ } ++ } ++ ++ + NAMESPACESTART + /* valid namespaces with normal indent */ + namespace +*** ../vim-7.3.491/src/version.c 2012-04-05 16:56:38.000000000 +0200 +--- src/version.c 2012-04-05 17:14:18.000000000 +0200 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 492, + /**/ + +-- +You were lucky to have a LAKE! There were a hundred and sixty of +us living in a small shoebox in the middle of the road. + + /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 /// |