| To: vim_dev@googlegroups.com |
| Subject: Patch 7.3.178 |
| 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.178 |
| Problem: C-indent doesn't handle code right after { correctly. |
| Solution: Fix detecting unterminated line. (Lech Lorens) |
| Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok |
| |
| |
| |
| |
| |
| *** 4983,4989 **** |
| } |
| |
| /* |
| ! * Return TRUE if there there is no code at *s. White space and comments are |
| * not considered code. |
| */ |
| static int |
| --- 4983,4989 ---- |
| } |
| |
| /* |
| ! * Return TRUE if there is no code at *s. White space and comments are |
| * not considered code. |
| */ |
| static int |
| |
| *** 5458,5465 **** |
| } |
| |
| /* |
| ! * Recognize a line that starts with '{' or '}', or ends with ';', '{' or '}'. |
| * Don't consider "} else" a terminated line. |
| * Return the character terminating the line (ending char's have precedence if |
| * both apply in order to determine initializations). |
| */ |
| --- 5458,5468 ---- |
| } |
| |
| /* |
| ! * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or |
| ! * '}'. |
| * Don't consider "} else" a terminated line. |
| + * Don't consider a line where there are unmatched opening braces before '}', |
| + * ';' or ',' a terminated line. |
| * Return the character terminating the line (ending char's have precedence if |
| * both apply in order to determine initializations). |
| */ |
| |
| *** 5470,5475 **** |
| --- 5473,5479 ---- |
| int incl_comma; /* recognize a trailing comma */ |
| { |
| char_u found_start = 0; |
| + unsigned n_open = 0; |
| |
| s = cin_skipcomment(s); |
| |
| |
| *** 5480,5489 **** |
| { |
| /* skip over comments, "" strings and 'c'haracters */ |
| s = skip_string(cin_skipcomment(s)); |
| ! if ((*s == ';' || (incl_open && *s == '{') || *s == '}' |
| ! || (incl_comma && *s == ',')) |
| && cin_nocode(s + 1)) |
| return *s; |
| |
| if (*s) |
| s++; |
| --- 5484,5502 ---- |
| { |
| /* skip over comments, "" strings and 'c'haracters */ |
| s = skip_string(cin_skipcomment(s)); |
| ! if (*s == '}' && n_open > 0) |
| ! --n_open; |
| ! if (n_open == 0 |
| ! && (*s == ';' || *s == '}' || (incl_comma && *s == ',')) |
| && cin_nocode(s + 1)) |
| return *s; |
| + else if (*s == '{') |
| + { |
| + if (incl_open && cin_nocode(s + 1)) |
| + return *s; |
| + else |
| + ++n_open; |
| + } |
| |
| if (*s) |
| s++; |
| |
| |
| |
| *** 1344,1349 **** |
| --- 1344,1365 ---- |
| } |
| |
| STARTTEST |
| + :set cino& |
| + 2kdd=][ |
| + ENDTEST |
| + |
| + void func(void) |
| + { |
| + if(x==y) |
| + if(y==z) |
| + foo=1; |
| + else { bar=1; |
| + baz=2; |
| + } |
| + printf("Foo!\n"); |
| + } |
| + |
| + STARTTEST |
| :g/^STARTTEST/.,/^ENDTEST/d |
| :1;/start of AUTO/,$wq! test.out |
| ENDTEST |
| |
| |
| |
| *** 1204,1206 **** |
| --- 1204,1218 ---- |
| { |
| } |
| |
| + |
| + void func(void) |
| + { |
| + if(x==y) |
| + if(y==z) |
| + foo=1; |
| + else { bar=1; |
| + baz=2; |
| + } |
| + printf("Foo!\n"); |
| + } |
| + |
| |
| |
| |
| *** 716,717 **** |
| --- 716,719 ---- |
| { /* Add new patch number below this line */ |
| + /**/ |
| + 178, |
| /**/ |
| |
| -- |
| hundred-and-one symptoms of being an internet addict: |
| 69. Yahoo welcomes you with your own start page |
| |
| /// 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 /// |