mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
fix(folds): fix fold marker multibyte comparison (#20439)
This commit is contained in:
parent
dd1c613d0b
commit
0643645d5c
@ -3012,7 +3012,7 @@ static void foldlevelMarker(fline_T *flp)
|
||||
|
||||
char *s = ml_get_buf(flp->wp->w_buffer, flp->lnum + flp->off, false);
|
||||
while (*s) {
|
||||
if (*s == cstart
|
||||
if ((unsigned char)(*s) == cstart
|
||||
&& STRNCMP(s + 1, startmarker, foldstartmarkerlen - 1) == 0) {
|
||||
// found startmarker: set flp->lvl
|
||||
s += foldstartmarkerlen;
|
||||
@ -3032,8 +3032,8 @@ static void foldlevelMarker(fline_T *flp)
|
||||
flp->lvl_next++;
|
||||
flp->start++;
|
||||
}
|
||||
} else if (*s == cend && STRNCMP(s + 1, foldendmarker + 1,
|
||||
foldendmarkerlen - 1) == 0) {
|
||||
} else if ((unsigned char)(*s) == cend
|
||||
&& STRNCMP(s + 1, foldendmarker + 1, foldendmarkerlen - 1) == 0) {
|
||||
// found endmarker: set flp->lvl_next
|
||||
s += foldendmarkerlen;
|
||||
if (ascii_isdigit(*s)) {
|
||||
|
@ -4,6 +4,7 @@ local clear, feed, eq = helpers.clear, helpers.feed, helpers.eq
|
||||
local command = helpers.command
|
||||
local feed_command = helpers.feed_command
|
||||
local insert = helpers.insert
|
||||
local expect = helpers.expect
|
||||
local funcs = helpers.funcs
|
||||
local meths = helpers.meths
|
||||
local source = helpers.source
|
||||
@ -1911,4 +1912,19 @@ describe("folded lines", function()
|
||||
command('%delete')
|
||||
eq(0, funcs.foldlevel(1))
|
||||
end)
|
||||
|
||||
it('multibyte fold markers work #20438', function()
|
||||
meths.win_set_option(0, 'foldmethod', 'marker')
|
||||
meths.win_set_option(0, 'foldmarker', '«,»')
|
||||
insert([[
|
||||
bbbbb
|
||||
bbbbb
|
||||
bbbbb]])
|
||||
feed('zfgg')
|
||||
expect([[
|
||||
bbbbb/*«*/
|
||||
bbbbb
|
||||
bbbbb/*»*/]])
|
||||
eq(1, funcs.foldlevel(1))
|
||||
end)
|
||||
end)
|
||||
|
Loading…
Reference in New Issue
Block a user