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);
|
char *s = ml_get_buf(flp->wp->w_buffer, flp->lnum + flp->off, false);
|
||||||
while (*s) {
|
while (*s) {
|
||||||
if (*s == cstart
|
if ((unsigned char)(*s) == cstart
|
||||||
&& STRNCMP(s + 1, startmarker, foldstartmarkerlen - 1) == 0) {
|
&& STRNCMP(s + 1, startmarker, foldstartmarkerlen - 1) == 0) {
|
||||||
// found startmarker: set flp->lvl
|
// found startmarker: set flp->lvl
|
||||||
s += foldstartmarkerlen;
|
s += foldstartmarkerlen;
|
||||||
@ -3032,8 +3032,8 @@ static void foldlevelMarker(fline_T *flp)
|
|||||||
flp->lvl_next++;
|
flp->lvl_next++;
|
||||||
flp->start++;
|
flp->start++;
|
||||||
}
|
}
|
||||||
} else if (*s == cend && STRNCMP(s + 1, foldendmarker + 1,
|
} else if ((unsigned char)(*s) == cend
|
||||||
foldendmarkerlen - 1) == 0) {
|
&& STRNCMP(s + 1, foldendmarker + 1, foldendmarkerlen - 1) == 0) {
|
||||||
// found endmarker: set flp->lvl_next
|
// found endmarker: set flp->lvl_next
|
||||||
s += foldendmarkerlen;
|
s += foldendmarkerlen;
|
||||||
if (ascii_isdigit(*s)) {
|
if (ascii_isdigit(*s)) {
|
||||||
|
@ -4,6 +4,7 @@ local clear, feed, eq = helpers.clear, helpers.feed, helpers.eq
|
|||||||
local command = helpers.command
|
local command = helpers.command
|
||||||
local feed_command = helpers.feed_command
|
local feed_command = helpers.feed_command
|
||||||
local insert = helpers.insert
|
local insert = helpers.insert
|
||||||
|
local expect = helpers.expect
|
||||||
local funcs = helpers.funcs
|
local funcs = helpers.funcs
|
||||||
local meths = helpers.meths
|
local meths = helpers.meths
|
||||||
local source = helpers.source
|
local source = helpers.source
|
||||||
@ -1911,4 +1912,19 @@ describe("folded lines", function()
|
|||||||
command('%delete')
|
command('%delete')
|
||||||
eq(0, funcs.foldlevel(1))
|
eq(0, funcs.foldlevel(1))
|
||||||
end)
|
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)
|
end)
|
||||||
|
Loading…
Reference in New Issue
Block a user