0
0
mirror of https://github.com/vim/vim.git synced 2025-09-07 22:03:36 -04:00

patch 8.2.2761: using "syn include" does not work properly

Problem:    Using "syn include" does not work properly.
Solution:   Don't add current_syn_inc_tag to topgrp. (Jaehwang Jerry Jung,
            closes #8104)
This commit is contained in:
Bram Moolenaar 2021-04-14 11:15:08 +02:00
parent f6a8d420a8
commit 2e240bd428
3 changed files with 28 additions and 4 deletions

View File

@ -5990,12 +5990,17 @@ get_id_list(
break;
}
if (name[1] == 'A')
id = SYNID_ALLBUT;
id = SYNID_ALLBUT + current_syn_inc_tag;
else if (name[1] == 'T')
id = SYNID_TOP;
{
if (curwin->w_s->b_syn_topgrp >= SYNID_CLUSTER)
id = curwin->w_s->b_syn_topgrp;
else
id = SYNID_TOP + current_syn_inc_tag;
}
else
id = SYNID_CONTAINED;
id += current_syn_inc_tag;
id = SYNID_CONTAINED + current_syn_inc_tag;
}
else if (name[1] == '@')
{

View File

@ -920,4 +920,21 @@ func Test_syn_contained_transparent()
bw!
endfunc
func Test_syn_include_contains_TOP()
let l:case = "TOP in included syntax means its group list name"
new
syntax include @INCLUDED syntax/c.vim
syntax region FencedCodeBlockC start=/```c/ end=/```/ contains=@INCLUDED
call setline(1, ['```c', '#if 0', 'int', '#else', 'int', '#endif', '```' ])
let l:expected = ["cCppOutIf2"]
eval AssertHighlightGroups(3, 1, l:expected, 1)
" cCppOutElse has contains=TOP
let l:expected = ["cType"]
eval AssertHighlightGroups(5, 1, l:expected, 1, l:case)
syntax clear
bw!
endfunc
" vim: shiftwidth=2 sts=2 expandtab

View File

@ -750,6 +750,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2761,
/**/
2760,
/**/