summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1425
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1425')
-rw-r--r--data/vim/patches/8.1.1425189
1 files changed, 189 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1425 b/data/vim/patches/8.1.1425
new file mode 100644
index 000000000..720d3acaf
--- /dev/null
+++ b/data/vim/patches/8.1.1425
@@ -0,0 +1,189 @@
+To: vim_dev@googlegroups.com
+Subject: Patch 8.1.1425
+Fcc: outbox
+From: Bram Moolenaar <Bram@moolenaar.net>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+------------
+
+Patch 8.1.1425
+Problem: Win_execute() does not set window pointers properly.
+Solution: Use switch_win_noblock(). Also execute autocommands in a popup
+ window.
+Files: src/window.c, src/proto/window.pro, src/evalfunc.c, src/autocmd.c
+
+
+*** ../vim-8.1.1424/src/window.c 2019-05-28 23:08:12.080648632 +0200
+--- src/window.c 2019-05-30 17:28:15.916167785 +0200
+***************
+*** 6495,6500 ****
+--- 6495,6514 ----
+ int no_display)
+ {
+ block_autocmds();
++ return switch_win_noblock(save_curwin, save_curtab, win, tp, no_display);
++ }
++
++ /*
++ * As switch_win() but without blocking autocommands.
++ */
++ int
++ switch_win_noblock(
++ win_T **save_curwin,
++ tabpage_T **save_curtab,
++ win_T *win,
++ tabpage_T *tp,
++ int no_display)
++ {
+ *save_curwin = curwin;
+ if (tp != NULL)
+ {
+***************
+*** 6524,6532 ****
+ */
+ void
+ restore_win(
+! win_T *save_curwin UNUSED,
+! tabpage_T *save_curtab UNUSED,
+! int no_display UNUSED)
+ {
+ if (save_curtab != NULL && valid_tabpage(save_curtab))
+ {
+--- 6538,6559 ----
+ */
+ void
+ restore_win(
+! win_T *save_curwin,
+! tabpage_T *save_curtab,
+! int no_display)
+! {
+! restore_win_noblock(save_curwin, save_curtab, no_display);
+! unblock_autocmds();
+! }
+!
+! /*
+! * As restore_win() but without unblocking autocommands.
+! */
+! void
+! restore_win_noblock(
+! win_T *save_curwin,
+! tabpage_T *save_curtab,
+! int no_display)
+ {
+ if (save_curtab != NULL && valid_tabpage(save_curtab))
+ {
+***************
+*** 6546,6552 ****
+ curwin = save_curwin;
+ curbuf = curwin->w_buffer;
+ }
+- unblock_autocmds();
+ }
+
+ /*
+--- 6573,6578 ----
+*** ../vim-8.1.1424/src/proto/window.pro 2019-05-25 19:51:03.776408456 +0200
+--- src/proto/window.pro 2019-05-30 16:29:54.863661874 +0200
+***************
+*** 77,83 ****
+--- 77,85 ----
+ void make_snapshot(int idx);
+ void restore_snapshot(int idx, int close_curwin);
+ int switch_win(win_T **save_curwin, tabpage_T **save_curtab, win_T *win, tabpage_T *tp, int no_display);
++ int switch_win_noblock(win_T **save_curwin, tabpage_T **save_curtab, win_T *win, tabpage_T *tp, int no_display);
+ void restore_win(win_T *save_curwin, tabpage_T *save_curtab, int no_display);
++ void restore_win_noblock(win_T *save_curwin, tabpage_T *save_curtab, int no_display);
+ void switch_buffer(bufref_T *save_curbuf, buf_T *buf);
+ void restore_buffer(bufref_T *save_curbuf);
+ int win_hasvertsplit(void);
+*** ../vim-8.1.1424/src/evalfunc.c 2019-05-30 14:29:42.597507636 +0200
+--- src/evalfunc.c 2019-05-30 16:35:07.094047567 +0200
+***************
+*** 6116,6134 ****
+ {
+ int id = (int)tv_get_number(argvars);
+ win_T *wp = win_id2wp(id);
+! win_T *save_curwin = curwin;
+
+ if (wp != NULL)
+ {
+! curwin = wp;
+! curbuf = curwin->w_buffer;
+! check_cursor();
+! execute_common(argvars, rettv, 1);
+! if (win_valid(save_curwin))
+ {
+! curwin = save_curwin;
+! curbuf = curwin->w_buffer;
+ }
+ }
+ }
+
+--- 6116,6133 ----
+ {
+ int id = (int)tv_get_number(argvars);
+ win_T *wp = win_id2wp(id);
+! win_T *save_curwin;
+! tabpage_T *save_curtab;
+
+ if (wp != NULL)
+ {
+! if (switch_win_noblock(&save_curwin, &save_curtab, wp, curtab, TRUE)
+! == OK)
+ {
+! check_cursor();
+! execute_common(argvars, rettv, 1);
+ }
++ restore_win_noblock(save_curwin, save_curtab, TRUE);
+ }
+ }
+
+*** ../vim-8.1.1424/src/autocmd.c 2019-05-28 23:08:12.052648779 +0200
+--- src/autocmd.c 2019-05-30 16:56:53.315286006 +0200
+***************
+*** 1349,1355 ****
+ */
+ FOR_ALL_BUFFERS(buf)
+ {
+! if (buf->b_ml.ml_mfp != NULL && !bt_popup(buf))
+ {
+ // find a window for this buffer and save some values
+ aucmd_prepbuf(&aco, buf);
+--- 1349,1355 ----
+ */
+ FOR_ALL_BUFFERS(buf)
+ {
+! if (buf->b_ml.ml_mfp != NULL)
+ {
+ // find a window for this buffer and save some values
+ aucmd_prepbuf(&aco, buf);
+***************
+*** 1612,1619 ****
+ int force, // when TRUE, ignore autocmd_busy
+ buf_T *buf) // buffer for <abuf>
+ {
+- if (bt_popup(buf))
+- return FALSE;
+ return apply_autocmds_group(event, fname, fname_io, force,
+ AUGROUP_ALL, buf, NULL);
+ }
+--- 1612,1617 ----
+*** ../vim-8.1.1424/src/version.c 2019-05-30 15:53:26.210807270 +0200
+--- src/version.c 2019-05-30 17:00:28.426169104 +0200
+***************
+*** 769,770 ****
+--- 769,772 ----
+ { /* Add new patch number below this line */
++ /**/
++ 1425,
+ /**/
+
+--
+Q: What is a patch 22?
+A: A patch you need to include to make it possible to include patches.
+
+ /// 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 ///