diff options
Diffstat (limited to 'data/vim/patches/8.1.1438')
-rw-r--r-- | data/vim/patches/8.1.1438 | 276 |
1 files changed, 276 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1438 b/data/vim/patches/8.1.1438 new file mode 100644 index 000000000..8a586bd6a --- /dev/null +++ b/data/vim/patches/8.1.1438 @@ -0,0 +1,276 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1438 +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.1438 +Problem: Some commands cause trouble in a popup window. +Solution: Add NOT_IN_POPUP_WINDOW. +Files: src/macros.h, src/popupwin.c, src/proto/popupwin.pro, + src/ex_docmd.c, src/ex_cmds2.c, src/window.c, + src/testdir/test_popupwin.vim + + +*** ../vim-8.1.1437/src/macros.h 2019-04-27 13:03:20.008715938 +0200 +--- src/macros.h 2019-06-01 13:53:42.718288890 +0200 +*************** +*** 339,341 **** +--- 339,347 ---- + + /* Wether a command index indicates a user command. */ + #define IS_USER_CMDIDX(idx) ((int)(idx) < 0) ++ ++ #ifdef FEAT_TEXT_PROP ++ # define NOT_IN_POPUP_WINDOW not_in_popup_window() ++ #else ++ # define NOT_IN_POPUP_WINDOW 0 ++ #endif +*** ../vim-8.1.1437/src/popupwin.c 2019-06-01 13:28:30.273829492 +0200 +--- src/popupwin.c 2019-06-01 13:50:58.931115084 +0200 +*************** +*** 747,750 **** +--- 747,762 ---- + # endif + } + } ++ ++ int ++ not_in_popup_window() ++ { ++ if (bt_popup(curwin->w_buffer)) ++ { ++ emsg(_("E994: Not allowed in a popup window")); ++ return TRUE; ++ } ++ return FALSE; ++ } ++ + #endif // FEAT_TEXT_PROP +*** ../vim-8.1.1437/src/proto/popupwin.pro 2019-05-30 21:24:22.177201251 +0200 +--- src/proto/popupwin.pro 2019-06-01 13:52:58.006515140 +0200 +*************** +*** 13,16 **** +--- 13,17 ---- + void f_popup_move(typval_T *argvars, typval_T *rettv); + void f_popup_getpos(typval_T *argvars, typval_T *rettv); + void f_popup_getoptions(typval_T *argvars, typval_T *rettv); ++ int not_in_popup_window(void); + /* vim: set ft=c : */ +*** ../vim-8.1.1437/src/ex_docmd.c 2019-05-28 23:08:12.060648736 +0200 +--- src/ex_docmd.c 2019-06-01 14:11:47.076719587 +0200 +*************** +*** 5452,5457 **** +--- 5452,5459 ---- + static void + ex_bunload(exarg_T *eap) + { ++ if (NOT_IN_POPUP_WINDOW) ++ return; + eap->errmsg = do_bufdel( + eap->cmdidx == CMD_bdelete ? DOBUF_DEL + : eap->cmdidx == CMD_bwipeout ? DOBUF_WIPE +*************** +*** 5466,5471 **** +--- 5468,5475 ---- + static void + ex_buffer(exarg_T *eap) + { ++ if (NOT_IN_POPUP_WINDOW) ++ return; + if (*eap->arg) + eap->errmsg = e_trailing; + else +*************** +*** 6768,6773 **** +--- 6772,6780 ---- + || eap->cmdidx == CMD_tabfind + || eap->cmdidx == CMD_tabnew; + ++ if (NOT_IN_POPUP_WINDOW) ++ return; ++ + #ifdef FEAT_GUI + need_mouse_correct = TRUE; + #endif +*************** +*** 6895,6900 **** +--- 6902,6909 ---- + { + int tab_number; + ++ if (NOT_IN_POPUP_WINDOW) ++ return; + switch (eap->cmdidx) + { + case CMD_tabfirst: +*************** +*** 7146,7151 **** +--- 7155,7162 ---- + int need_hide; + int exmode_was = exmode_active; + ++ if (NOT_IN_POPUP_WINDOW) ++ return; + /* + * ":vi" command ends Ex mode. + */ +*** ../vim-8.1.1437/src/ex_cmds2.c 2019-06-01 13:28:30.273829492 +0200 +--- src/ex_cmds2.c 2019-06-01 14:12:18.060559339 +0200 +*************** +*** 1864,1869 **** +--- 1864,1871 ---- + char_u *p; + int old_arg_idx = curwin->w_arg_idx; + ++ if (NOT_IN_POPUP_WINDOW) ++ return; + if (argn < 0 || argn >= ARGCOUNT) + { + if (ARGCOUNT <= 1) +*** ../vim-8.1.1437/src/window.c 2019-05-31 17:34:44.195465656 +0200 +--- src/window.c 2019-06-01 14:06:57.822214087 +0200 +*************** +*** 87,93 **** + #endif + char_u cbuf[40]; + +! Prenum1 = Prenum == 0 ? 1 : Prenum; + + #ifdef FEAT_CMDWIN + # define CHECK_CMDWIN \ +--- 87,94 ---- + #endif + char_u cbuf[40]; + +! if (NOT_IN_POPUP_WINDOW) +! return; + + #ifdef FEAT_CMDWIN + # define CHECK_CMDWIN \ +*************** +*** 102,107 **** +--- 103,110 ---- + # define CHECK_CMDWIN do { /**/ } while (0) + #endif + ++ Prenum1 = Prenum == 0 ? 1 : Prenum; ++ + switch (nchar) + { + /* split current window in two parts, horizontally */ +*************** +*** 732,737 **** +--- 735,743 ---- + int + win_split(int size, int flags) + { ++ if (NOT_IN_POPUP_WINDOW) ++ return FAIL; ++ + /* When the ":tab" modifier was used open a new tab page instead. */ + if (may_open_tabpage() == OK) + return OK; +*************** +*** 1509,1515 **** + win_T *wp2; + int temp; + +! if (ONE_WINDOW) /* just one window */ + { + beep_flush(); + return; +--- 1515,1523 ---- + win_T *wp2; + int temp; + +! if (NOT_IN_POPUP_WINDOW) +! return; +! if (ONE_WINDOW) // just one window + { + beep_flush(); + return; +*************** +*** 2363,2368 **** +--- 2371,2379 ---- + tabpage_T *prev_curtab = curtab; + frame_T *win_frame = win->w_frame->fr_parent; + ++ if (NOT_IN_POPUP_WINDOW) ++ return FAIL; ++ + if (last_window()) + { + emsg(_("E444: Cannot close last window")); +*************** +*** 4221,4226 **** +--- 4232,4239 ---- + win_T *owp = curwin; + #endif + ++ if (NOT_IN_POPUP_WINDOW) ++ return; + if (text_locked()) + { + beep_flush(); +*** ../vim-8.1.1437/src/testdir/test_popupwin.vim 2019-05-31 17:34:44.195465656 +0200 +--- src/testdir/test_popupwin.vim 2019-06-01 14:12:32.116486630 +0200 +*************** +*** 108,115 **** + func Test_win_execute_closing_curwin() + split + let winid = popup_create('some text', {}) +! call win_execute(winid, winnr() .. "close") +! call assert_equal(1, winnr()) + popupclear + endfunc + +--- 108,134 ---- + func Test_win_execute_closing_curwin() + split + let winid = popup_create('some text', {}) +! call assert_fails('call win_execute(winid, winnr() .. "close")', 'E994') +! popupclear +! endfunc +! +! func Test_win_execute_not_allowed() +! let winid = popup_create('some text', {}) +! call assert_fails('call win_execute(winid, "split")', 'E994:') +! call assert_fails('call win_execute(winid, "vsplit")', 'E994:') +! call assert_fails('call win_execute(winid, "close")', 'E994:') +! call assert_fails('call win_execute(winid, "bdelete")', 'E994:') +! call assert_fails('call win_execute(winid, "tabnew")', 'E994:') +! call assert_fails('call win_execute(winid, "tabnext")', 'E994:') +! call assert_fails('call win_execute(winid, "next")', 'E994:') +! call assert_fails('call win_execute(winid, "rewind")', 'E994:') +! call assert_fails('call win_execute(winid, "buf")', 'E994:') +! call assert_fails('call win_execute(winid, "edit")', 'E994:') +! call assert_fails('call win_execute(winid, "enew")', 'E994:') +! call assert_fails('call win_execute(winid, "wincmd x")', 'E994:') +! call assert_fails('call win_execute(winid, "wincmd w")', 'E994:') +! call assert_fails('call win_execute(winid, "wincmd t")', 'E994:') +! call assert_fails('call win_execute(winid, "wincmd b")', 'E994:') + popupclear + endfunc + +*** ../vim-8.1.1437/src/version.c 2019-06-01 13:28:30.273829492 +0200 +--- src/version.c 2019-06-01 13:54:09.342153943 +0200 +*************** +*** 769,770 **** +--- 769,772 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1438, + /**/ + +-- +"Thou shalt not follow the Null Pointer, for at its end Chaos and +Madness lie." + + /// 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 /// |