To: vim_dev@googlegroups.com Subject: Patch 7.3.201 Fcc: outbox From: Bram Moolenaar Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ------------ Patch 7.3.201 (after 7.3.195) Problem: "} else" still causes following lines to be indented too much. Solution: Better detection for the "else" block. (Lech Lorens) Files: src/misc1.c, src/testdir/test3.in, src/testdir/test3.ok *** ../mercurial/vim73/src/misc1.c 2011-05-19 16:35:05.000000000 +0200 --- src/misc1.c 2011-05-25 13:29:45.000000000 +0200 *************** *** 7541,7557 **** /* * When searching for a terminated line, don't use the ! * one between the "if" and the "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 || find_match(LOOKFOR_IF, trypos->lnum, ! ind_maxparen, ind_maxcomment) == FAIL)) ! break; } /* --- 7541,7565 ---- /* * When searching for a terminated line, don't use the ! * 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) ! { ! /* 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; ! } } /* *** ../mercurial/vim73/src/testdir/test3.in 2011-05-19 16:35:05.000000000 +0200 --- src/testdir/test3.in 2011-05-25 13:23:51.000000000 +0200 *************** *** 1413,1418 **** --- 1413,1433 ---- } 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 ENDTEST *** ../mercurial/vim73/src/testdir/test3.ok 2011-05-19 16:35:05.000000000 +0200 --- src/testdir/test3.ok 2011-05-25 13:23:51.000000000 +0200 *************** *** 1262,1264 **** --- 1262,1275 ---- foo(); } + + void func(void) + { + for (int i = 0; i < 10; ++i) + if (i & 1) { + foo(1); + } else + foo(0); + baz(); + } + *** ../vim-7.3.200/src/version.c 2011-05-25 12:51:17.000000000 +0200 --- src/version.c 2011-05-25 13:33:16.000000000 +0200 *************** *** 711,712 **** --- 711,714 ---- { /* Add new patch number below this line */ + /**/ + 201, /**/ -- Laughing helps. It's like jogging on the inside. /// 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 ///