summaryrefslogtreecommitdiff
path: root/source/ap/vim/patches/7.2.041
diff options
context:
space:
mode:
authorPatrick J Volkerding <volkerdi@slackware.com>2009-08-26 10:00:38 -0500
committerEric Hameleers <alien@slackware.com>2018-05-31 22:41:17 +0200
commit5a12e7c134274dba706667107d10d231517d3e05 (patch)
tree55718d5acb710fde798d9f38d0bbaf594ed4b296 /source/ap/vim/patches/7.2.041
downloadcurrent-5a12e7c134274dba706667107d10d231517d3e05.tar.gz
Slackware 13.0slackware-13.0
Wed Aug 26 10:00:38 CDT 2009 Slackware 13.0 x86_64 is released as stable! Thanks to everyone who helped make this release possible -- see the RELEASE_NOTES for the credits. The ISOs are off to the replicator. This time it will be a 6 CD-ROM 32-bit set and a dual-sided 32-bit/64-bit x86/x86_64 DVD. We're taking pre-orders now at store.slackware.com. Please consider picking up a copy to help support the project. Once again, thanks to the entire Slackware community for all the help testing and fixing things and offering suggestions during this development cycle. As always, have fun and enjoy! -P.
Diffstat (limited to 'source/ap/vim/patches/7.2.041')
-rw-r--r--source/ap/vim/patches/7.2.041729
1 files changed, 729 insertions, 0 deletions
diff --git a/source/ap/vim/patches/7.2.041 b/source/ap/vim/patches/7.2.041
new file mode 100644
index 00000000..b562206c
--- /dev/null
+++ b/source/ap/vim/patches/7.2.041
@@ -0,0 +1,729 @@
+To: vim-dev@vim.org
+Subject: Patch 7.2.041
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=ISO-8859-1
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 7.2.041
+Problem: In diff mode, when using two tabs, each with two diffed buffers,
+ editing a buffer of the other tab messes up the diff. (Matt
+ Mzyzik)
+Solution: Only copy options from a window where the buffer was edited that
+ doesn't have 'diff' set or is for the current tab page.
+ Also fix that window options for a buffer are stored with the
+ wrong window.
+Files: src/buffer.c, src/ex_cmds.c, src/ex_cmds2.c, src/ex_docmd.c,
+ src/ex_getln.c, src/if_sniff.c, src/main.c, src/netbeans.c,
+ src/normal.c, src/popupmnu.c, src/proto/buffer.pro,
+ src/proto/ex_cmds.pro src/quickfix.c, src/window.c
+
+
+*** ../vim-7.2.040/src/buffer.c Wed Nov 12 12:51:38 2008
+--- src/buffer.c Wed Nov 12 17:45:01 2008
+***************
+*** 33,39 ****
+ static char_u *fname_match __ARGS((regprog_T *prog, char_u *name));
+ #endif
+ static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options));
+! static wininfo_T *find_wininfo __ARGS((buf_T *buf));
+ #ifdef UNIX
+ static buf_T *buflist_findname_stat __ARGS((char_u *ffname, struct stat *st));
+ static int otherfile_buf __ARGS((buf_T *buf, char_u *ffname, struct stat *stp));
+--- 33,39 ----
+ static char_u *fname_match __ARGS((regprog_T *prog, char_u *name));
+ #endif
+ static void buflist_setfpos __ARGS((buf_T *buf, win_T *win, linenr_T lnum, colnr_T col, int copy_options));
+! static wininfo_T *find_wininfo __ARGS((buf_T *buf, int skip_diff_buffer));
+ #ifdef UNIX
+ static buf_T *buflist_findname_stat __ARGS((char_u *ffname, struct stat *st));
+ static int otherfile_buf __ARGS((buf_T *buf, char_u *ffname, struct stat *stp));
+***************
+*** 1093,1099 ****
+ #endif
+ setpcmark();
+ retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
+! forceit ? ECMD_FORCEIT : 0);
+
+ /*
+ * do_ecmd() may create a new buffer, then we have to delete
+--- 1093,1099 ----
+ #endif
+ setpcmark();
+ retval = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE,
+! forceit ? ECMD_FORCEIT : 0, curwin);
+
+ /*
+ * do_ecmd() may create a new buffer, then we have to delete
+***************
+*** 1316,1322 ****
+ setpcmark();
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
+! buflist_altfpos(); /* remember curpos */
+
+ #ifdef FEAT_VISUAL
+ /* Don't restart Select mode after switching to another buffer. */
+--- 1316,1322 ----
+ setpcmark();
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum; /* remember alternate file */
+! buflist_altfpos(curwin); /* remember curpos */
+
+ #ifdef FEAT_VISUAL
+ /* Don't restart Select mode after switching to another buffer. */
+***************
+*** 2404,2425 ****
+ return;
+ }
+
+ /*
+ * Find info for the current window in buffer "buf".
+ * If not found, return the info for the most recently used window.
+ * Returns NULL when there isn't any info.
+ */
+ static wininfo_T *
+! find_wininfo(buf)
+ buf_T *buf;
+ {
+ wininfo_T *wip;
+
+ for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+! if (wip->wi_win == curwin)
+ break;
+! if (wip == NULL) /* if no fpos for curwin, use the first in the list */
+! wip = buf->b_wininfo;
+ return wip;
+ }
+
+--- 2404,2473 ----
+ return;
+ }
+
++ #ifdef FEAT_DIFF
++ static int wininfo_other_tab_diff __ARGS((wininfo_T *wip));
++
++ /*
++ * Return TRUE when "wip" has 'diff' set and the diff is only for another tab
++ * page. That's because a diff is local to a tab page.
++ */
++ static int
++ wininfo_other_tab_diff(wip)
++ wininfo_T *wip;
++ {
++ win_T *wp;
++
++ if (wip->wi_opt.wo_diff)
++ {
++ for (wp = firstwin; wp != NULL; wp = wp->w_next)
++ /* return FALSE when it's a window in the current tab page, thus
++ * the buffer was in diff mode here */
++ if (wip->wi_win == wp)
++ return FALSE;
++ return TRUE;
++ }
++ return FALSE;
++ }
++ #endif
++
+ /*
+ * Find info for the current window in buffer "buf".
+ * If not found, return the info for the most recently used window.
++ * When "skip_diff_buffer" is TRUE avoid windows with 'diff' set that is in
++ * another tab page.
+ * Returns NULL when there isn't any info.
+ */
++ /*ARGSUSED*/
+ static wininfo_T *
+! find_wininfo(buf, skip_diff_buffer)
+ buf_T *buf;
++ int skip_diff_buffer;
+ {
+ wininfo_T *wip;
+
+ for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+! if (wip->wi_win == curwin
+! #ifdef FEAT_DIFF
+! && (!skip_diff_buffer || !wininfo_other_tab_diff(wip))
+! #endif
+! )
+ break;
+!
+! /* If no wininfo for curwin, use the first in the list (that doesn't have
+! * 'diff' set and is in another tab page). */
+! if (wip == NULL)
+! {
+! #ifdef FEAT_DIFF
+! if (skip_diff_buffer)
+! {
+! for (wip = buf->b_wininfo; wip != NULL; wip = wip->wi_next)
+! if (!wininfo_other_tab_diff(wip))
+! break;
+! }
+! else
+! #endif
+! wip = buf->b_wininfo;
+! }
+ return wip;
+ }
+
+***************
+*** 2440,2446 ****
+ clearFolding(curwin);
+ #endif
+
+! wip = find_wininfo(buf);
+ if (wip != NULL && wip->wi_optset)
+ {
+ copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
+--- 2488,2494 ----
+ clearFolding(curwin);
+ #endif
+
+! wip = find_wininfo(buf, TRUE);
+ if (wip != NULL && wip->wi_optset)
+ {
+ copy_winopt(&wip->wi_opt, &curwin->w_onebuf_opt);
+***************
+*** 2472,2478 ****
+ wininfo_T *wip;
+ static pos_T no_position = {1, 0};
+
+! wip = find_wininfo(buf);
+ if (wip != NULL)
+ return &(wip->wi_fpos);
+ else
+--- 2520,2526 ----
+ wininfo_T *wip;
+ static pos_T no_position = {1, 0};
+
+! wip = find_wininfo(buf, FALSE);
+ if (wip != NULL)
+ return &(wip->wi_fpos);
+ else
+***************
+*** 2793,2806 ****
+ #endif
+
+ /*
+! * Set alternate cursor position for current window.
+ * Also save the local window option values.
+ */
+ void
+! buflist_altfpos()
+ {
+! buflist_setfpos(curbuf, curwin, curwin->w_cursor.lnum,
+! curwin->w_cursor.col, TRUE);
+ }
+
+ /*
+--- 2841,2854 ----
+ #endif
+
+ /*
+! * Set alternate cursor position for the current buffer and window "win".
+ * Also save the local window option values.
+ */
+ void
+! buflist_altfpos(win)
+! win_T *win;
+ {
+! buflist_setfpos(curbuf, win, win->w_cursor.lnum, win->w_cursor.col, TRUE);
+ }
+
+ /*
+***************
+*** 4492,4498 ****
+ ECMD_ONE,
+ ((P_HID(curwin->w_buffer)
+ || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
+! + ECMD_OLDBUF);
+ #ifdef FEAT_AUTOCMD
+ if (use_firstwin)
+ ++autocmd_no_leave;
+--- 4540,4546 ----
+ ECMD_ONE,
+ ((P_HID(curwin->w_buffer)
+ || bufIsChanged(curwin->w_buffer)) ? ECMD_HIDE : 0)
+! + ECMD_OLDBUF, curwin);
+ #ifdef FEAT_AUTOCMD
+ if (use_firstwin)
+ ++autocmd_no_leave;
+*** ../vim-7.2.040/src/ex_cmds.c Sun Nov 9 13:43:25 2008
+--- src/ex_cmds.c Wed Nov 12 22:41:41 2008
+***************
+*** 3052,3058 ****
+ retval = 0; /* it's in the same file */
+ }
+ else if (do_ecmd(fnum, ffname, sfname, NULL, lnum,
+! (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0)) == OK)
+ retval = -1; /* opened another file */
+ else
+ retval = 1; /* error encountered */
+--- 3052,3059 ----
+ retval = 0; /* it's in the same file */
+ }
+ else if (do_ecmd(fnum, ffname, sfname, NULL, lnum,
+! (P_HID(curbuf) ? ECMD_HIDE : 0) + (forceit ? ECMD_FORCEIT : 0),
+! curwin) == OK)
+ retval = -1; /* opened another file */
+ else
+ retval = 1; /* error encountered */
+***************
+*** 3085,3101 ****
+ * ECMD_OLDBUF: use existing buffer if it exists
+ * ECMD_FORCEIT: ! used for Ex command
+ * ECMD_ADDBUF: don't edit, just add to buffer list
+ *
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! do_ecmd(fnum, ffname, sfname, eap, newlnum, flags)
+ int fnum;
+ char_u *ffname;
+ char_u *sfname;
+ exarg_T *eap; /* can be NULL! */
+ linenr_T newlnum;
+ int flags;
+ {
+ int other_file; /* TRUE if editing another file */
+ int oldbuf; /* TRUE if using existing buffer */
+--- 3086,3106 ----
+ * ECMD_OLDBUF: use existing buffer if it exists
+ * ECMD_FORCEIT: ! used for Ex command
+ * ECMD_ADDBUF: don't edit, just add to buffer list
++ * oldwin: Should be "curwin" when editing a new buffer in the current
++ * window, NULL when splitting the window first. When not NULL info
++ * of the previous buffer for "oldwin" is stored.
+ *
+ * return FAIL for failure, OK otherwise
+ */
+ int
+! do_ecmd(fnum, ffname, sfname, eap, newlnum, flags, oldwin)
+ int fnum;
+ char_u *ffname;
+ char_u *sfname;
+ exarg_T *eap; /* can be NULL! */
+ linenr_T newlnum;
+ int flags;
++ win_T *oldwin;
+ {
+ int other_file; /* TRUE if editing another file */
+ int oldbuf; /* TRUE if using existing buffer */
+***************
+*** 3267,3273 ****
+ {
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum;
+! buflist_altfpos();
+ }
+
+ if (fnum)
+--- 3272,3279 ----
+ {
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = curbuf->b_fnum;
+! if (oldwin != NULL)
+! buflist_altfpos(oldwin);
+ }
+
+ if (fnum)
+***************
+*** 3371,3377 ****
+
+ /* close the link to the current buffer */
+ u_sync(FALSE);
+! close_buffer(curwin, curbuf,
+ (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+
+ #ifdef FEAT_AUTOCMD
+--- 3377,3383 ----
+
+ /* close the link to the current buffer */
+ u_sync(FALSE);
+! close_buffer(oldwin, curbuf,
+ (flags & ECMD_HIDE) ? 0 : DOBUF_UNLOAD);
+
+ #ifdef FEAT_AUTOCMD
+***************
+*** 5609,5615 ****
+ */
+ alt_fnum = curbuf->b_fnum;
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
+! ECMD_HIDE + ECMD_SET_HELP);
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = alt_fnum;
+ empty_fnum = curbuf->b_fnum;
+--- 5615,5627 ----
+ */
+ alt_fnum = curbuf->b_fnum;
+ (void)do_ecmd(0, NULL, NULL, NULL, ECMD_LASTL,
+! ECMD_HIDE + ECMD_SET_HELP,
+! #ifdef FEAT_WINDOWS
+! NULL /* buffer is still open, don't store info */
+! #else
+! curwin
+! #endif
+! );
+ if (!cmdmod.keepalt)
+ curwin->w_alt_fnum = alt_fnum;
+ empty_fnum = curbuf->b_fnum;
+*** ../vim-7.2.040/src/ex_cmds2.c Sun Sep 7 15:49:45 2008
+--- src/ex_cmds2.c Wed Nov 12 17:46:41 2008
+***************
+*** 2132,2139 ****
+ * argument index. */
+ if (do_ecmd(0, alist_name(&ARGLIST[curwin->w_arg_idx]), NULL,
+ eap, ECMD_LAST,
+! (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0) +
+! (eap->forceit ? ECMD_FORCEIT : 0)) == FAIL)
+ curwin->w_arg_idx = old_arg_idx;
+ /* like Vi: set the mark where the cursor is in the file. */
+ else if (eap->cmdidx != CMD_argdo)
+--- 2132,2139 ----
+ * argument index. */
+ if (do_ecmd(0, alist_name(&ARGLIST[curwin->w_arg_idx]), NULL,
+ eap, ECMD_LAST,
+! (P_HID(curwin->w_buffer) ? ECMD_HIDE : 0)
+! + (eap->forceit ? ECMD_FORCEIT : 0), curwin) == FAIL)
+ curwin->w_arg_idx = old_arg_idx;
+ /* like Vi: set the mark where the cursor is in the file. */
+ else if (eap->cmdidx != CMD_argdo)
+*** ../vim-7.2.040/src/ex_docmd.c Sun Nov 9 13:43:25 2008
+--- src/ex_docmd.c Wed Nov 12 18:04:22 2008
+***************
+*** 7488,7494 ****
+ /* ":new" or ":tabnew" without argument: edit an new empty buffer */
+ setpcmark();
+ (void)do_ecmd(0, NULL, NULL, eap, ECMD_ONE,
+! ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0));
+ }
+ else if ((eap->cmdidx != CMD_split
+ #ifdef FEAT_VERTSPLIT
+--- 7488,7495 ----
+ /* ":new" or ":tabnew" without argument: edit an new empty buffer */
+ setpcmark();
+ (void)do_ecmd(0, NULL, NULL, eap, ECMD_ONE,
+! ECMD_HIDE + (eap->forceit ? ECMD_FORCEIT : 0),
+! old_curwin == NULL ? curwin : NULL);
+ }
+ else if ((eap->cmdidx != CMD_split
+ #ifdef FEAT_VERTSPLIT
+***************
+*** 7525,7531 ****
+ #ifdef FEAT_LISTCMDS
+ + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 )
+ #endif
+! ) == FAIL)
+ {
+ /* Editing the file failed. If the window was split, close it. */
+ #ifdef FEAT_WINDOWS
+--- 7526,7532 ----
+ #ifdef FEAT_LISTCMDS
+ + (eap->cmdidx == CMD_badd ? ECMD_ADDBUF : 0 )
+ #endif
+! , old_curwin == NULL ? curwin : NULL) == FAIL)
+ {
+ /* Editing the file failed. If the window was split, close it. */
+ #ifdef FEAT_WINDOWS
+*** ../vim-7.2.040/src/ex_getln.c Sun Sep 14 14:41:44 2008
+--- src/ex_getln.c Wed Nov 12 18:06:25 2008
+***************
+*** 6051,6057 ****
+ cmdwin_type = '-';
+
+ /* Create the command-line buffer empty. */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
+ (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+--- 6051,6057 ----
+ cmdwin_type = '-';
+
+ /* Create the command-line buffer empty. */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, NULL);
+ (void)setfname(curbuf, (char_u *)"[Command Line]", NULL, TRUE);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"nofile", OPT_LOCAL);
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+*** ../vim-7.2.040/src/if_sniff.c Sat Aug 9 19:41:16 2008
+--- src/if_sniff.c Wed Nov 12 17:48:46 2008
+***************
+*** 1114,1120 ****
+ char *fname;
+ {
+ ++no_wait_return;
+! do_ecmd(0, (char_u *)fname, NULL, NULL, ECMD_ONE, ECMD_HIDE+ECMD_OLDBUF);
+ curbuf->b_sniff = TRUE;
+ --no_wait_return; /* [ex_docmd.c] */
+ }
+--- 1114,1121 ----
+ char *fname;
+ {
+ ++no_wait_return;
+! do_ecmd(0, (char_u *)fname, NULL, NULL, ECMD_ONE, ECMD_HIDE+ECMD_OLDBUF,
+! curwin);
+ curbuf->b_sniff = TRUE;
+ --no_wait_return; /* [ex_docmd.c] */
+ }
+*** ../vim-7.2.040/src/main.c Sun Nov 9 13:43:25 2008
+--- src/main.c Wed Nov 12 17:49:06 2008
+***************
+*** 2588,2594 ****
+ # endif
+ (void)do_ecmd(0, arg_idx < GARGCOUNT
+ ? alist_name(&GARGLIST[arg_idx]) : NULL,
+! NULL, NULL, ECMD_LASTL, ECMD_HIDE);
+ # ifdef HAS_SWAP_EXISTS_ACTION
+ if (swap_exists_did_quit)
+ {
+--- 2588,2594 ----
+ # endif
+ (void)do_ecmd(0, arg_idx < GARGCOUNT
+ ? alist_name(&GARGLIST[arg_idx]) : NULL,
+! NULL, NULL, ECMD_LASTL, ECMD_HIDE, curwin);
+ # ifdef HAS_SWAP_EXISTS_ACTION
+ if (swap_exists_did_quit)
+ {
+*** ../vim-7.2.040/src/netbeans.c Sun Jul 13 19:18:03 2008
+--- src/netbeans.c Wed Nov 12 17:49:40 2008
+***************
+*** 1795,1801 ****
+ buf->displayname = NULL;
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+! do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+--- 1795,1801 ----
+ buf->displayname = NULL;
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+! do_ecmd(0, NULL, 0, 0, ECMD_ONE, ECMD_HIDE + ECMD_OLDBUF, curwin);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+***************
+*** 1960,1966 ****
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+ do_ecmd(0, (char_u *)buf->displayname, 0, 0, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+--- 1960,1966 ----
+
+ netbeansReadFile = 0; /* don't try to open disk file */
+ do_ecmd(0, (char_u *)buf->displayname, 0, 0, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF, curwin);
+ netbeansReadFile = 1;
+ buf->bufp = curbuf;
+ maketitle();
+***************
+*** 1979,1985 ****
+ vim_free(buf->displayname);
+ buf->displayname = nb_unquote(args, NULL);
+ do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+ doupdate = 1;
+--- 1979,1985 ----
+ vim_free(buf->displayname);
+ buf->displayname = nb_unquote(args, NULL);
+ do_ecmd(0, (char_u *)buf->displayname, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF, curwin);
+ buf->bufp = curbuf;
+ buf->initDone = TRUE;
+ doupdate = 1;
+*** ../vim-7.2.040/src/normal.c Sat Nov 1 13:51:57 2008
+--- src/normal.c Wed Nov 12 17:49:50 2008
+***************
+*** 6050,6056 ****
+ autowrite(curbuf, FALSE);
+ setpcmark();
+ (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
+! P_HID(curbuf) ? ECMD_HIDE : 0);
+ if (cap->nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+--- 6050,6056 ----
+ autowrite(curbuf, FALSE);
+ setpcmark();
+ (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LAST,
+! P_HID(curbuf) ? ECMD_HIDE : 0, curwin);
+ if (cap->nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+*** ../vim-7.2.040/src/popupmnu.c Sun Jul 13 19:33:51 2008
+--- src/popupmnu.c Wed Nov 12 18:08:07 2008
+***************
+*** 573,579 ****
+ {
+ /* Don't want to sync undo in the current buffer. */
+ ++no_u_sync;
+! res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0);
+ --no_u_sync;
+ if (res == OK)
+ {
+--- 573,579 ----
+ {
+ /* Don't want to sync undo in the current buffer. */
+ ++no_u_sync;
+! res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0, NULL);
+ --no_u_sync;
+ if (res == OK)
+ {
+*** ../vim-7.2.040/src/proto/buffer.pro Sun May 6 13:57:53 2007
+--- src/proto/buffer.pro Wed Nov 12 17:43:39 2008
+***************
+*** 33,39 ****
+ char_u *getaltfname __ARGS((int errmsg));
+ int buflist_add __ARGS((char_u *fname, int flags));
+ void buflist_slash_adjust __ARGS((void));
+! void buflist_altfpos __ARGS((void));
+ int otherfile __ARGS((char_u *ffname));
+ void buf_setino __ARGS((buf_T *buf));
+ void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+--- 33,39 ----
+ char_u *getaltfname __ARGS((int errmsg));
+ int buflist_add __ARGS((char_u *fname, int flags));
+ void buflist_slash_adjust __ARGS((void));
+! void buflist_altfpos __ARGS((win_T *win));
+ int otherfile __ARGS((char_u *ffname));
+ void buf_setino __ARGS((buf_T *buf));
+ void fileinfo __ARGS((int fullname, int shorthelp, int dont_truncate));
+*** ../vim-7.2.040/src/proto/ex_cmds.pro Sun Nov 9 13:43:25 2008
+--- src/proto/ex_cmds.pro Wed Nov 12 17:44:27 2008
+***************
+*** 27,33 ****
+ void do_wqall __ARGS((exarg_T *eap));
+ int not_writing __ARGS((void));
+ int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
+! int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
+ void ex_append __ARGS((exarg_T *eap));
+ void ex_change __ARGS((exarg_T *eap));
+ void ex_z __ARGS((exarg_T *eap));
+--- 27,33 ----
+ void do_wqall __ARGS((exarg_T *eap));
+ int not_writing __ARGS((void));
+ int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
+! int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags, win_T *oldwin));
+ void ex_append __ARGS((exarg_T *eap));
+ void ex_change __ARGS((exarg_T *eap));
+ void ex_z __ARGS((exarg_T *eap));
+*** ../vim-7.2.040/src/quickfix.c Thu Jul 24 18:44:59 2008
+--- src/quickfix.c Wed Nov 12 18:12:00 2008
+***************
+*** 1420,1425 ****
+--- 1420,1426 ----
+ win_T *win;
+ win_T *altwin;
+ #endif
++ win_T *oldwin = curwin;
+ int print_message = TRUE;
+ int len;
+ #ifdef FEAT_FOLDING
+***************
+*** 1744,1750 ****
+ }
+ else
+ ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,
+! ECMD_HIDE + ECMD_SET_HELP);
+ }
+ else
+ ok = buflist_getfile(qf_ptr->qf_fnum,
+--- 1745,1752 ----
+ }
+ else
+ ok = do_ecmd(qf_ptr->qf_fnum, NULL, NULL, NULL, (linenr_T)1,
+! ECMD_HIDE + ECMD_SET_HELP,
+! oldwin == curwin ? curwin : NULL);
+ }
+ else
+ ok = buflist_getfile(qf_ptr->qf_fnum,
+***************
+*** 2267,2272 ****
+--- 2269,2275 ----
+ win_T *win;
+ tabpage_T *prevtab = curtab;
+ buf_T *qf_buf;
++ win_T *oldwin = curwin;
+
+ if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow)
+ {
+***************
+*** 2326,2339 ****
+ win->w_llist->qf_refcount++;
+ }
+
+ if (qf_buf != NULL)
+ /* Use the existing quickfix buffer */
+ (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF);
+ else
+ {
+ /* Create a new quickfix buffer */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE);
+ /* switch off 'swapfile' */
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+--- 2329,2344 ----
+ win->w_llist->qf_refcount++;
+ }
+
++ if (oldwin != curwin)
++ oldwin = NULL; /* don't store info when in another window */
+ if (qf_buf != NULL)
+ /* Use the existing quickfix buffer */
+ (void)do_ecmd(qf_buf->b_fnum, NULL, NULL, NULL, ECMD_ONE,
+! ECMD_HIDE + ECMD_OLDBUF, oldwin);
+ else
+ {
+ /* Create a new quickfix buffer */
+! (void)do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, ECMD_HIDE, oldwin);
+ /* switch off 'swapfile' */
+ set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+ set_option_value((char_u *)"bt", 0L, (char_u *)"quickfix",
+*** ../vim-7.2.040/src/window.c Wed Aug 6 18:32:11 2008
+--- src/window.c Wed Nov 12 18:12:37 2008
+***************
+*** 531,537 ****
+ # ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ # endif
+! (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL, ECMD_HIDE);
+ if (nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+--- 531,538 ----
+ # ifdef FEAT_SCROLLBIND
+ curwin->w_p_scb = FALSE;
+ # endif
+! (void)do_ecmd(0, ptr, NULL, NULL, ECMD_LASTL,
+! ECMD_HIDE, NULL);
+ if (nchar == 'F' && lnum >= 0)
+ {
+ curwin->w_cursor.lnum = lnum;
+*** ../vim-7.2.040/src/version.c Wed Nov 12 16:04:43 2008
+--- src/version.c Wed Nov 12 16:54:35 2008
+***************
+*** 678,679 ****
+--- 678,681 ----
+ { /* Add new patch number below this line */
++ /**/
++ 41,
+ /**/
+
+--
+hundred-and-one symptoms of being an internet addict:
+260. Co-workers have to E-mail you about the fire alarm to get
+ you out of the building.
+
+ /// 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 ///