Mercurial > vim
comparison src/evalfunc.c @ 13101:9b3f8029a326 v8.0.1425
patch 8.0.1425: execute() does not work in completion of user command
commit https://github.com/vim/vim/commit/2095148277cf1c4e7b3bbaf4e34812b7cfe3011b
Author: Bram Moolenaar <Bram@vim.org>
Date: Mon Dec 25 13:44:43 2017 +0100
patch 8.0.1425: execute() does not work in completion of user command
Problem: execute() does not work in completion of user command. (thinca)
Solution: Switch off redir_off and restore it. (Ozaki Kiichi, closes https://github.com/vim/vim/issues/2492)
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Mon, 25 Dec 2017 13:45:05 +0100 |
parents | 3dd37eec73f0 |
children | aaead5b4d77d |
comparison
equal
deleted
inserted
replaced
13100:656ab57d1ddc | 13101:9b3f8029a326 |
---|---|
2884 list_T *list = NULL; | 2884 list_T *list = NULL; |
2885 int save_msg_silent = msg_silent; | 2885 int save_msg_silent = msg_silent; |
2886 int save_emsg_silent = emsg_silent; | 2886 int save_emsg_silent = emsg_silent; |
2887 int save_emsg_noredir = emsg_noredir; | 2887 int save_emsg_noredir = emsg_noredir; |
2888 int save_redir_execute = redir_execute; | 2888 int save_redir_execute = redir_execute; |
2889 int save_redir_off = redir_off; | |
2889 garray_T save_ga; | 2890 garray_T save_ga; |
2890 | 2891 |
2891 rettv->vval.v_string = NULL; | 2892 rettv->vval.v_string = NULL; |
2892 rettv->v_type = VAR_STRING; | 2893 rettv->v_type = VAR_STRING; |
2893 | 2894 |
2926 | 2927 |
2927 if (redir_execute) | 2928 if (redir_execute) |
2928 save_ga = redir_execute_ga; | 2929 save_ga = redir_execute_ga; |
2929 ga_init2(&redir_execute_ga, (int)sizeof(char), 500); | 2930 ga_init2(&redir_execute_ga, (int)sizeof(char), 500); |
2930 redir_execute = TRUE; | 2931 redir_execute = TRUE; |
2932 redir_off = FALSE; | |
2931 | 2933 |
2932 if (cmd != NULL) | 2934 if (cmd != NULL) |
2933 do_cmdline_cmd(cmd); | 2935 do_cmdline_cmd(cmd); |
2934 else | 2936 else |
2935 { | 2937 { |
2956 emsg_noredir = save_emsg_noredir; | 2958 emsg_noredir = save_emsg_noredir; |
2957 | 2959 |
2958 redir_execute = save_redir_execute; | 2960 redir_execute = save_redir_execute; |
2959 if (redir_execute) | 2961 if (redir_execute) |
2960 redir_execute_ga = save_ga; | 2962 redir_execute_ga = save_ga; |
2963 redir_off = save_redir_off; | |
2961 | 2964 |
2962 /* "silent reg" or "silent echo x" leaves msg_col somewhere in the | 2965 /* "silent reg" or "silent echo x" leaves msg_col somewhere in the |
2963 * line. Put it back in the first column. */ | 2966 * line. Put it back in the first column. */ |
2964 msg_col = 0; | 2967 msg_col = 0; |
2965 } | 2968 } |