diff --git a/7.3.363 b/7.3.363 new file mode 100644 index 0000000..10ab548 --- /dev/null +++ b/7.3.363 @@ -0,0 +1,110 @@ +To: vim_dev@googlegroups.com +Subject: Patch 7.3.363 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.3.363 +Problem: C indenting is wrong after #endif followed by a semicolon. +Solution: Add special handling for a semicolon in a line by itself. (Lech + Lorens) +Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok + + +*** ../vim-7.3.362/src/misc1.c 2011-11-30 13:03:24.000000000 +0100 +--- src/misc1.c 2011-11-30 17:10:59.000000000 +0100 +*************** +*** 8143,8148 **** +--- 8143,8171 ---- + break; + + /* ++ * Find a line only has a semicolon that belongs to a previous ++ * line ending in '}', e.g. before an #endif. Don't increase ++ * indent then. ++ */ ++ if (*(look = skipwhite(l)) == ';' && cin_nocode(look + 1)) ++ { ++ pos_T curpos_save = curwin->w_cursor; ++ ++ while (curwin->w_cursor.lnum > 1) ++ { ++ look = ml_get(--curwin->w_cursor.lnum); ++ if (!(cin_nocode(look) || cin_ispreproc_cont( ++ &look, &curwin->w_cursor.lnum))) ++ break; ++ } ++ if (curwin->w_cursor.lnum > 0 ++ && cin_ends_in(look, (char_u *)"}", NULL)) ++ break; ++ ++ curwin->w_cursor = curpos_save; ++ } ++ ++ /* + * If the PREVIOUS line is a function declaration, the current + * line (and the ones that follow) needs to be indented as + * parameters. +*** ../vim-7.3.362/src/testdir/test3.in 2011-10-04 18:03:43.000000000 +0200 +--- src/testdir/test3.in 2011-11-30 17:05:20.000000000 +0100 +*************** +*** 1454,1459 **** +--- 1454,1469 ---- + printf("This line used to be indented incorrectly.\n"); + } + ++ int foo[] ++ #ifdef BAR ++ ++ = { 1, 2, 3, ++ 4, 5, 6 } ++ ++ #endif ++ ; ++ int baz; ++ + void func3(void) + { + int tab[] = { +*** ../vim-7.3.362/src/testdir/test3.ok 2011-10-04 18:03:43.000000000 +0200 +--- src/testdir/test3.ok 2011-11-30 17:05:20.000000000 +0100 +*************** +*** 1307,1312 **** +--- 1307,1322 ---- + printf("This line used to be indented incorrectly.\n"); + } + ++ int foo[] ++ #ifdef BAR ++ ++ = { 1, 2, 3, ++ 4, 5, 6 } ++ ++ #endif ++ ; ++ int baz; ++ + void func3(void) + { + int tab[] = { +*** ../vim-7.3.362/src/version.c 2011-11-30 17:01:55.000000000 +0100 +--- src/version.c 2011-11-30 17:06:57.000000000 +0100 +*************** +*** 716,717 **** +--- 716,719 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 363, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +220. Your wife asks for sex and you tell her where to find you on IRC. + + /// 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 ///