summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1446
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1446')
-rw-r--r--data/vim/patches/8.1.1446291
1 files changed, 0 insertions, 291 deletions
diff --git a/data/vim/patches/8.1.1446 b/data/vim/patches/8.1.1446
deleted file mode 100644
index e59f072a4..000000000
--- a/data/vim/patches/8.1.1446
+++ /dev/null
@@ -1,291 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1446
-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.1446
-Problem: Popup window callback not implemented yet.
-Solution: Implement the callback.
-Files: runtime/doc/popup.txt, src/popupwin.c, src/structs.h,
- src/evalfunc.c, src/window.c, src/testdir/test_popupwin.vim
-
-
-*** ../vim-8.1.1445/runtime/doc/popup.txt 2019-06-01 22:15:10.215177111 +0200
---- runtime/doc/popup.txt 2019-06-01 22:45:17.811027656 +0200
-***************
-*** 90,95 ****
---- 90,96 ----
-
- IMPLEMENTATION:
- - Code is in popupwin.c
-+ - Fix positioning with border and padding.
- - Why does 'nrformats' leak from the popup window buffer???
- - Make redrawing more efficient and avoid flicker.
- Store popup info in a mask, use the mask in screen_line()
-***************
-*** 133,142 ****
- < In case of failure zero is returned.
-
-
-! popup_close({id}) *popup_close()*
- Close popup {id}. The window and the associated buffer will
- be deleted.
-
-
- popup_dialog({text}, {options}) *popup_dialog()*
- {not implemented yet}
---- 134,148 ----
- < In case of failure zero is returned.
-
-
-! popup_close({id} [, {result}]) *popup_close()*
- Close popup {id}. The window and the associated buffer will
- be deleted.
-
-+ If the popup has a callback it will be called just before the
-+ popup window is deleted. If the optional {result} is present
-+ it will be passed as the second argument of the callback.
-+ Otherwise zero is passed to the callback.
-+
-
- popup_dialog({text}, {options}) *popup_dialog()*
- {not implemented yet}
-***************
-*** 145,150 ****
---- 151,157 ----
- \ 'pos': 'center',
- \ 'zindex': 200,
- \ 'border': [],
-+ \ 'padding': [],
- \})
- < Use {options} to change the properties.
-
-***************
-*** 166,171 ****
---- 173,179 ----
-
-
- popup_atcursor({text}, {options}) *popup_atcursor()*
-+ {not implemented yet: close when cursor moves}
- Show the {text} above the cursor, and close it when the cursor
- moves. This works like: >
- call popup_create({text}, {
-***************
-*** 394,400 ****
- |popup-filter|
- callback a callback to be used when the popup closes, e.g. when
- using |popup_filter_menu()|, see |popup-callback|.
-- {not implemented yet}
-
- Depending on the "zindex" the popup goes under or above other popups. The
- completion menu (|popup-menu|) has zindex 100. For messages that occur for a
---- 402,407 ----
-***************
-*** 477,487 ****
-
- POPUP CALLBACK *popup-callback*
-
-- {not implemented yet}
- A callback that is invoked when the popup closes. Used by
-! |popup_filter_menu()|. Invoked with two arguments: the ID of the popup and
-! the result, which would usually be an index in the popup lines, or whatever
-! the filter wants to pass.
-
- ==============================================================================
- 3. Examples *popup-examples*
---- 484,495 ----
-
- POPUP CALLBACK *popup-callback*
-
- A callback that is invoked when the popup closes. Used by
-! |popup_filter_menu()|.
-!
-! The callback is invoked with two arguments: the ID of the popup window and the
-! result, which could be an index in the popup lines, or whatever was passed as
-! the second argument of `popup_close()`.
-
- ==============================================================================
- 3. Examples *popup-examples*
-*** ../vim-8.1.1445/src/popupwin.c 2019-06-01 22:15:10.211177120 +0200
---- src/popupwin.c 2019-06-01 22:38:42.421014923 +0200
-***************
-*** 201,206 ****
---- 201,215 ----
- wp->w_p_wrap = nr != 0;
- }
-
-+ di = dict_find(dict, (char_u *)"callback", -1);
-+ if (di != NULL)
-+ {
-+ callback_T callback = get_callback(&di->di_tv);
-+
-+ if (callback.cb_name != NULL)
-+ set_callback(&wp->w_close_cb, &callback);
-+ }
-+
- di = dict_find(dict, (char_u *)"filter", -1);
- if (di != NULL)
- {
-***************
-*** 632,645 ****
- }
-
- /*
- * popup_close({id})
- */
- void
- f_popup_close(typval_T *argvars, typval_T *rettv UNUSED)
- {
- int id = (int)tv_get_number(argvars);
-
-! popup_close(id);
- }
-
- /*
---- 641,693 ----
- }
-
- /*
-+ * Invoke the close callback for window "wp" with value "result".
-+ * Careful: The callback may make "wp" invalid!
-+ */
-+ static void
-+ invoke_popup_callback(win_T *wp, typval_T *result)
-+ {
-+ typval_T rettv;
-+ int dummy;
-+ typval_T argv[3];
-+
-+ argv[0].v_type = VAR_NUMBER;
-+ argv[0].vval.v_number = (varnumber_T)wp->w_id;
-+
-+ if (result != NULL && result->v_type != VAR_UNKNOWN)
-+ copy_tv(result, &argv[1]);
-+ else
-+ {
-+ argv[1].v_type = VAR_NUMBER;
-+ argv[1].vval.v_number = 0;
-+ }
-+
-+ argv[2].v_type = VAR_UNKNOWN;
-+
-+ call_callback(&wp->w_close_cb, -1,
-+ &rettv, 2, argv, NULL, 0L, 0L, &dummy, TRUE, NULL);
-+ if (result != NULL)
-+ clear_tv(&argv[1]);
-+ clear_tv(&rettv);
-+ }
-+
-+ /*
- * popup_close({id})
- */
- void
- f_popup_close(typval_T *argvars, typval_T *rettv UNUSED)
- {
- int id = (int)tv_get_number(argvars);
-+ win_T *wp = find_popup_win(id);
-
-! if (wp != NULL)
-! {
-! if (wp->w_close_cb.cb_name != NULL)
-! // Careful: This may make "wp" invalid.
-! invoke_popup_callback(wp, &argvars[1]);
-!
-! popup_close(id);
-! }
- }
-
- /*
-***************
-*** 688,693 ****
---- 736,742 ----
-
- /*
- * Close a popup window by Window-id.
-+ * Does not invoke the callback.
- */
- void
- popup_close(int id)
-*** ../vim-8.1.1445/src/structs.h 2019-06-01 22:15:10.211177120 +0200
---- src/structs.h 2019-06-01 22:36:44.253601570 +0200
-***************
-*** 2894,2899 ****
---- 2894,2900 ----
- int w_border_char[8]; // popup border characters
- varnumber_T w_popup_last_changedtick; // b:changedtick when position was
- // computed
-+ callback_T w_close_cb; // popup close callback
- callback_T w_filter_cb; // popup filter callback
- # if defined(FEAT_TIMERS)
- timer_T *w_popup_timer; // timer for closing popup window
-*** ../vim-8.1.1445/src/evalfunc.c 2019-06-01 13:28:30.265829531 +0200
---- src/evalfunc.c 2019-06-01 22:23:58.965206463 +0200
-***************
-*** 810,816 ****
- #endif
- #ifdef FEAT_TEXT_PROP
- {"popup_atcursor", 2, 2, f_popup_atcursor},
-! {"popup_close", 1, 1, f_popup_close},
- {"popup_create", 2, 2, f_popup_create},
- {"popup_getoptions", 1, 1, f_popup_getoptions},
- {"popup_getpos", 1, 1, f_popup_getpos},
---- 810,816 ----
- #endif
- #ifdef FEAT_TEXT_PROP
- {"popup_atcursor", 2, 2, f_popup_atcursor},
-! {"popup_close", 1, 2, f_popup_close},
- {"popup_create", 2, 2, f_popup_create},
- {"popup_getoptions", 1, 1, f_popup_getoptions},
- {"popup_getpos", 1, 1, f_popup_getpos},
-*** ../vim-8.1.1445/src/window.c 2019-06-01 22:15:10.215177111 +0200
---- src/window.c 2019-06-01 22:36:56.873539136 +0200
-***************
-*** 4845,4850 ****
---- 4845,4851 ----
- remove_winbar(wp);
- #endif
- #ifdef FEAT_TEXT_PROP
-+ free_callback(&wp->w_close_cb);
- free_callback(&wp->w_filter_cb);
- for (i = 0; i < 4; ++i)
- VIM_CLEAR(wp->w_border_highlight[i]);
-*** ../vim-8.1.1445/src/testdir/test_popupwin.vim 2019-06-01 22:15:10.215177111 +0200
---- src/testdir/test_popupwin.vim 2019-06-01 22:41:48.592082968 +0200
-***************
-*** 586,588 ****
---- 586,598 ----
- delfunc MyPopupFilter
- popupclear
- endfunc
-+
-+ func Test_popup_close_callback()
-+ func PopupDone(id, result)
-+ let g:result = a:result
-+ endfunc
-+ let winid = popup_create('something', {'callback': 'PopupDone'})
-+ redraw
-+ call popup_close(winid, 'done')
-+ call assert_equal('done', g:result)
-+ endfunc
-*** ../vim-8.1.1445/src/version.c 2019-06-01 22:15:10.215177111 +0200
---- src/version.c 2019-06-01 22:48:33.361971805 +0200
-***************
-*** 769,770 ****
---- 769,772 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1446,
- /**/
-
---
-hundred-and-one symptoms of being an internet addict:
-82. AT&T names you Customer of the Month for the third consecutive time.
-
- /// 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 ///