mirror of
https://github.com/neovim/neovim.git
synced 2025-09-18 17:28:23 +00:00
vim-patch:8.1.1732: completion in cmdwin does not work for buffer-local commands
Problem: Completion in cmdwin does not work for buffer-local commands.
Solution: Use the right buffer. (closes vim/vim#4711)
f03e328348
This commit is contained in:
@@ -5133,9 +5133,11 @@ static void uc_list(char_u *name, size_t name_len)
|
||||
ucmd_T *cmd;
|
||||
int len;
|
||||
uint32_t a;
|
||||
garray_T *gap;
|
||||
|
||||
gap = &curbuf->b_ucmds;
|
||||
// In cmdwin, the alternative buffer should be used.
|
||||
garray_T *gap = (cmdwin_type != 0 && get_cmdline_type() == NUL)
|
||||
? &prevwin->w_buffer->b_ucmds
|
||||
: &curbuf->b_ucmds;
|
||||
for (;; ) {
|
||||
for (i = 0; i < gap->ga_len; ++i) {
|
||||
cmd = USER_CMD_GA(gap, i);
|
||||
@@ -5984,13 +5986,21 @@ char_u *get_user_cmd_addr_type(expand_T *xp, int idx)
|
||||
/*
|
||||
* Function given to ExpandGeneric() to obtain the list of user command names.
|
||||
*/
|
||||
char_u *get_user_commands(expand_T *xp, int idx)
|
||||
char_u *get_user_commands(expand_T *xp FUNC_ATTR_UNUSED, int idx)
|
||||
FUNC_ATTR_PURE FUNC_ATTR_WARN_UNUSED_RESULT
|
||||
{
|
||||
if (idx < curbuf->b_ucmds.ga_len)
|
||||
return USER_CMD_GA(&curbuf->b_ucmds, idx)->uc_name;
|
||||
idx -= curbuf->b_ucmds.ga_len;
|
||||
if (idx < ucmds.ga_len)
|
||||
// In cmdwin, the alternative buffer should be used.
|
||||
const buf_T *const buf = (cmdwin_type != 0 && get_cmdline_type() == NUL)
|
||||
? prevwin->w_buffer
|
||||
: curbuf;
|
||||
|
||||
if (idx < buf->b_ucmds.ga_len) {
|
||||
return USER_CMD_GA(&buf->b_ucmds, idx)->uc_name;
|
||||
}
|
||||
idx -= buf->b_ucmds.ga_len;
|
||||
if (idx < ucmds.ga_len) {
|
||||
return USER_CMD(idx)->uc_name;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user