patch 9.1.1190: C indentation does not detect multibyte labels
Problem: C indentation does not detect multibyte labels
Solution: Correctly skip over multibyte characters
(Anttoni Erkkilä)
closes: #16770
Signed-off-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
Signed-off-by: Christian Brabandt <cb@256bit.org>
diff --git a/src/cindent.c b/src/cindent.c
index cf18441..2414b3f 100644
--- a/src/cindent.c
+++ b/src/cindent.c
@@ -405,7 +405,12 @@
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 0f0f9da..57f5206 100644
--- a/src/testdir/test_indent.vim
+++ b/src/testdir/test_indent.vim
@@ -109,6 +109,19 @@
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 af03cd9..fa05cd1 100644
--- a/src/version.c
+++ b/src/version.c
@@ -705,6 +705,8 @@
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1190,
+/**/
1189,
/**/
1188,