aboutsummaryrefslogtreecommitdiff
path: root/core/ext
diff options
context:
space:
mode:
authormitchell <70453897+667e-11@users.noreply.github.com>2008-08-08 00:51:51 -0400
committermitchell <70453897+667e-11@users.noreply.github.com>2008-08-08 00:51:51 -0400
commitddfe6bd8deedb1b02ef3333eebbf609d7345a5be (patch)
tree4048d816a00570ed5e0e87350a208d59147c4807 /core/ext
parent5933929b459c87526f9abcf38aedb1781bdb144c (diff)
downloadtextadept-ddfe6bd8deedb1b02ef3333eebbf609d7345a5be.tar.gz
textadept-ddfe6bd8deedb1b02ef3333eebbf609d7345a5be.zip
Added first-line pattern matching to determine lexer; core/ext/mime_types.lua
Diffstat (limited to 'core/ext')
-rw-r--r--core/ext/mime_types.lua31
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