diff options
Diffstat (limited to 'lua/lexers/lexer.lua')
| -rw-r--r-- | lua/lexers/lexer.lua | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lua/lexers/lexer.lua b/lua/lexers/lexer.lua index d159f70..e7d749f 100644 --- a/lua/lexers/lexer.lua +++ b/lua/lexers/lexer.lua @@ -1510,6 +1510,20 @@ function M.embed_lexer(parent, child, start_rule, end_rule) tokenstyles[token] = style end end + -- Add child fold symbols. + if not parent._foldsymbols then parent._foldsymbols = {} end + if child._foldsymbols then + for token, symbols in pairs(child._foldsymbols) do + if not parent._foldsymbols[token] then parent._foldsymbols[token] = {} end + for k, v in pairs(symbols) do + if type(k) == 'number' then + parent._foldsymbols[token][#parent._foldsymbols[token] + 1] = v + elseif not parent._foldsymbols[token][k] then + parent._foldsymbols[token][k] = v + end + end + end + end child._lexer = parent -- use parent's tokens if child is embedding itself parent_lexer = parent -- use parent's tokens if the calling lexer is a proxy end |
