patch 9.1.1389: completion: still some issue when 'isexpand' contains a space
Commit: https://github.com/vim/vim/commit/08db2f4f287722d8fcdc00ab6ca9a1b07ec5faaa Author: glepnir <glephun...@gmail.com> Date: Wed May 14 20:26:19 2025 +0200 patch 9.1.1389: completion: still some issue when 'isexpand' contains a space Problem: Cannot get completion startcol when space is not the first trigger character (after v9.1.1383) Solution: Detect the next comma followed by a space in the option string and use in next compare loop (glepnir) closes: #17311 Signed-off-by: glepnir <glephun...@gmail.com> Signed-off-by: Christian Brabandt <c...@256bit.org> diff --git a/src/insexpand.c b/src/insexpand.c index 5f5a5b905..76fb8f350 100644 --- a/src/insexpand.c +++ b/src/insexpand.c @@ -3660,20 +3660,28 @@ f_complete_match(typval_T *argvars, typval_T *rettv) } else { - char_u *p = ise; + char_u *p = ise; + char_u *p_space = NULL; + cur_end = before_cursor + (int)STRLEN(before_cursor); while (*p != NUL) { int len = 0; - if (*p == ',' && *(p+1) == ' ' && (*(p+2) == ',' || *(p+2) == NUL)) + if (p_space) { - part[0] = ' '; - len = 1; - p++; + len = p - p_space - 1; + memcpy(part, p_space + 1, len); + p_space = NULL; } else + { + char_u *next_comma = vim_strchr((*p == ',') ? p + 1 : p, ','); + if (next_comma && *(next_comma + 1) == ' ') + p_space = next_comma; + len = copy_option_part(&p, part, MAXPATHL, ","); + } if (len > 0 && len <= col) { diff --git a/src/testdir/test_ins_complete.vim b/src/testdir/test_ins_complete.vim index 741cc9d9c..8bce0e457 100644 --- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -4507,6 +4507,13 @@ func Test_complete_match() set ise=\ ,= call feedkeys("Sif true \<ESC>:let g:result=complete_match()\<CR>", 'tx') call assert_equal([[8, ' ']], g:result) + call feedkeys("Slet a = \<ESC>:let g:result=complete_match()\<CR>", 'tx') + call assert_equal([[7, '=']], g:result) + set ise={,\ ,= + call feedkeys("Sif true \<ESC>:let g:result=complete_match()\<CR>", 'tx') + call assert_equal([[8, ' ']], g:result) + call feedkeys("S{ \<ESC>:let g:result=complete_match()\<CR>", 'tx') + call assert_equal([[1, '{']], g:result) bw! unlet g:result diff --git a/src/version.c b/src/version.c index 89c9fb0f3..98663991c 100644 --- a/src/version.c +++ b/src/version.c @@ -704,6 +704,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ +/**/ + 1389, /**/ 1388, /**/ -- -- You received this message from the "vim_dev" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_dev" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscr...@googlegroups.com. To view this discussion visit https://groups.google.com/d/msgid/vim_dev/E1uFGrx-00AatK-V4%40256bit.org.