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:
parent
f6a8d420a8
commit
2e240bd428
13
src/syntax.c
13
src/syntax.c
@ -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] == '@')
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2761,
|
||||
/**/
|
||||
2760,
|
||||
/**/
|
||||
|
Loading…
x
Reference in New Issue
Block a user