From: glepnir Date: Wed, 14 May 2025 18:26:19 +0000 (+0200) Subject: patch 9.1.1389: completion: still some issue when 'isexpand' contains a space X-Git-Tag: v9.1.1389^0 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=08db2f4f287722d8fcdc00ab6ca9a1b07ec5faaa;p=thirdparty%2Fvim.git 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 Signed-off-by: Christian Brabandt --- diff --git a/src/insexpand.c b/src/insexpand.c index 5f5a5b9057..76fb8f3506 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 741cc9d9c9..8bce0e4573 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 \:let g:result=complete_match()\", 'tx') call assert_equal([[8, ' ']], g:result) + call feedkeys("Slet a = \:let g:result=complete_match()\", 'tx') + call assert_equal([[7, '=']], g:result) + set ise={,\ ,= + call feedkeys("Sif true \:let g:result=complete_match()\", 'tx') + call assert_equal([[8, ' ']], g:result) + call feedkeys("S{ \:let g:result=complete_match()\", 'tx') + call assert_equal([[1, '{']], g:result) bw! unlet g:result diff --git a/src/version.c b/src/version.c index 89c9fb0f3f..98663991c4 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, /**/