aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2025-03-10 07:43:27 +0800
committerGitHub <noreply@github.com>2025-03-09 23:43:27 +0000
commitb90f649ca2e240c1bfb22fe91247bc90314af1e1 (patch)
treec7ba7c502ae87b4f4dc705a80bd34226bfb43839
parent15f2da55a8ded9f1b7737cdd2d38c286fc581fd2 (diff)
downloadrneovim-b90f649ca2e240c1bfb22fe91247bc90314af1e1.tar.gz
rneovim-b90f649ca2e240c1bfb22fe91247bc90314af1e1.tar.bz2
rneovim-b90f649ca2e240c1bfb22fe91247bc90314af1e1.zip
vim-patch:9.1.1190: C indentation does not detect multibyte labels (#32808)
Problem: C indentation does not detect multibyte labels Solution: Correctly skip over multibyte characters (Anttoni Erkkilä) closes: vim/vim#16770 https://github.com/vim/vim/commit/f4d87ff8883e5076633ef0ab0cf4d6e4beaddc5c Co-authored-by: Anttoni Erkkilä <anttoni.erkkila@protonmail.com>
-rw-r--r--src/nvim/indent_c.c3
-rw-r--r--test/old/testdir/test_indent.vim13
2 files changed, 15 insertions, 1 deletions
diff --git a/src/nvim/indent_c.c b/src/nvim/indent_c.c
index c9b7a1ba3f..307e800be7 100644
--- a/src/nvim/indent_c.c
+++ b/src/nvim/indent_c.c
@@ -15,6 +15,7 @@
#include "nvim/macros_defs.h"
#include "nvim/mark_defs.h"
#include "nvim/math.h"
+#include "nvim/mbyte.h"
#include "nvim/memline.h"
#include "nvim/memory.h"
#include "nvim/option.h"
@@ -334,7 +335,7 @@ static bool cin_islabel_skip(const char **s)
}
while (vim_isIDc((uint8_t)(**s))) {
- (*s)++;
+ (*s) += utfc_ptr2len(*s);
}
*s = cin_skipcomment(*s);
diff --git a/test/old/testdir/test_indent.vim b/test/old/testdir/test_indent.vim
index 630beed810..5767890b08 100644
--- a/test/old/testdir/test_indent.vim
+++ b/test/old/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