aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/edit.c
diff options
context:
space:
mode:
authorcangscop <cangscop@gmail.com>2019-07-27 03:13:29 +0200
committercangscop <cangscop@gmail.com>2019-07-27 16:25:33 +0200
commit0364e47ccb8705d48146f00d68506d5f9cefb0aa (patch)
treea3d527e3440f29b6babcc7a80cd43c77445f73cb /src/nvim/edit.c
parent0b4123668af65b489e188dfb1041e664a4ee3915 (diff)
downloadrneovim-0364e47ccb8705d48146f00d68506d5f9cefb0aa.tar.gz
rneovim-0364e47ccb8705d48146f00d68506d5f9cefb0aa.tar.bz2
rneovim-0364e47ccb8705d48146f00d68506d5f9cefb0aa.zip
vim-patch:8.1.53 use typval_T in the caller of call_vim_function
Problem: unreliable types for complete function arguments Solution: fix argument type for functions w/ unreliable type conversion(Ozaki Kiichi) vim/vim#2993
Diffstat (limited to 'src/nvim/edit.c')
-rw-r--r--src/nvim/edit.c19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/nvim/edit.c b/src/nvim/edit.c
index 6355000175..22bcfb6d16 100644
--- a/src/nvim/edit.c
+++ b/src/nvim/edit.c
@@ -3682,14 +3682,19 @@ expand_by_function (
return;
// Call 'completefunc' to obtain the list of matches.
- const char_u *const args[2] = { (char_u *)"0", base };
+ typval_T args[3];
+ args[0].v_type = VAR_NUMBER;
+ args[1].v_type = VAR_STRING;
+ args[2].v_type = VAR_UNKNOWN;
+ args[0].vval.v_number = 0;
+ args[1].vval.v_string = base != NULL ? base : (char_u *)"";
pos = curwin->w_cursor;
curwin_save = curwin;
curbuf_save = curbuf;
- /* Call a function, which returns a list or dict. */
- if (call_vim_function(funcname, 2, args, FALSE, FALSE, &rettv) == OK) {
+ // Call a function, which returns a list or dict.
+ if (call_vim_function(funcname, 2, args, false, &rettv) == OK) {
switch (rettv.v_type) {
case VAR_LIST:
matchlist = rettv.vval.v_list;
@@ -4892,7 +4897,13 @@ static int ins_complete(int c, bool enable_pum)
return FAIL;
}
- const char_u *const args[2] = { (char_u *)"1", NULL };
+ typval_T args[3];
+ args[0].v_type = VAR_NUMBER;
+ args[1].v_type = VAR_STRING;
+ args[2].v_type = VAR_UNKNOWN;
+ args[0].vval.v_number = 1;
+ args[1].vval.v_string = (char_u *)"";
+
pos = curwin->w_cursor;
curwin_save = curwin;
curbuf_save = curbuf;