aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--init.lua5
-rw-r--r--modules/textadept/file_types.lua31
-rw-r--r--test/test.lua6
3 files changed, 15 insertions, 27 deletions
diff --git a/init.lua b/init.lua
index b1dc58b0..31de343e 100644
--- a/init.lua
+++ b/init.lua
@@ -291,13 +291,14 @@ events.connect(events.BUFFER_NEW, function()
local SETDIRECTFUNCTION = _SCINTILLA.properties.direct_function[1]
local SETDIRECTPOINTER = _SCINTILLA.properties.doc_pointer[2]
local SETLUASTATE = _SCINTILLA.functions.change_lexer_state[1]
+ local LOADLEXERLIBRARY = _SCINTILLA.functions.load_lexer_library[1]
local SETLEXERLANGUAGE = _SCINTILLA.properties.lexer_language[2]
buffer.lexer_language = 'lpeg'
buffer:private_lexer_call(SETDIRECTFUNCTION, buffer.direct_function)
buffer:private_lexer_call(SETDIRECTPOINTER, buffer.direct_pointer)
buffer:private_lexer_call(SETLUASTATE, _LUA)
- buffer.property['lexer.lpeg.home'] = _USERHOME..'/lexers/?.lua;'..
- _HOME..'/lexers'
+ buffer:private_lexer_call(LOADLEXERLIBRARY, _HOME..'/lexers')
+ buffer:private_lexer_call(LOADLEXERLIBRARY, _USERHOME..'/lexers')
load_settings()
buffer:private_lexer_call(SETLEXERLANGUAGE, 'text')
if buffer == ui.command_entry then buffer.caret_line_visible = false end
diff --git a/modules/textadept/file_types.lua b/modules/textadept/file_types.lua
index f0ce5bdb..40416927 100644
--- a/modules/textadept/file_types.lua
+++ b/modules/textadept/file_types.lua
@@ -32,12 +32,6 @@ M.extensions = {--[[Actionscript]]as='actionscript',asc='actionscript',--[[Ada]]
-- @name patterns
M.patterns = {['^#!.+[/ ][gm]?awk']='awk',['^#!.+[/ ]lua']='lua',['^#!.+[/ ]octave']='matlab',['^#!.+[/ ]perl']='perl',['^#!.+[/ ]php']='php',['^#!.+[/ ]python']='python',['^#!.+[/ ]ruby']='ruby',['^#!.+[/ ]bash']='bash',['^#!.+/m?ksh']='bash',['^#!.+/sh']='bash',['^%s*class%s+%S+%s*<%s*ApplicationController']='rails',['^%s*class%s+%S+%s*<%s*ActionController::Base']='rails',['^%s*class%s+%S+%s*<%s*ActiveRecord::Base']='rails',['^%s*class%s+%S+%s*<%s*ActiveRecord::Migration']='rails',['^%s*<%?xml%s']='xml',['^#cloud%-config']='yaml'}
----
--- List of available lexer names.
--- @class table
--- @name lexers
-M.lexers = {}
-
local GETLEXERLANGUAGE = _SCINTILLA.properties.lexer_language[1]
-- LuaDoc is in core/.buffer.luadoc.
local function get_lexer(buffer, current)
@@ -108,31 +102,20 @@ events.connect(events.VIEW_AFTER_SWITCH, restore_lexer)
events.connect(events.VIEW_NEW, restore_lexer)
events.connect(events.RESET_AFTER, restore_lexer)
--- Generate lexer list.
-local lexers_found = {}
-for _, dir in ipairs{_HOME..'/lexers', _USERHOME..'/lexers'} do
- if lfs.attributes(dir) then
- for lexer in lfs.dir(dir) do
- if lexer:find('%.lua$') and lexer ~= 'lexer.lua' then
- lexers_found[lexer:match('^(.+)%.lua$')] = true
- end
- end
- end
-end
-for lexer in pairs(lexers_found) do
- M.lexers[#M.lexers + 1] = lexer:iconv('UTF-8', _CHARSET)
-end
-table.sort(M.lexers)
-
---
-- Prompts the user to select a lexer for the current buffer.
-- @see buffer.set_lexer
-- @name select_lexer
function M.select_lexer()
+ local lexers = {}
+ local LEXERNAMES = _SCINTILLA.functions.property_names[1]
+ for name in buffer:private_lexer_call(LEXERNAMES):gmatch('[^\n]+') do
+ lexers[#lexers + 1] = name
+ end
local button, i = ui.dialogs.filteredlist{
- title = _L['Select Lexer'], columns = _L['Name'], items = M.lexers
+ title = _L['Select Lexer'], columns = _L['Name'], items = lexers
}
- if button == 1 and i then buffer:set_lexer(M.lexers[i]) end
+ if button == 1 and i then buffer:set_lexer(lexers[i]) end
end
return M
diff --git a/test/test.lua b/test/test.lua
index 3efe9077..72883202 100644
--- a/test/test.lua
+++ b/test/test.lua
@@ -1696,12 +1696,16 @@ function test_file_types_select_lexer_interactive()
end
function test_file_types_load_lexers()
+ local lexers = {}
+ for name in buffer:private_lexer_call(_SCINTILLA.functions.property_names[1]):gmatch('[^\n]+') do
+ lexers[#lexers + 1] = name
+ end
print('Loading lexers...')
if #_VIEWS > 1 then view:unsplit() end
view:goto_buffer(-1)
ui.silent_print = true
buffer.new()
- for _, name in ipairs(textadept.file_types.lexers) do
+ for _, name in ipairs(lexers) do
print('Loading lexer ' .. name)
buffer:set_lexer(name)
end