From f4d87ff8883e5076633ef0ab0cf4d6e4beaddc5c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Anttoni=20Erkkil=C3=A4?= Date: Sun, 9 Mar 2025 16:07:15 +0100 Subject: [PATCH] patch 9.1.1190: C indentation does not detect multibyte labels MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Problem: C indentation does not detect multibyte labels Solution: Correctly skip over multibyte characters (Anttoni Erkkilä) closes: #16770 Signed-off-by: Anttoni Erkkilä Signed-off-by: Christian Brabandt --- src/cindent.c | 7 ++++++- src/testdir/test_indent.vim | 13 +++++++++++++ src/version.c | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/cindent.c b/src/cindent.c index cf18441f60..2414b3fad5 100644 --- a/src/cindent.c +++ b/src/cindent.c @@ -405,7 +405,12 @@ cin_islabel_skip(char_u **s) return FALSE; while (vim_isIDc(**s)) - (*s)++; + { + if (has_mbyte) + (*s) += (*mb_ptr2len)(*s); + else + (*s)++; + } *s = cin_skipcomment(*s); diff --git a/src/testdir/test_indent.vim b/src/testdir/test_indent.vim index 0f0f9da8be..57f5206e77 100644 --- a/src/testdir/test_indent.vim +++ b/src/testdir/test_indent.vim @@ -109,6 +109,19 @@ func Test_preproc_indent() close! endfunc +func Test_userlabel_indent() + new + call setline(1, ['{', 'label:']) + normal GV= + call assert_equal('label:', getline(2)) + + call setline(2, 'läbél:') + normal GV= + call assert_equal('läbél:', getline(2)) + + close! +endfunc + " Test for 'copyindent' func Test_copyindent() new diff --git a/src/version.c b/src/version.c index af03cd9dd5..fa05cd1741 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 */ +/**/ + 1190, /**/ 1189, /**/ -- 2.47.2