Customized fork of github.com/rxi/lite

Added file-header pattern support to `syntax`

rxi ba6c1484 db471c05

+2 -1
data/core/doc/init.lua
··· 56 56 57 57 58 58 function Doc:reset_syntax() 59 - local syn = syntax.get(self.filename or "") 59 + local header = self:get_text(1, 1, self:position_offset(1, 1, 128)) 60 + local syn = syntax.get(self.filename or "", header) 60 61 if self.syntax ~= syn then 61 62 self.syntax = syn 62 63 self.highlighter:reset()
+8 -3
data/core/syntax.lua
··· 11 11 end 12 12 13 13 14 - function syntax.get(filename) 14 + local function find(string, field) 15 15 for i = #syntax.items, 1, -1 do 16 16 local t = syntax.items[i] 17 - if common.match_pattern(filename, t.files) then 17 + if common.match_pattern(string, t[field] or {}) then 18 18 return t 19 19 end 20 20 end 21 - return plain_text_syntax 21 + end 22 + 23 + function syntax.get(filename, header) 24 + return find(filename, "files") 25 + or find(header, "headers") 26 + or plain_text_syntax 22 27 end 23 28 24 29
+1
data/plugins/language_lua.lua
··· 2 2 3 3 syntax.add { 4 4 files = "%.lua$", 5 + headers = "^#!.*[ /]lua", 5 6 comment = "--", 6 7 patterns = { 7 8 { pattern = { '"', '"', '\\' }, type = "string" },
+1
data/plugins/language_python.lua
··· 2 2 3 3 syntax.add { 4 4 files = "%.py$", 5 + headers = "^#!.*[ /]python", 5 6 comment = "#", 6 7 patterns = { 7 8 { pattern = { "#", "\n" }, type = "comment" },
+1
data/plugins/language_xml.lua
··· 2 2 3 3 syntax.add { 4 4 files = { "%.xml$", "%.html?$" }, 5 + headers = "<%?xml", 5 6 patterns = { 6 7 { pattern = { "<!%-%-", "%-%->" }, type = "comment" }, 7 8 { pattern = { '%f[^>][^<]', '%f[<]' }, type = "normal" },