diff options
author | 2008-08-08 00:51:51 -0400 | |
---|---|---|
committer | 2008-08-08 00:51:51 -0400 | |
commit | ddfe6bd8deedb1b02ef3333eebbf609d7345a5be (patch) | |
tree | 4048d816a00570ed5e0e87350a208d59147c4807 /core | |
parent | 5933929b459c87526f9abcf38aedb1781bdb144c (diff) | |
download | textadept-ddfe6bd8deedb1b02ef3333eebbf609d7345a5be.tar.gz textadept-ddfe6bd8deedb1b02ef3333eebbf609d7345a5be.zip |
Added first-line pattern matching to determine lexer; core/ext/mime_types.lua
Diffstat (limited to 'core')
-rw-r--r-- | core/ext/mime_types.lua | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/core/ext/mime_types.lua b/core/ext/mime_types.lua index 426701f4..b09b4ea8 100644 --- a/core/ext/mime_types.lua +++ b/core/ext/mime_types.lua @@ -247,6 +247,14 @@ local shebangs = { } --- +-- [Local table] First-line patterns and their associated languages. +-- @class table +-- @name patterns +local patterns = { + ['^%s*<%?xml%s'] = l.xml +} + +--- -- [Local function] Sets the buffer's lexer language based on a filename. -- @param filename The filename used to set the lexer language. -- @return boolean indicating whether or not a lexer language was set. @@ -263,15 +271,28 @@ end --- -- [Local function] Sets the buffer's lexer language based on a shebang line. local function set_lexer_from_sh_bang() - local lexer local line = buffer:get_line(0) if line:match('^#!') then line = line:gsub('[\\/]', ' ') for word in line:gmatch('%S+') do - lexer = shebangs[word] - if lexer then break end + if shebangs[word] then + buffer:set_lexer_language( shebangs[word] ) + return true + end + end + end +end + +--- +-- [Local function] Sets the buffer's lexer language based on a pattern that +-- matches its first line. +local function set_lexer_from_pattern() + local line = buffer:get_line(0) + for patt, lexer in pairs(patterns) do + if line:match(patt) then + buffer:set_lexer_language(lexer) + return true end - buffer:set_lexer_language(lexer) end end @@ -309,7 +330,7 @@ end -- Sets the buffer's lexer language. local function handle_switch() if not set_lexer_from_filename(buffer.filename) then - set_lexer_from_sh_bang() + if not set_lexer_from_sh_bang() then set_lexer_from_pattern() end end end |