aboutsummaryrefslogtreecommitdiff
path: root/lua/lexers/lexer.lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua/lexers/lexer.lua')
-rw-r--r--lua/lexers/lexer.lua14
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