summaryrefslogtreecommitdiff
path: root/data/vim/patches/8.1.1321
diff options
context:
space:
mode:
Diffstat (limited to 'data/vim/patches/8.1.1321')
-rw-r--r--data/vim/patches/8.1.1321405
1 files changed, 0 insertions, 405 deletions
diff --git a/data/vim/patches/8.1.1321 b/data/vim/patches/8.1.1321
deleted file mode 100644
index feb3fe874..000000000
--- a/data/vim/patches/8.1.1321
+++ /dev/null
@@ -1,405 +0,0 @@
-To: vim_dev@googlegroups.com
-Subject: Patch 8.1.1321
-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.1321
-Problem: No docs or tests for listener functions.
-Solution: Add help and tests for listener_add() and listener_remove().
- Invoke the callbacks before redrawing.
-Files: runtime/doc/eval.txt, runtime/doc/usr_41.txt,
- src/testdir/test_listener.vim, src/testdir/Make_all.mak,
- src/change.c, src/screen.c, src/evalfunc.c, src/proto/evalfunc.pro
-
-
-*** ../vim-8.1.1320/runtime/doc/eval.txt 2019-05-09 21:08:53.764083394 +0200
---- runtime/doc/eval.txt 2019-05-11 20:54:59.593866827 +0200
-***************
-*** 2457,2462 ****
---- 2457,2465 ----
- line2byte({lnum}) Number byte count of line {lnum}
- lispindent({lnum}) Number Lisp indent for line {lnum}
- list2str({list} [, {utf8}]) String turn numbers in {list} into a String
-+ listener_add({callback} [, {buf}])
-+ Number add a callback to listen to changes
-+ listener_remove({id}) none remove a listener callback
- localtime() Number current time
- log({expr}) Float natural logarithm (base e) of {expr}
- log10({expr}) Float logarithm of Float {expr} to base 10
-***************
-*** 6311,6316 ****
---- 6314,6366 ----
- With utf-8 composing characters work as expected: >
- list2str([97, 769]) returns "á"
- <
-+ listener_add({callback} [, {buf}]) *listener_add()*
-+ Add a callback function that will be invoked when changes have
-+ been made to buffer {buf}.
-+ {buf} refers to a buffer name or number. For the accepted
-+ values, see |bufname()|. When {buf} is omitted the current
-+ buffer is used.
-+ Returns a unique ID that can be passed to |listener_remove()|.
-+
-+ The {callback} is invoked with a list of items that indicate a
-+ change. Each list item is a dictionary with these entries:
-+ lnum the first line number of the change
-+ end the first line below the change
-+ added number of lines added; negative if lines were
-+ deleted
-+ col first column in "lnum" that was affected by
-+ the change; one if unknown or the whole line
-+ was affected; this is a byte index, first
-+ character has a value of one.
-+ When lines are inserted the values are:
-+ lnum line below which the new line is added
-+ end equal to "lnum"
-+ added number of lines inserted
-+ col one
-+ When lines are deleted the values are:
-+ lnum the first deleted line
-+ end the line below the first deleted line, before
-+ the deletion was done
-+ added negative, number of lines deleted
-+ col one
-+ When lines are changed:
-+ lnum the first changed line
-+ end the line below the last changed line
-+ added zero
-+ col first column with a change or one
-+
-+ The {callback} is invoked just before the screen is updated.
-+ To trigger this in a script use the `:redraw` command.
-+
-+ The {callback} is not invoked when the buffer is first loaded.
-+ Use the |BufReadPost| autocmd event to handle the initial text
-+ of a buffer.
-+ The {callback} is also not invoked when the buffer is
-+ unloaded, use the |BufUnload| autocmd event for that.
-+
-+ listener_remove({id}) *listener_remove()*
-+ Remove a listener previously added with listener_add().
-+
- localtime() *localtime()*
- Return the current time, measured as seconds since 1st Jan
- 1970. See also |strftime()| and |getftime()|.
-*** ../vim-8.1.1320/runtime/doc/usr_41.txt 2019-05-09 14:52:22.079358841 +0200
---- runtime/doc/usr_41.txt 2019-05-11 19:31:29.403995607 +0200
-***************
-*** 812,817 ****
---- 812,819 ----
- setbufline() replace a line in the specified buffer
- appendbufline() append a list of lines in the specified buffer
- deletebufline() delete lines from a specified buffer
-+ listener_add() add a callback to listen to changes
-+ listener_remove() remove a listener callback
- win_findbuf() find windows containing a buffer
- win_getid() get window ID of a window
- win_gotoid() go to window with ID
-*** ../vim-8.1.1320/src/testdir/test_listener.vim 2019-05-11 21:10:55.957195196 +0200
---- src/testdir/test_listener.vim 2019-05-11 20:52:44.750502230 +0200
-***************
-*** 0 ****
---- 1,77 ----
-+ " tests for listener_add() and listener_remove()
-+
-+ func StoreList(l)
-+ let g:list = a:l
-+ endfunc
-+
-+ func AnotherStoreList(l)
-+ let g:list2 = a:l
-+ endfunc
-+
-+ func EvilStoreList(l)
-+ let g:list3 = a:l
-+ call assert_fails("call add(a:l, 'myitem')", "E742:")
-+ endfunc
-+
-+ func Test_listening()
-+ new
-+ call setline(1, ['one', 'two'])
-+ let id = listener_add({l -> StoreList(l)})
-+ call setline(1, 'one one')
-+ redraw
-+ call assert_equal([{'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], g:list)
-+
-+ " Two listeners, both get called.
-+ let id2 = listener_add({l -> AnotherStoreList(l)})
-+ let g:list = []
-+ let g:list2 = []
-+ exe "normal $asome\<Esc>"
-+ redraw
-+ call assert_equal([{'lnum': 1, 'end': 2, 'col': 8, 'added': 0}], g:list)
-+ call assert_equal([{'lnum': 1, 'end': 2, 'col': 8, 'added': 0}], g:list2)
-+
-+ call listener_remove(id2)
-+ let g:list = []
-+ let g:list2 = []
-+ call setline(3, 'three')
-+ redraw
-+ call assert_equal([{'lnum': 3, 'end': 3, 'col': 1, 'added': 1}], g:list)
-+ call assert_equal([], g:list2)
-+
-+ " the "o" command first adds an empty line and then changes it
-+ let g:list = []
-+ exe "normal Gofour\<Esc>"
-+ redraw
-+ call assert_equal([{'lnum': 4, 'end': 4, 'col': 1, 'added': 1},
-+ \ {'lnum': 4, 'end': 5, 'col': 1, 'added': 0}], g:list)
-+
-+ let g:list = []
-+ call listener_remove(id)
-+ call setline(1, 'asdfasdf')
-+ redraw
-+ call assert_equal([], g:list)
-+
-+ " Trying to change the list fails
-+ let id = listener_add({l -> EvilStoreList(l)})
-+ let g:list3 = []
-+ call setline(1, 'asdfasdf')
-+ redraw
-+ call assert_equal([{'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], g:list3)
-+
-+ bwipe!
-+ endfunc
-+
-+ func Test_listening_other_buf()
-+ new
-+ call setline(1, ['one', 'two'])
-+ let bufnr = bufnr('')
-+ normal ww
-+ let id = listener_add({l -> StoreList(l)}, bufnr)
-+ let g:list = []
-+ call setbufline(bufnr, 1, 'hello')
-+ redraw
-+ call assert_equal([{'lnum': 1, 'end': 2, 'col': 1, 'added': 0}], g:list)
-+
-+ exe "buf " .. bufnr
-+ bwipe!
-+ endfunc
-*** ../vim-8.1.1320/src/testdir/Make_all.mak 2019-05-09 14:52:22.083358820 +0200
---- src/testdir/Make_all.mak 2019-05-11 19:33:38.615264428 +0200
-***************
-*** 168,173 ****
---- 168,174 ----
- test_lispwords \
- test_listchars \
- test_listdict \
-+ test_listener \
- test_listlbr \
- test_listlbr_utf8 \
- test_lua \
-***************
-*** 359,364 ****
---- 360,366 ----
- test_lineending.res \
- test_listchars.res \
- test_listdict.res \
-+ test_listener.res \
- test_listlbr.res \
- test_lua.res \
- test_makeencoding.res \
-*** ../vim-8.1.1320/src/change.c 2019-05-11 19:14:11.585314006 +0200
---- src/change.c 2019-05-11 21:13:09.368532894 +0200
-***************
-*** 184,190 ****
- dict_add_number(dict, "lnum", (varnumber_T)lnum);
- dict_add_number(dict, "end", (varnumber_T)lnume);
- dict_add_number(dict, "added", (varnumber_T)xtra);
-! dict_add_number(dict, "col", (varnumber_T)col);
-
- list_append_dict(recorded_changes, dict);
- }
---- 184,190 ----
- dict_add_number(dict, "lnum", (varnumber_T)lnum);
- dict_add_number(dict, "end", (varnumber_T)lnume);
- dict_add_number(dict, "added", (varnumber_T)xtra);
-! dict_add_number(dict, "col", (varnumber_T)col + 1);
-
- list_append_dict(recorded_changes, dict);
- }
-***************
-*** 198,216 ****
- char_u *callback;
- partial_T *partial;
- listener_T *lnr;
-
- callback = get_callback(&argvars[0], &partial);
- if (callback == NULL)
- return;
-
- lnr = (listener_T *)alloc_clear((sizeof(listener_T)));
- if (lnr == NULL)
- {
- free_callback(callback, partial);
- return;
- }
-! lnr->lr_next = curbuf->b_listener;
-! curbuf->b_listener = lnr;
-
- if (partial == NULL)
- lnr->lr_callback = vim_strsave(callback);
---- 198,224 ----
- char_u *callback;
- partial_T *partial;
- listener_T *lnr;
-+ buf_T *buf = curbuf;
-
- callback = get_callback(&argvars[0], &partial);
- if (callback == NULL)
- return;
-
-+ if (argvars[1].v_type != VAR_UNKNOWN)
-+ {
-+ buf = get_buf_arg(&argvars[1]);
-+ if (buf == NULL)
-+ return;
-+ }
-+
- lnr = (listener_T *)alloc_clear((sizeof(listener_T)));
- if (lnr == NULL)
- {
- free_callback(callback, partial);
- return;
- }
-! lnr->lr_next = buf->b_listener;
-! buf->b_listener = lnr;
-
- if (partial == NULL)
- lnr->lr_callback = vim_strsave(callback);
-***************
-*** 232,253 ****
- listener_T *next;
- listener_T *prev = NULL;
- int id = tv_get_number(argvars);
-! buf_T *buf = curbuf;
-
-! for (lnr = buf->b_listener; lnr != NULL; lnr = next)
-! {
-! next = lnr->lr_next;
-! if (lnr->lr_id == id)
- {
-! if (prev != NULL)
-! prev->lr_next = lnr->lr_next;
-! else
-! buf->b_listener = lnr->lr_next;
-! free_callback(lnr->lr_callback, lnr->lr_partial);
-! vim_free(lnr);
- }
-- prev = lnr;
-- }
- }
-
- /*
---- 240,262 ----
- listener_T *next;
- listener_T *prev = NULL;
- int id = tv_get_number(argvars);
-! buf_T *buf;
-
-! for (buf = firstbuf; buf != NULL; buf = buf->b_next)
-! for (lnr = buf->b_listener; lnr != NULL; lnr = next)
- {
-! next = lnr->lr_next;
-! if (lnr->lr_id == id)
-! {
-! if (prev != NULL)
-! prev->lr_next = lnr->lr_next;
-! else
-! buf->b_listener = lnr->lr_next;
-! free_callback(lnr->lr_callback, lnr->lr_partial);
-! vim_free(lnr);
-! }
-! prev = lnr;
- }
- }
-
- /*
-*** ../vim-8.1.1320/src/screen.c 2019-05-09 15:12:45.176723907 +0200
---- src/screen.c 2019-05-11 19:53:53.403623537 +0200
-***************
-*** 564,569 ****
---- 564,574 ----
- type = 0;
- }
-
-+ #ifdef FEAT_EVAL
-+ // Before updating the screen, notify any listeners of changed text.
-+ invoke_listeners();
-+ #endif
-+
- if (must_redraw)
- {
- if (type < must_redraw) /* use maximal type */
-*** ../vim-8.1.1320/src/evalfunc.c 2019-05-11 18:28:41.351611622 +0200
---- src/evalfunc.c 2019-05-11 20:44:57.028591441 +0200
-***************
-*** 2009,2020 ****
- return buf;
- }
-
-- #ifdef FEAT_SIGNS
- /*
- * Get the buffer from "arg" and give an error and return NULL if it is not
- * valid.
- */
-! static buf_T *
- get_buf_arg(typval_T *arg)
- {
- buf_T *buf;
---- 2009,2019 ----
- return buf;
- }
-
- /*
- * Get the buffer from "arg" and give an error and return NULL if it is not
- * valid.
- */
-! buf_T *
- get_buf_arg(typval_T *arg)
- {
- buf_T *buf;
-***************
-*** 2026,2032 ****
- semsg(_("E158: Invalid buffer name: %s"), tv_get_string(arg));
- return buf;
- }
-- #endif
-
- /*
- * "bufname(expr)" function
---- 2025,2030 ----
-*** ../vim-8.1.1320/src/proto/evalfunc.pro 2019-01-03 22:19:22.227686199 +0100
---- src/proto/evalfunc.pro 2019-05-11 20:45:17.040507331 +0200
-***************
-*** 5,10 ****
---- 5,11 ----
- int call_internal_func(char_u *name, int argcount, typval_T *argvars, typval_T *rettv);
- buf_T *buflist_find_by_name(char_u *name, int curtab_only);
- buf_T *tv_get_buf(typval_T *tv, int curtab_only);
-+ buf_T *get_buf_arg(typval_T *arg);
- void execute_redir_str(char_u *value, int value_len);
- void mzscheme_call_vim(char_u *name, typval_T *args, typval_T *rettv);
- float_T vim_round(float_T f);
-*** ../vim-8.1.1320/src/version.c 2019-05-11 19:14:11.589313987 +0200
---- src/version.c 2019-05-11 19:37:27.213616239 +0200
-***************
-*** 769,770 ****
---- 769,772 ----
- { /* Add new patch number below this line */
-+ /**/
-+ 1321,
- /**/
-
---
-System administrators are just like women: You can't live with them and you
-can't live without them.
-
- /// 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 ///