From 6fd6d84b94cb548441e2ca972c31860586868e1e Mon Sep 17 00:00:00 2001 From: Karsten Hopp Date: Aug 13 2007 11:49:28 +0000 Subject: patchlevel 59 --- diff --git a/7.1.059 b/7.1.059 new file mode 100644 index 0000000..8e19558 --- /dev/null +++ b/7.1.059 @@ -0,0 +1,104 @@ +To: vim-dev@vim.org +Subject: patch 7.1.059 +Fcc: outbox +From: Bram Moolenaar +Mime-Version: 1.0 +Content-Type: text/plain; charset=ISO-8859-1 +Content-Transfer-Encoding: 8bit +------------ + +Patch 7.1.059 +Problem: When in Ex mode and doing "g/^/vi" and then pressing CTRL-C Vim + hangs and beeps. (Antony Scriven) +Solution: Clear "got_int" in the main loop to avoid the hang. When typing + CTRL-C twice in a row abort the ":g" command. This is Vi + compatible. +Files: src/main.c + + +*** ../vim-7.1.058/src/main.c Tue Jun 19 20:30:46 2007 +--- src/main.c Tue Aug 7 22:40:35 2007 +*************** +*** 954,960 **** + int cmdwin; /* TRUE when working in the command-line window */ + int noexmode; /* TRUE when return on entering Ex mode */ + { +! oparg_T oa; /* operator arguments */ + + #if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD) + /* Setup to catch a terminating error from the X server. Just ignore +--- 954,961 ---- + int cmdwin; /* TRUE when working in the command-line window */ + int noexmode; /* TRUE when return on entering Ex mode */ + { +! oparg_T oa; /* operator arguments */ +! int previous_got_int = FALSE; /* "got_int" was TRUE */ + + #if defined(FEAT_X11) && defined(FEAT_XCLIPBOARD) + /* Setup to catch a terminating error from the X server. Just ignore +*************** +*** 1015,1026 **** + need_fileinfo = FALSE; + } + } +! if (got_int && !global_busy) + { +! if (!quit_more) +! (void)vgetc(); /* flush all buffers */ +! got_int = FALSE; + } + if (!exmode_active) + msg_scroll = FALSE; + quit_more = FALSE; +--- 1016,1047 ---- + need_fileinfo = FALSE; + } + } +! +! /* Reset "got_int" now that we got back to the main loop. Except when +! * inside a ":g/pat/cmd" command, then the "got_int" needs to abort +! * the ":g" command. +! * For ":g/pat/vi" we reset "got_int" when used once. When used +! * a second time we go back to Ex mode and abort the ":g" command. */ +! if (got_int) + { +! if (noexmode && global_busy && !exmode_active && previous_got_int) +! { +! /* Typed two CTRL-C in a row: go back to ex mode as if "Q" was +! * used and keep "got_int" set, so that it aborts ":g". */ +! exmode_active = EXMODE_NORMAL; +! State = NORMAL; +! } +! else if (!global_busy || !exmode_active) +! { +! if (!quit_more) +! (void)vgetc(); /* flush all buffers */ +! got_int = FALSE; +! } +! previous_got_int = TRUE; + } ++ else ++ previous_got_int = FALSE; ++ + if (!exmode_active) + msg_scroll = FALSE; + quit_more = FALSE; +*** ../vim-7.1.058/src/version.c Wed Aug 8 22:48:16 2007 +--- src/version.c Fri Aug 10 21:30:39 2007 +*************** +*** 668,669 **** +--- 668,671 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 59, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +116. You are living with your boyfriend who networks your respective + computers so you can sit in separate rooms and email each other + + /// Bram Moolenaar -- Bram@Moolenaar.net -- 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 ///