Re: Bug: windo and exceptions
Bram Moolenaar schrieb: Andy Wokula wrote: GVim runs into an endless loop if I do the following: " clean startup :new " at least two windows :windo throw "foo" Error detected while processing : E605: Exception not caught: foo E605: Exception not caught: foo E605: Exception not caught: foo E605: Exception not caught: foo ... See patch below. Another example: " clean startup :set modified :bot new :try : windo enew " -> go and kill GVim in the task manager (does not happen if :bot new is replaced by :abo new ) Solved with the same patch. Please verify. *** ../vim-7.0.240/src/ex_cmds2.c Tue Feb 13 06:21:24 2007 --- src/ex_cmds2.c Wed May 2 22:04:38 2007 *** *** 2287,2292 --- 2287,2294 if (!win_valid(wp)) break; win_goto(wp); + if (curwin != wp) + break; /* something must be wrong */ wp = curwin->w_next; } else if (eap->cmdidx == CMD_tabdo) Great, the patch works (examples tested). -- Thanks, Andy EOM
bug in java indentation
There seems to be a bug in java indentation. The maintainer (Cc'ed) is said to be resigned, so I'm writing here. It is sort of special situation. Take a look at the println() in the following: public class Bug { public static void main(String args[]) { Foo.bar(new Baz() { public void run() { if (true) { /*nothing here*/ } while (true); System.out.println("doh!"); } }); } } And some findings - it indent's correctly if you: a) put the if .. { .. } on one line b) remove the if c) remove the while() d) add body to the while -- Best regards, Tomas Golembiovsky -- ||- - - | | Law of Algebra | | You never catch on until after the test. | |- - -
Re: Bug: windo and exceptions
Andy Wokula wrote: > GVim runs into an endless loop if I do the following: > > " clean startup > :new " at least two windows > :windo throw "foo" > > Error detected while processing : > E605: Exception not caught: foo > E605: Exception not caught: foo > E605: Exception not caught: foo > E605: Exception not caught: foo > ... See patch below. > Another example: > >" clean startup >:set modified >:bot new >:try >: windo enew > >" -> go and kill GVim in the task manager > > (does not happen if :bot new is replaced by :abo new ) Solved with the same patch. Please verify. *** ../vim-7.0.240/src/ex_cmds2.c Tue Feb 13 06:21:24 2007 --- src/ex_cmds2.c Wed May 2 22:04:38 2007 *** *** 2287,2292 --- 2287,2294 if (!win_valid(wp)) break; win_goto(wp); + if (curwin != wp) + break; /* something must be wrong */ wp = curwin->w_next; } else if (eap->cmdidx == CMD_tabdo) -- The 50-50-90 rule: Anytime you have a 50-50 chance of getting something right, there's a 90% probability you'll get it wrong. /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\ ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\download, build and distribute -- http://www.A-A-P.org/// \\\help me help AIDS victims -- http://ICCF-Holland.org///
Re: Regex performance - SoC
James - > I'm wondering if any of the Summer of Code winners are tackling the > regex performance thing suggested here: http://www.vim.org/soc/ideas.php > > If anyone chose that project, I'll of course defer to them. But if > no one's working on it, I might give it a shot, I think it'd be fun. Yes, two students were selected to work on this. Russ Cox volunteered to mentor them. - Bram -- Bumper sticker: Honk if you love peace and quiet. /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\ ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\download, build and distribute -- http://www.A-A-P.org/// \\\help me help AIDS victims -- http://ICCF-Holland.org///
patch 7.0.240
Patch 7.0.240 Problem:Crash when splitting a window in the GUI. (opposite of 7.0.227) Solution: Don't call out_flush() from win_alloc(). Also avoid this for win_delete(). Also block autocommands while the window structure is invalid. Files: src/window.c *** ../vim-7.0.239/src/window.c Thu Apr 26 16:11:47 2007 --- src/window.cTue May 1 19:23:22 2007 *** *** 722,727 --- 722,733 need_status = STATUS_HEIGHT; } + #ifdef FEAT_GUI + /* May be needed for the scrollbars that are going to change. */ + if (gui.in_use) + out_flush(); + #endif + #ifdef FEAT_VERTSPLIT if (flags & WSP_VERT) { *** *** 4071,4076 --- 4077,4088 if (newwin != NULL) { + #ifdef FEAT_AUTOCMD + /* Don't execute autocommands while the window is not properly +* initialized yet. gui_create_scrollbar() may trigger a FocusGained +* event. */ + ++autocmd_block; + #endif /* * link the window in the window list */ *** *** 4100,4106 #ifdef FEAT_GUI if (gui.in_use) { - out_flush(); gui_create_scrollbar(&newwin->w_scrollbars[SBAR_LEFT], SBAR_LEFT, newwin); gui_create_scrollbar(&newwin->w_scrollbars[SBAR_RIGHT], --- 4112,4117 *** *** 4114,4119 --- 4125,4133 #ifdef FEAT_FOLDING foldInitWin(newwin); #endif + #ifdef FEAT_AUTOCMD + --autocmd_block; + #endif } return newwin; } *** *** 4130,4135 --- 4144,4155 { int i; + #ifdef FEAT_AUTOCMD + /* Don't execute autocommands while the window is halfway being deleted. + * gui_mch_destroy_scrollbar() may trigger a FocusGained event. */ + ++autocmd_block; + #endif + #ifdef FEAT_MZSCHEME mzscheme_window_free(wp); #endif *** *** 4188,4193 --- 4208,4217 win_remove(wp, tp); vim_free(wp); + + #ifdef FEAT_AUTOCMD + --autocmd_block; + #endif } /* *** ../vim-7.0.239/src/version.cTue May 1 23:22:32 2007 --- src/version.c Wed May 2 21:51:10 2007 *** *** 668,669 --- 668,671 { /* Add new patch number below this line */ + /**/ + 240, /**/ -- Just remember...if the world didn't suck, we'd all fall off. /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\ ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\download, build and distribute -- http://www.A-A-P.org/// \\\help me help AIDS victims -- http://ICCF-Holland.org///
Bug: windo and exceptions
GVim runs into an endless loop if I do the following: " clean startup :new " at least two windows :windo throw "foo" Error detected while processing : E605: Exception not caught: foo E605: Exception not caught: foo E605: Exception not caught: foo E605: Exception not caught: foo ... Another example: " clean startup :set modified :bot new :try : windo enew " -> go and kill GVim in the task manager (does not happen if :bot new is replaced by :abo new ) -- Regards, Andy EOM
patch 7.0.239
Patch 7.0.239 Problem:When using local directories and tab pages ":mksession" uses a short file name when it shouldn't. Window-local options from a modeline may be applied to the wrong window. (Teemu Likonen) Solution: Add the did_lcd flag, use the full path when it's set. Don't use window-local options from the modeline when using the current window for another buffer in ":doautoall". Files: src/fileio.c, src/ex_docmd.c *** ../vim-7.0.238/src/fileio.c Tue Feb 27 16:51:07 2007 --- src/fileio.cTue May 1 22:35:34 2007 *** *** 8086,8092 /* execute the autocommands for this buffer */ retval = do_doautocmd(eap->arg, FALSE); ! do_modelines(0); /* restore the current window */ aucmd_restbuf(&aco); --- 8087,8096 /* execute the autocommands for this buffer */ retval = do_doautocmd(eap->arg, FALSE); ! ! /* Execute the modeline settings, but don't set window-local !* options if we are using the current window for another buffer. */ ! do_modelines(aco.save_curwin == NULL ? OPT_NOWIN : 0); /* restore the current window */ aucmd_restbuf(&aco); *** ../vim-7.0.238/src/ex_docmd.c Tue Mar 27 16:57:54 2007 --- src/ex_docmd.c Tue Mar 27 16:49:06 2007 *** *** 375,380 --- 375,381 static intput_view __ARGS((FILE *fd, win_T *wp, int add_edit, unsigned *flagp)); static void ex_loadview __ARGS((exarg_T *eap)); static char_u *get_view_file __ARGS((int c)); + static intdid_lcd;/* whether ":lcd" was produced for a session */ #else # define ex_loadview ex_ni #endif *** *** 8573,8578 --- 8574,8581 } #ifdef FEAT_SESSION + did_lcd = FALSE; + /* ":mkview" or ":mkview 9": generate file name with 'viewdir' */ if (eap->cmdidx == CMD_mkview && (*eap->arg == NUL *** *** 10327,10332 --- 10330,10336 || ses_put_fname(fd, wp->w_localdir, flagp) == FAIL || put_eol(fd) == FAIL) return FAIL; + did_lcd = TRUE; } return OK; *** *** 10384,10394 char_u*name; /* Use the short file name if the current directory is known at the time ! * the session file will be sourced. Don't do this for ":mkview", we ! * don't know the current directory. */ if (buf->b_sfname != NULL && flagp == &ssop_flags ! && (ssop_flags & (SSOP_CURDIR | SSOP_SESDIR))) name = buf->b_sfname; else name = buf->b_ffname; --- 10388,10401 char_u*name; /* Use the short file name if the current directory is known at the time ! * the session file will be sourced. ! * Don't do this for ":mkview", we don't know the current directory. ! * Don't do this after ":lcd", we don't keep track of what the current ! * directory is. */ if (buf->b_sfname != NULL && flagp == &ssop_flags ! && (ssop_flags & (SSOP_CURDIR | SSOP_SESDIR)) ! && !did_lcd) name = buf->b_sfname; else name = buf->b_ffname; *** ../vim-7.0.238/src/version.cTue May 1 22:06:41 2007 --- src/version.c Tue May 1 23:21:32 2007 *** *** 668,669 --- 668,671 { /* Add new patch number below this line */ + /**/ + 239, /**/ -- Those who live by the sword get shot by those who don't. /// Bram Moolenaar -- [EMAIL PROTECTED] -- http://www.Moolenaar.net \\\ ///sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ \\\download, build and distribute -- http://www.A-A-P.org/// \\\help me help AIDS victims -- http://ICCF-Holland.org///