diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-05-04 17:42:18 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-05-04 17:45:11 +0200 |
| commit | b2800904b8cb8269c0e750dced51e8dc422af8f5 (patch) | |
| tree | c6174f3cc21a06b69f3c40dbd49710e3ed9ce103 | |
| parent | b04b66e0ab5646342241b2535768337d9d12a93a (diff) | |
| download | vis-b2800904b8cb8269c0e750dced51e8dc422af8f5.tar.gz vis-b2800904b8cb8269c0e750dced51e8dc422af8f5.tar.xz | |
vis-lua: reload all lexers after theme change
Close #221
| -rw-r--r-- | lexers/lexer.lua | 6 | ||||
| -rw-r--r-- | vis.lua | 16 |
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 @@ -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 + |
