Mercurial > vim
diff src/insexpand.c @ 23770:385d33dfb7df v8.2.2426
patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Commit: https://github.com/vim/vim/commit/28976e2accf11591c60e8a658a9e03544f0408b2
Author: Bram Moolenaar <Bram@vim.org>
Date: Fri Jan 29 21:07:07 2021 +0100
patch 8.2.2426: allowing 'completefunc' to switch windows causes trouble
Problem: Allowing 'completefunc' to switch windows causes trouble.
Solution: use "textwinlock" instead of "textlock".
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Fri, 29 Jan 2021 21:15:04 +0100 |
parents | 1371e21fdc3d |
children | f5225486d3de |
line wrap: on
line diff
--- a/src/insexpand.c +++ b/src/insexpand.c @@ -2218,9 +2218,10 @@ expand_by_function( pos = curwin->w_cursor; curwin_save = curwin; curbuf_save = curbuf; - // Lock the text to avoid weird things from happening. Do allow switching - // to another window temporarily. - ++textlock; + // Lock the text to avoid weird things from happening. Also disallow + // switching to another window, it should not be needed and may end up in + // Insert mode in another buffer. + ++textwinlock; // Call a function, which returns a list or dict. if (call_vim_function(funcname, 2, args, &rettv) == OK) @@ -2243,7 +2244,7 @@ expand_by_function( break; } } - --textlock; + --textwinlock; if (curwin_save != curwin || curbuf_save != curbuf) { @@ -3226,7 +3227,7 @@ ins_compl_next( return -1; if (compl_leader != NULL - && (compl_shown_match->cp_flags & CP_ORIGINAL_TEXT) == 0) + && (compl_shown_match->cp_flags & CP_ORIGINAL_TEXT) == 0) { // Set "compl_shown_match" to the actually shown match, it may differ // when "compl_leader" is used to omit some of the matches.