diff options
-rw-r--r-- | init.lua | 5 | ||||
-rw-r--r-- | modules/textadept/file_types.lua | 31 | ||||
-rw-r--r-- | test/test.lua | 6 |
3 files changed, 15 insertions, 27 deletions
@@ -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 |