mirror of
https://github.com/neovim/neovim.git
synced 2025-09-05 19:08:15 +00:00
Merge pull request #20440 from neovim/backport-20439-to-release-0.8
[Backport release-0.8] fix(folds): fix fold marker multibyte comparison
This commit is contained in:
@@ -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)
|
||||
|
Reference in New Issue
Block a user