home *** CD-ROM | disk | FTP | other *** search
- To: vim_dev@googlegroups.com
- Subject: Patch 7.3.195
- 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.195
- Problem: "} else" causes following lines to be indented too much. (Rouben
- Rostamian)
- Solution: Better detection for the "else". (Lech Lorens)
- Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok
-
-
- *** ../vim-7.3.194/src/misc1.c 2011-05-10 16:41:13.000000000 +0200
- --- src/misc1.c 2011-05-19 16:30:28.000000000 +0200
- ***************
- *** 5482,5489 ****
- * 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).
- */
- --- 5482,5489 ----
- * Recognize a line that starts with '{' or '}', or ends with ';', ',', '{' or
- * '}'.
- * Don't consider "} else" a terminated line.
- ! * If a line begins with an "else", only consider it terminated if no unmatched
- ! * opening braces follow (handle "else { foo();" correctly).
- * Return the character terminating the line (ending char's have precedence if
- * both apply in order to determine initializations).
- */
- ***************
- *** 5493,5513 ****
- int incl_open; /* include '{' at the end as terminator */
- int incl_comma; /* recognize a trailing comma */
- {
- ! char_u found_start = 0;
- ! unsigned n_open = 0;
-
- s = cin_skipcomment(s);
-
- if (*s == '{' || (*s == '}' && !cin_iselse(s)))
- found_start = *s;
-
- while (*s)
- {
- /* 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;
- --- 5493,5517 ----
- int incl_open; /* include '{' at the end as terminator */
- int incl_comma; /* recognize a trailing comma */
- {
- ! char_u found_start = 0;
- ! unsigned n_open = 0;
- ! int is_else = FALSE;
-
- s = cin_skipcomment(s);
-
- if (*s == '{' || (*s == '}' && !cin_iselse(s)))
- found_start = *s;
-
- + if (!found_start)
- + is_else = cin_iselse(s);
- +
- while (*s)
- {
- /* skip over comments, "" strings and 'c'haracters */
- s = skip_string(cin_skipcomment(s));
- if (*s == '}' && n_open > 0)
- --n_open;
- ! if ((!is_else || n_open == 0)
- && (*s == ';' || *s == '}' || (incl_comma && *s == ','))
- && cin_nocode(s + 1))
- return *s;
- *** ../vim-7.3.194/src/testdir/test3.in 2011-05-10 13:38:23.000000000 +0200
- --- src/testdir/test3.in 2011-05-19 16:29:01.000000000 +0200
- ***************
- *** 1345,1351 ****
-
- STARTTEST
- :set cino&
- ! 2kdd=][
- ENDTEST
-
- void func(void)
- --- 1345,1351 ----
-
- STARTTEST
- :set cino&
- ! 2kdd=4][
- ENDTEST
-
- void func(void)
- ***************
- *** 1359,1364 ****
- --- 1359,1392 ----
- printf("Foo!\n");
- }
-
- + void func1(void)
- + {
- + char* tab[] = {"foo", "bar",
- + "baz", "quux",
- + "this line used", "to be indented incorrectly"};
- + foo();
- + }
- +
- + void func2(void)
- + {
- + int tab[] =
- + {1, 2,
- + 3, 4,
- + 5, 6};
- +
- + printf("This line used to be indented incorrectly.\n");
- + }
- +
- + void func3(void)
- + {
- + int tab[] = {
- + 1, 2,
- + 3, 4,
- + 5, 6};
- +
- + printf("Don't you dare indent this line incorrectly!\n);
- + }
- +
- STARTTEST
- :set cino&
- 2kdd=][
- *** ../vim-7.3.194/src/testdir/test3.ok 2011-05-10 13:38:23.000000000 +0200
- --- src/testdir/test3.ok 2011-05-19 16:29:01.000000000 +0200
- ***************
- *** 1216,1221 ****
- --- 1216,1249 ----
- printf("Foo!\n");
- }
-
- + void func1(void)
- + {
- + char* tab[] = {"foo", "bar",
- + "baz", "quux",
- + "this line used", "to be indented incorrectly"};
- + foo();
- + }
- +
- + void func2(void)
- + {
- + int tab[] =
- + {1, 2,
- + 3, 4,
- + 5, 6};
- +
- + printf("This line used to be indented incorrectly.\n");
- + }
- +
- + void func3(void)
- + {
- + int tab[] = {
- + 1, 2,
- + 3, 4,
- + 5, 6};
- +
- + printf("Don't you dare indent this line incorrectly!\n);
- + }
- +
-
- void func(void)
- {
- *** ../vim-7.3.194/src/version.c 2011-05-19 14:59:07.000000000 +0200
- --- src/version.c 2011-05-19 16:34:16.000000000 +0200
- ***************
- *** 711,712 ****
- --- 711,714 ----
- { /* Add new patch number below this line */
- + /**/
- + 195,
- /**/
-
- --
- I AM THANKFUL...
- ...for the taxes that I pay because it means that I am employed.
-
- /// 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 ///
-