From: Bram Moolenaar Date: Wed, 25 May 2011 11:34:04 +0000 (+0200) Subject: updated for version 7.3.201 X-Git-Tag: v7.3.201 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=334adf0ae530a70454d9c01b8aeb717f324d7c97;p=vim updated for version 7.3.201 Problem: "} else" still causes following lines to be indented too much. Solution: Better detection for the "else" block. (Lech Lorens) --- diff --git a/src/misc1.c b/src/misc1.c index 0959e2a24..0fc02ba99 100644 --- a/src/misc1.c +++ b/src/misc1.c @@ -7541,17 +7541,25 @@ get_c_indent() /* * When searching for a terminated line, don't use the - * one between the "if" and the "else". + * one between the "if" and the matching "else". * Need to use the scope of this "else". XXX * If whilelevel != 0 continue looking for a "do {". */ - if (cin_iselse(l) - && whilelevel == 0 - && ((trypos = find_start_brace(ind_maxcomment)) - == NULL + if (cin_iselse(l) && whilelevel == 0) + { + /* If we're looking at "} else", let's make sure we + * find the opening brace of the enclosing scope, + * not the one from "if () {". */ + if (*l == '}') + curwin->w_cursor.col = + (l - ml_get_curline()) + 1; + + if ((trypos = find_start_brace(ind_maxcomment)) + == NULL || find_match(LOOKFOR_IF, trypos->lnum, - ind_maxparen, ind_maxcomment) == FAIL)) - break; + ind_maxparen, ind_maxcomment) == FAIL) + break; + } } /* diff --git a/src/testdir/test3.in b/src/testdir/test3.in index 05efa9848..0d3720530 100644 --- a/src/testdir/test3.in +++ b/src/testdir/test3.in @@ -1412,6 +1412,21 @@ void func(void) */ } +STARTTEST +:set cino& +2kdd=][ +ENDTEST + +void func(void) +{ + for (int i = 0; i < 10; ++i) + if (i & 1) { + foo(1); + } else + foo(0); +baz(); +} + STARTTEST :g/^STARTTEST/.,/^ENDTEST/d :1;/start of AUTO/,$wq! test.out diff --git a/src/testdir/test3.ok b/src/testdir/test3.ok index 2e622728a..852a4c59b 100644 --- a/src/testdir/test3.ok +++ b/src/testdir/test3.ok @@ -1262,3 +1262,14 @@ void func(void) foo(); } + +void func(void) +{ + for (int i = 0; i < 10; ++i) + if (i & 1) { + foo(1); + } else + foo(0); + baz(); +} + diff --git a/src/version.c b/src/version.c index 14537c6f1..64f49af8a 100644 --- a/src/version.c +++ b/src/version.c @@ -709,6 +709,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 201, /**/ 200, /**/