diff options
Diffstat (limited to 'data/vim/patches/8.1.1416')
-rw-r--r-- | data/vim/patches/8.1.1416 | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/data/vim/patches/8.1.1416 b/data/vim/patches/8.1.1416 new file mode 100644 index 000000000..80bb7da81 --- /dev/null +++ b/data/vim/patches/8.1.1416 @@ -0,0 +1,178 @@ +To: vim_dev@googlegroups.com +Subject: Patch 8.1.1416 +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.1416 +Problem: Popup_getposition() not implemented yet. +Solution: Implement it. (Yasuhiro Matsumoto, closes #4449) +Files: runtime/doc/popup.txt, src/evalfunc.c, src/popupwin.c, + src/proto/popupwin.pro, src/testdir/test_popupwin.vim + + +*** ../vim-8.1.1415/runtime/doc/popup.txt 2019-05-27 21:53:53.986229323 +0200 +--- runtime/doc/popup.txt 2019-05-29 20:18:24.751509209 +0200 +*************** +*** 84,94 **** + + IMPLEMENTATION: + - Code is in popupwin.c +! - implement popup_getposition({id}), use in tests + - Implement filter. + - Handle screen resize in screenalloc(). + - Make redrawing more efficient and avoid flicker. + - Properly figure out the size and position. + - Implement all the unimplemented options and features. + + +--- 84,100 ---- + + IMPLEMENTATION: + - Code is in popupwin.c +! - when creating the window set options to Vim default? (verify with 'number') +! - Do not show tilde below last line. + - Implement filter. ++ Check that popup_close() works in the filter. + - Handle screen resize in screenalloc(). + - Make redrawing more efficient and avoid flicker. ++ Fix redrawing problem with completion. ++ Fix redrawing problem when scrolling non-current window ++ Fix redrawing the statusline on top of a popup + - Properly figure out the size and position. ++ - Can the buffer be re-used, to avoid using up lots of buffer numbers? + - Implement all the unimplemented options and features. + + +*************** +*** 225,237 **** + Return the {options} for popup {id}. + + popup_getposition({id}) *popup_getposition()* +- {not implemented yet} + Return the position and size of popup {id}. Returns a Dict + with these entries: + col screen column of the popup, one-based + line screen line of the popup, one-based + width width of the popup in screen cells + height height of the popup in screen cells + + win_execute({id}, {command}) + {not implemented yet} +--- 231,246 ---- + Return the {options} for popup {id}. + + popup_getposition({id}) *popup_getposition()* + Return the position and size of popup {id}. Returns a Dict + with these entries: + col screen column of the popup, one-based + line screen line of the popup, one-based + width width of the popup in screen cells + height height of the popup in screen cells ++ Note that these are the actual screen positions. They differ ++ from the values in `popup_getoptions()` for the sizing and ++ positioning mechanism applied. ++ If popup window {id} is not found an empty Dict is returned. + + win_execute({id}, {command}) + {not implemented yet} +*** ../vim-8.1.1415/src/evalfunc.c 2019-05-28 23:08:12.056648758 +0200 +--- src/evalfunc.c 2019-05-29 20:24:24.582101066 +0200 +*************** +*** 810,815 **** +--- 810,816 ---- + #ifdef FEAT_TEXT_PROP + {"popup_close", 1, 1, f_popup_close}, + {"popup_create", 2, 2, f_popup_create}, ++ {"popup_getposition", 1, 1, f_popup_getposition}, + {"popup_hide", 1, 1, f_popup_hide}, + {"popup_move", 2, 2, f_popup_move}, + {"popup_show", 1, 1, f_popup_show}, +*** ../vim-8.1.1415/src/popupwin.c 2019-05-27 21:53:53.986229323 +0200 +--- src/popupwin.c 2019-05-29 20:22:24.442608839 +0200 +*************** +*** 487,490 **** +--- 487,511 ---- + redraw_all_later(NOT_VALID); + } + ++ /* ++ * popup_getposition({id}) ++ */ ++ void ++ f_popup_getposition(typval_T *argvars, typval_T *rettv) ++ { ++ dict_T *dict; ++ int id = (int)tv_get_number(argvars); ++ win_T *wp = find_popup_win(id); ++ ++ if (rettv_dict_alloc(rettv) == OK) ++ { ++ if (wp == NULL) ++ return; // invalid {id} ++ dict = rettv->vval.v_dict; ++ dict_add_number(dict, "line", wp->w_winrow + 1); ++ dict_add_number(dict, "col", wp->w_wincol + 1); ++ dict_add_number(dict, "width", wp->w_width); ++ dict_add_number(dict, "height", wp->w_height); ++ } ++ } + #endif // FEAT_TEXT_PROP +*** ../vim-8.1.1415/src/proto/popupwin.pro 2019-05-27 21:53:53.990229301 +0200 +--- src/proto/popupwin.pro 2019-05-29 20:14:19.844197298 +0200 +*************** +*** 3,8 **** +--- 3,9 ---- + int popup_any_visible(void); + void f_popup_close(typval_T *argvars, typval_T *rettv); + void f_popup_hide(typval_T *argvars, typval_T *rettv); ++ void f_popup_getposition(typval_T *argvars, typval_T *rettv); + void f_popup_show(typval_T *argvars, typval_T *rettv); + void popup_close(int id); + void popup_close_tabpage(tabpage_T *tp, int id); +*** ../vim-8.1.1415/src/testdir/test_popupwin.vim 2019-05-27 21:53:53.990229301 +0200 +--- src/testdir/test_popupwin.vim 2019-05-29 20:24:44.730013045 +0200 +*************** +*** 159,161 **** +--- 159,178 ---- + + bwipe! + endfunc ++ ++ func Test_popup_getposition() ++ let winid = popup_create('hello', { ++ \ 'line': 2, ++ \ 'col': 3, ++ \ 'minwidth': 10, ++ \ 'minheight': 11, ++ \}) ++ redraw ++ let res = popup_getposition(winid) ++ call assert_equal(2, res.line) ++ call assert_equal(3, res.col) ++ call assert_equal(10, res.width) ++ call assert_equal(11, res.height) ++ ++ call popup_close(winid) ++ endfunc +*** ../vim-8.1.1415/src/version.c 2019-05-28 23:32:42.942257480 +0200 +--- src/version.c 2019-05-29 20:15:28.556034833 +0200 +*************** +*** 769,770 **** +--- 769,772 ---- + { /* Add new patch number below this line */ ++ /**/ ++ 1416, + /**/ + +-- +hundred-and-one symptoms of being an internet addict: +42. Your virtual girlfriend finds a new net sweetheart with a larger bandwidth. + + /// 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 /// |