summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1138
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1138')
-rw-r--r--data/vim/patches/8.1.1138414
1 files changed, 0 insertions, 414 deletions
diff --git a/data/vim/patches/8.1.1138 b/data/vim/patches/8.1.1138
deleted file mode 100644
index 7d100919f..000000000
--- a/data/vim/patches/8.1.1138
+++ /dev/null
@@ -1,414 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1138
-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.1138
-Problem: Plugins don't get notified when the popup menu changes.
-Solution: Add the CompleteChanged event. (Andy Massimino. closes #4176)
-Files: runtime/doc/autocmd.txt, src/autocmd.c, src/dict.c,
- src/insexpand.c, src/popupmnu.c, src/proto/autocmd.pro,
- src/proto/dict.pro, src/proto/popupmnu.pro,
- src/testdir/test_popup.vim, src/vim.h
-
-
-*** ../vim-8.1.1137/runtime/doc/autocmd.txt 2019-04-04 15:04:32.962792211 +0200
---- runtime/doc/autocmd.txt 2019-04-08 18:00:41.100946679 +0200
-***************
-*** 365,370 ****
---- 367,373 ----
- |SessionLoadPost| after loading a session file
-
- |MenuPopup| just before showing the popup menu
-+ |CompleteChanged| after Insert mode completion menu changed
- |CompleteDone| after Insert mode completion is done
-
- |User| to be used in combination with ":doautocmd"
-***************
-*** 577,583 ****
---- 580,601 ----
- ColorSchemePre Before loading a color scheme. |:colorscheme|
- Useful to setup removing things added by a
- color scheme, before another one is loaded.
-+ CompleteChanged *CompleteChanged*
-+ After each time the Insert mode completion
-+ menu changed. Not fired on popup menu hide,
-+ use |CompleteDone| for that. Never triggered
-+ recursively.
-+
-+ Sets these |v:event| keys:
-+ completed_item
-+ height nr of items visible
-+ width screen cells
-+ row top screen row
-+ col leftmost screen column
-+ size total nr of items
-+ scrollbar TRUE if visible
-
-+ It is not allowed to change the text |textlock|.
- *CompleteDone*
- CompleteDone After Insert mode completion is done. Either
- when something was completed or abandoning
-*** ../vim-8.1.1137/src/autocmd.c 2019-04-04 15:40:53.011337945 +0200
---- src/autocmd.c 2019-04-08 17:45:52.897440559 +0200
-***************
-*** 112,117 ****
---- 112,118 ----
- {"CmdUndefined", EVENT_CMDUNDEFINED},
- {"ColorScheme", EVENT_COLORSCHEME},
- {"ColorSchemePre", EVENT_COLORSCHEMEPRE},
-+ {"CompleteChanged", EVENT_COMPLETECHANGED},
- {"CompleteDone", EVENT_COMPLETEDONE},
- {"CursorHold", EVENT_CURSORHOLD},
- {"CursorHoldI", EVENT_CURSORHOLDI},
-***************
-*** 1794,1799 ****
---- 1795,1811 ----
- }
- #endif
-
-+ #if defined(FEAT_EVAL) || defined(PROTO)
-+ /*
-+ * Return TRUE when there is a CompleteChanged autocommand defined.
-+ */
-+ int
-+ has_completechanged(void)
-+ {
-+ return (first_autopat[(int)EVENT_COMPLETECHANGED] != NULL);
-+ }
-+ #endif
-+
- /*
- * Execute autocommands for "event" and file name "fname".
- * Return TRUE if some commands were executed.
-*** ../vim-8.1.1137/src/dict.c 2019-02-11 22:00:07.667917634 +0100
---- src/dict.c 2019-04-08 17:45:52.897440559 +0200
-***************
-*** 342,359 ****
- }
-
- /*
-! * Add a number entry to dictionary "d".
- * Returns FAIL when out of memory and when key already exists.
- */
-! int
-! dict_add_number(dict_T *d, char *key, varnumber_T nr)
- {
- dictitem_T *item;
-
- item = dictitem_alloc((char_u *)key);
- if (item == NULL)
- return FAIL;
-! item->di_tv.v_type = VAR_NUMBER;
- item->di_tv.vval.v_number = nr;
- if (dict_add(d, item) == FAIL)
- {
---- 342,359 ----
- }
-
- /*
-! * Add a number or special entry to dictionary "d".
- * Returns FAIL when out of memory and when key already exists.
- */
-! static int
-! dict_add_number_special(dict_T *d, char *key, varnumber_T nr, int special)
- {
- dictitem_T *item;
-
- item = dictitem_alloc((char_u *)key);
- if (item == NULL)
- return FAIL;
-! item->di_tv.v_type = special ? VAR_SPECIAL : VAR_NUMBER;
- item->di_tv.vval.v_number = nr;
- if (dict_add(d, item) == FAIL)
- {
-***************
-*** 364,369 ****
---- 364,389 ----
- }
-
- /*
-+ * Add a number entry to dictionary "d".
-+ * Returns FAIL when out of memory and when key already exists.
-+ */
-+ int
-+ dict_add_number(dict_T *d, char *key, varnumber_T nr)
-+ {
-+ return dict_add_number_special(d, key, nr, FALSE);
-+ }
-+
-+ /*
-+ * Add a special entry to dictionary "d".
-+ * Returns FAIL when out of memory and when key already exists.
-+ */
-+ int
-+ dict_add_special(dict_T *d, char *key, varnumber_T nr)
-+ {
-+ return dict_add_number_special(d, key, nr, TRUE);
-+ }
-+
-+ /*
- * Add a string entry to dictionary "d".
- * Returns FAIL when out of memory and when key already exists.
- */
-*** ../vim-8.1.1137/src/insexpand.c 2019-04-06 14:22:17.754642647 +0200
---- src/insexpand.c 2019-04-08 18:09:25.454100998 +0200
-***************
-*** 203,208 ****
---- 203,209 ----
- static void ins_compl_add_list(list_T *list);
- static void ins_compl_add_dict(dict_T *dict);
- # endif
-+ static dict_T *ins_compl_dict_alloc(compl_T *match);
- static int ins_compl_key2dir(int c);
- static int ins_compl_pum_key(int c);
- static int ins_compl_key2count(int c);
-***************
-*** 994,999 ****
---- 995,1031 ----
- return (i >= 2);
- }
-
-+ static void
-+ trigger_complete_changed_event(int cur)
-+ {
-+ dict_T *v_event;
-+ dict_T *item;
-+ static int recursive = FALSE;
-+
-+ if (recursive)
-+ return;
-+
-+ v_event = get_vim_var_dict(VV_EVENT);
-+ if (cur < 0)
-+ item = dict_alloc();
-+ else
-+ item = ins_compl_dict_alloc(compl_curr_match);
-+ if (item == NULL)
-+ return;
-+ dict_add_dict(v_event, "completed_item", item);
-+ pum_set_event_info(v_event);
-+ dict_set_items_ro(v_event);
-+
-+ recursive = TRUE;
-+ textlock++;
-+ apply_autocmds(EVENT_COMPLETECHANGED, NULL, NULL, FALSE, curbuf);
-+ textlock--;
-+ recursive = FALSE;
-+
-+ dict_free_contents(v_event);
-+ hash_init(&v_event->dv_hashtab);
-+ }
-+
- /*
- * Show the popup menu for the list of matches.
- * Also adjusts "compl_shown_match" to an entry that is actually displayed.
-***************
-*** 1136,1141 ****
---- 1168,1176 ----
- curwin->w_cursor.col = compl_col;
- pum_display(compl_match_array, compl_match_arraysize, cur);
- curwin->w_cursor.col = col;
-+
-+ if (has_completechanged())
-+ trigger_complete_changed_event(cur);
- }
- }
-
-***************
-*** 2899,2921 ****
- compl_used_match = FALSE;
- else
- compl_used_match = TRUE;
-
-- // Set completed item.
-- // { word, abbr, menu, kind, info }
-- dict = dict_alloc_lock(VAR_FIXED);
- if (dict != NULL)
- {
-! dict_add_string(dict, "word", compl_shown_match->cp_str);
-! dict_add_string(dict, "abbr", compl_shown_match->cp_text[CPT_ABBR]);
-! dict_add_string(dict, "menu", compl_shown_match->cp_text[CPT_MENU]);
-! dict_add_string(dict, "kind", compl_shown_match->cp_text[CPT_KIND]);
-! dict_add_string(dict, "info", compl_shown_match->cp_text[CPT_INFO]);
-! dict_add_string(dict, "user_data",
-! compl_shown_match->cp_text[CPT_USER_DATA]);
- }
-! set_vim_var_dict(VV_COMPLETED_ITEM, dict);
-! if (!in_compl_func)
-! compl_curr_match = compl_shown_match;
- }
-
- /*
---- 2934,2964 ----
- compl_used_match = FALSE;
- else
- compl_used_match = TRUE;
-+ dict = ins_compl_dict_alloc(compl_shown_match);
-+ set_vim_var_dict(VV_COMPLETED_ITEM, dict);
-+ if (!in_compl_func)
-+ compl_curr_match = compl_shown_match;
-+ }
-+
-+ /*
-+ * Allocate Dict for the completed item.
-+ * { word, abbr, menu, kind, info }
-+ */
-+ static dict_T *
-+ ins_compl_dict_alloc(compl_T *match)
-+ {
-+ dict_T *dict = dict_alloc_lock(VAR_FIXED);
-
- if (dict != NULL)
- {
-! dict_add_string(dict, "word", match->cp_str);
-! dict_add_string(dict, "abbr", match->cp_text[CPT_ABBR]);
-! dict_add_string(dict, "menu", match->cp_text[CPT_MENU]);
-! dict_add_string(dict, "kind", match->cp_text[CPT_KIND]);
-! dict_add_string(dict, "info", match->cp_text[CPT_INFO]);
-! dict_add_string(dict, "user_data", match->cp_text[CPT_USER_DATA]);
- }
-! return dict;
- }
-
- /*
-*** ../vim-8.1.1137/src/popupmnu.c 2019-03-02 10:13:36.796974835 +0100
---- src/popupmnu.c 2019-04-08 18:05:53.751263571 +0200
-***************
-*** 923,928 ****
---- 923,944 ----
- return pum_height;
- }
-
-+ /*
-+ * Add size information about the pum to "dict".
-+ */
-+ void
-+ pum_set_event_info(dict_T *dict)
-+ {
-+ if (!pum_visible())
-+ return;
-+ dict_add_number(dict, "height", pum_height);
-+ dict_add_number(dict, "width", pum_width);
-+ dict_add_number(dict, "row", pum_row);
-+ dict_add_number(dict, "col", pum_col);
-+ dict_add_number(dict, "size", pum_size);
-+ dict_add_special(dict, "scrollbar", pum_scrollbar ? VVAL_TRUE : VVAL_FALSE);
-+ }
-+
- # if defined(FEAT_BEVAL_TERM) || defined(FEAT_TERM_POPUP_MENU) || defined(PROTO)
- static void
- pum_position_at_mouse(int min_width)
-*** ../vim-8.1.1137/src/proto/autocmd.pro 2019-01-26 16:20:44.264683546 +0100
---- src/proto/autocmd.pro 2019-04-08 18:01:19.088781927 +0200
-***************
-*** 26,31 ****
---- 26,32 ----
- int has_cmdundefined(void);
- int has_funcundefined(void);
- int has_textyankpost(void);
-+ int has_completechanged(void);
- void block_autocmds(void);
- void unblock_autocmds(void);
- int is_autocmd_blocked(void);
-*** ../vim-8.1.1137/src/proto/dict.pro 2018-12-26 22:57:37.978550895 +0100
---- src/proto/dict.pro 2019-04-08 17:45:52.905440501 +0200
-***************
-*** 14,19 ****
---- 14,20 ----
- dict_T *dict_copy(dict_T *orig, int deep, int copyID);
- int dict_add(dict_T *d, dictitem_T *item);
- int dict_add_number(dict_T *d, char *key, varnumber_T nr);
-+ int dict_add_special(dict_T *d, char *key, varnumber_T nr);
- int dict_add_string(dict_T *d, char *key, char_u *str);
- int dict_add_string_len(dict_T *d, char *key, char_u *str, int len);
- int dict_add_list(dict_T *d, char *key, list_T *list);
-*** ../vim-8.1.1137/src/proto/popupmnu.pro 2019-01-17 21:09:02.045706371 +0100
---- src/proto/popupmnu.pro 2019-04-08 18:06:01.919216971 +0200
-***************
-*** 8,13 ****
---- 8,14 ----
- int pum_visible(void);
- void pum_may_redraw(void);
- int pum_get_height(void);
-+ void pum_set_event_info(dict_T *dict);
- int split_message(char_u *mesg, pumitem_T **array);
- void ui_remove_balloon(void);
- void ui_post_balloon(char_u *mesg, list_T *list);
-*** ../vim-8.1.1137/src/testdir/test_popup.vim 2019-04-06 13:45:51.568756943 +0200
---- src/testdir/test_popup.vim 2019-04-08 17:45:52.909440473 +0200
-***************
-*** 1029,1032 ****
---- 1029,1066 ----
- bwipe!
- endfunc
-
-+ func Test_CompleteChanged()
-+ new
-+ call setline(1, ['foo', 'bar', 'foobar', ''])
-+ set complete=. completeopt=noinsert,noselect,menuone
-+ function! OnPumChange()
-+ let g:event = copy(v:event)
-+ let g:item = get(v:event, 'completed_item', {})
-+ let g:word = get(g:item, 'word', v:null)
-+ endfunction
-+ augroup AAAAA_Group
-+ au!
-+ autocmd CompleteChanged * :call OnPumChange()
-+ augroup END
-+ call cursor(4, 1)
-+
-+ call feedkeys("Sf\<C-N>", 'tx')
-+ call assert_equal({'completed_item': {}, 'width': 15,
-+ \ 'height': 2, 'size': 2,
-+ \ 'col': 0, 'row': 4, 'scrollbar': v:false}, g:event)
-+ call feedkeys("a\<C-N>\<C-N>\<C-E>", 'tx')
-+ call assert_equal('foo', g:word)
-+ call feedkeys("a\<C-N>\<C-N>\<C-N>\<C-E>", 'tx')
-+ call assert_equal('foobar', g:word)
-+ call feedkeys("a\<C-N>\<C-N>\<C-N>\<C-N>\<C-E>", 'tx')
-+ call assert_equal(v:null, g:word)
-+ call feedkeys("a\<C-N>\<C-N>\<C-N>\<C-N>\<C-P>", 'tx')
-+ call assert_equal('foobar', g:word)
-+
-+ autocmd! AAAAA_Group
-+ set complete& completeopt&
-+ delfunc! OnPumchange
-+ bw!
-+ endfunc
-+
- " vim: shiftwidth=2 sts=2 expandtab
-*** ../vim-8.1.1137/src/vim.h 2019-04-02 22:15:51.348273497 +0200
---- src/vim.h 2019-04-08 17:45:52.909440473 +0200
-***************
-*** 1270,1275 ****
---- 1270,1276 ----
- EVENT_CMDWINLEAVE, // before leaving the cmdline window
- EVENT_COLORSCHEME, // after loading a colorscheme
- EVENT_COLORSCHEMEPRE, // before loading a colorscheme
-+ EVENT_COMPLETECHANGED, // after completion popup menu changed
- EVENT_COMPLETEDONE, // after finishing insert complete
- EVENT_CURSORHOLD, // cursor in same position for a while
- EVENT_CURSORHOLDI, // idem, in Insert mode
-*** ../vim-8.1.1137/src/version.c 2019-04-07 21:55:03.736116273 +0200
---- src/version.c 2019-04-08 18:14:25.904569298 +0200
-***************
-*** 773,774 ****
---- 773,776 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1138,
- /**/
-
---
-hundred-and-one symptoms of being an internet addict:
-230. You spend your Friday nights typing away at your keyboard
-
- /// 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 ///