aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lexers/lexer.lua6
-rw-r--r--vis.lua16
2 files changed, 19 insertions, 3 deletions
diff --git a/lexers/lexer.lua b/lexers/lexer.lua
index 992d690..345dabe 100644
--- a/lexers/lexer.lua
+++ b/lexers/lexer.lua
@@ -862,7 +862,7 @@ local lpeg_match = lpeg.match
M.LEXERPATH = package.path
-- Table of loaded lexers.
-local lexers = {}
+M.lexers = {}
-- Keep track of the last parent lexer loaded. This lexer's rules are used for
-- proxy lexers (those that load parent and child lexers to embed) that do not
@@ -1002,7 +1002,7 @@ end
-- @return lexer object
-- @name load
function M.load(name, alt_name)
- if lexers[alt_name or name] then return lexers[alt_name or name] end
+ if M.lexers[alt_name or name] then return M.lexers[alt_name or name] end
parent_lexer = nil -- reset
-- When using Scintillua as a stand-alone module, the `property` and
@@ -1069,7 +1069,7 @@ function M.load(name, alt_name)
end
lexer.lex, lexer.fold = M.lex, M.fold
- lexers[alt_name or name] = lexer
+ M.lexers[alt_name or name] = lexer
return lexer
end
diff --git a/vis.lua b/vis.lua
index 1ca1e37..bde564f 100644
--- a/vis.lua
+++ b/vis.lua
@@ -201,3 +201,19 @@ vis.filetype_detect = function(win)
win.syntax = nil
end
+vis.events.theme_change = function(name)
+ if name ~= nil then
+ local theme = 'themes/'..name
+ package.loaded[theme] = nil
+ require(theme)
+ end
+
+ if vis.lexers ~= nil then
+ vis.lexers.lexers = {}
+ end
+
+ for win in vis:windows() do
+ win.syntax = win.syntax;
+ end
+end
+