diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/lua/init.lua | 5 | ||||
-rw-r--r-- | modules/textadept/bookmarks.lua | 9 | ||||
-rw-r--r-- | modules/textadept/editing.lua | 24 | ||||
-rw-r--r-- | modules/textadept/find.lua | 13 | ||||
-rw-r--r-- | modules/textadept/menu.lua | 7 | ||||
-rw-r--r-- | modules/textadept/run.lua | 3 | ||||
-rw-r--r-- | modules/textadept/snippets.lua | 8 |
7 files changed, 29 insertions, 40 deletions
diff --git a/modules/lua/init.lua b/modules/lua/init.lua index 49ccda17..a735c544 100644 --- a/modules/lua/init.lua +++ b/modules/lua/init.lua @@ -98,15 +98,14 @@ local control_structure_patterns = { function M.try_to_autocomplete_end() local line_num = buffer:line_from_position(buffer.current_pos) local line = buffer:get_line(line_num) - local line_indentation = buffer.line_indentation for _, patt in ipairs(control_structure_patterns) do if line:find(patt) then - local indent = line_indentation[line_num] + local indent = buffer.line_indentation[line_num] buffer:begin_undo_action() buffer:new_line() buffer:new_line() buffer:add_text(patt:find('repeat') and 'until' or 'end') - line_indentation[line_num + 1] = indent + buffer.tab_width + buffer.line_indentation[line_num + 1] = indent + buffer.tab_width buffer:line_up() buffer:line_end() buffer:end_undo_action() diff --git a/modules/textadept/bookmarks.lua b/modules/textadept/bookmarks.lua index 0dd7e0fe..7ced37c7 100644 --- a/modules/textadept/bookmarks.lua +++ b/modules/textadept/bookmarks.lua @@ -30,9 +30,7 @@ end --- -- Clears all bookmarks in the current buffer. -- @name clear -function M.clear() - buffer:marker_delete_all(M.MARK_BOOKMARK) -end +function M.clear() buffer:marker_delete_all(M.MARK_BOOKMARK) end --- -- Prompts the user to select a bookmarked line to move the caret to the @@ -45,14 +43,13 @@ end -- @name goto_mark function M.goto_mark(next) if next == nil then - local buffer = buffer local marks, line = {}, buffer:marker_next(0, 2^M.MARK_BOOKMARK) if line == -1 then return end - repeat + while line >= 0 do local text = buffer:get_line(line):match('^[^\r\n]*') marks[#marks + 1] = tostring(line + 1)..': '..text line = buffer:marker_next(line + 1, 2^M.MARK_BOOKMARK) - until line < 0 + end local button, i = ui.dialogs.filteredlist{ title = _L['Select Bookmark'], columns = _L['Bookmark'], items = marks } diff --git a/modules/textadept/editing.lua b/modules/textadept/editing.lua index ced101b2..d344258b 100644 --- a/modules/textadept/editing.lua +++ b/modules/textadept/editing.lua @@ -183,9 +183,7 @@ end) -- Auto-indent on return. events.connect(events.CHAR_ADDED, function(char) if not M.AUTOINDENT or char ~= 10 then return end - local buffer = buffer - local pos = buffer.current_pos - local line = buffer:line_from_position(pos) + local line = buffer:line_from_position(buffer.current_pos) local i = line - 1 while i >= 0 and buffer:get_line(i):find('^[\r\n]+$') do i = i - 1 end if i >= 0 then @@ -228,12 +226,13 @@ events.connect(events.FILE_BEFORE_SAVE, function() local buffer = buffer buffer:begin_undo_action() -- Strip trailing whitespace. - local line_end_position, char_at = buffer.line_end_position, buffer.char_at local lines = buffer.line_count for line = 0, lines - 1 do - local s, e = buffer:position_from_line(line), line_end_position[line] - local i, c = e - 1, char_at[e - 1] - while i >= s and c == 9 or c == 32 do i, c = i - 1, char_at[i - 1] end + local s, e = buffer:position_from_line(line), buffer.line_end_position[line] + local i, c = e - 1, buffer.char_at[e - 1] + while i >= s and (c == 9 or c == 32) do + i, c = i - 1, buffer.char_at[i - 1] + end if i < e - 1 then buffer:delete_range(i + 1, e - i - 1) end end -- Ensure ending newline. @@ -284,12 +283,10 @@ function M.block_comment() for line = s, not ignore_last_line and e or e - 1 do local p = buffer:position_from_line(line) if buffer:text_range(p, p + #prefix) == prefix then - buffer:set_sel(p, p + #prefix) - buffer:replace_sel('') + buffer:delete_range(p, #prefix) if suffix ~= '' then p = buffer.line_end_position[line] - buffer:set_sel(p - #suffix, p) - buffer:replace_sel('') + buffer:delete_range(p - #suffix, #suffix) if line == s then anchor = anchor - #suffix end if line == e then pos = pos - #suffix end end @@ -442,12 +439,11 @@ end -- @name convert_indentation function M.convert_indentation() local buffer = buffer - local line_indentation = buffer.line_indentation - local line_indent_position = buffer.line_indent_position buffer:begin_undo_action() for line = 0, buffer.line_count do local s = buffer:position_from_line(line) - local indent, e = line_indentation[line], line_indent_position[line] + local indent = buffer.line_indentation[line] + local e = buffer.line_indent_position[line] current_indentation = buffer:text_range(s, e) if buffer.use_tabs then -- Need integer division and LuaJIT does not have // operator. diff --git a/modules/textadept/find.lua b/modules/textadept/find.lua index d5fc2d1a..35ce74eb 100644 --- a/modules/textadept/find.lua +++ b/modules/textadept/find.lua @@ -156,7 +156,7 @@ local function find_(text, next, flags, no_wrap, wrapped) -- If nothing was found, wrap the search. if pos == -1 and not no_wrap then - local anchor, pos = buffer.anchor, buffer.current_pos + local anchor = buffer.anchor buffer:goto_pos(next and 0 or buffer.length) ui.statusbar_text = _L['Search wrapped'] events.emit(events.FIND_WRAPPED) @@ -264,20 +264,19 @@ local function replace(rtext) if buffer:get_sel_text() == '' then return end if M.in_files then M.in_files = false end buffer:target_from_selection() - rtext = rtext:gsub('\\[abfnrtv\\]', escapes) - rtext = rtext:gsub('%%%%', '\\037') -- escape '%%' + rtext = rtext:gsub('\\[abfnrtv\\]', escapes):gsub('%%%%', '\\037') if M.captures then for i = 0, #M.captures do rtext = rtext:gsub('%%'..i, (M.captures[i]:gsub('%%', '%%%%'))) end end - local ok, rtext = pcall(rtext.gsub, rtext, '%%(%b())', function(code) + local ok, rtext = pcall(string.gsub, rtext, '%%(%b())', function(code) code = code:gsub('[\a\b\f\n\r\t\v\\]', escapes) local result = assert(load('return '..code))() return tostring(result):gsub('\\[abfnrtv\\]', escapes) end) if ok then - buffer:replace_target(rtext:gsub('\\037', '%%')) -- unescape '%' + buffer:replace_target(rtext:gsub('\\037', '%%')) buffer:goto_pos(buffer.target_end) -- 'find' text after this replacement else ui.dialogs.msgbox{ @@ -306,7 +305,7 @@ local function replace_all(ftext, rtext) local count = 0 if buffer:get_sel_text() == '' then buffer:goto_pos(0) - while(find_(ftext, true, nil, true) ~= -1) do + while find_(ftext, true, nil, true) ~= -1 do replace(rtext) count = count + 1 end @@ -352,7 +351,7 @@ function M.goto_file_found(line, next) if not ff_view and not ff_buf then return end if ff_view then ui.goto_view(ff_view) else view:goto_buffer(ff_buf) end - -- If not line was given, find the next search result. + -- If no line was given, find the next search result. if not line and next ~= nil then if next then buffer:line_end() else buffer:home() end buffer:search_anchor() diff --git a/modules/textadept/menu.lua b/modules/textadept/menu.lua index 97e6ce2d..ad662194 100644 --- a/modules/textadept/menu.lua +++ b/modules/textadept/menu.lua @@ -250,7 +250,7 @@ local function get_gdk_key(key_seq) if not mods or not key then return nil end local modifiers = ((mods:find('s') or key:lower() ~= key) and 1 or 0) + (mods:find('c') and 4 or 0) + (mods:find('a') and 8 or 0) + - (mods:find('m') and 268435456 or 0) + (mods:find('m') and 0x10000000 or 0) local byte = string.byte(key) if #key > 1 or byte < 32 then for i, s in pairs(keys.KEYSYMS) do @@ -352,9 +352,8 @@ end -- @see ui.menubar -- @see ui.menu local function set_menubar(menubar) - key_shortcuts = {} + key_shortcuts, menu_actions = {}, {} for key, f in pairs(keys) do key_shortcuts[get_id(f)] = key end - menu_actions = {} local _menubar = {} for i = 1, #menubar do _menubar[#_menubar + 1] = ui.menu(read_menu_table(menubar[i])) @@ -423,7 +422,7 @@ return setmetatable(M, { elseif k == 'tab_context_menu' then set_contextmenus(nil, v) else - M[k] = v + rawset(M, k, v) end end }) diff --git a/modules/textadept/run.lua b/modules/textadept/run.lua index dbf0301f..e816ff39 100644 --- a/modules/textadept/run.lua +++ b/modules/textadept/run.lua @@ -103,11 +103,10 @@ local function command(commands, event) end preferred_view = view - local events_emit = events.emit local function emit_output(output, focus) ui.SILENT_PRINT = not focus for line in output:gmatch('[^\r\n]+') do - events_emit(event, data, line:iconv('UTF-8', _CHARSET)) + events.emit(event, data, line:iconv('UTF-8', _CHARSET)) end ui.SILENT_PRINT = false end diff --git a/modules/textadept/snippets.lua b/modules/textadept/snippets.lua index 81a4247f..a264908e 100644 --- a/modules/textadept/snippets.lua +++ b/modules/textadept/snippets.lua @@ -102,8 +102,9 @@ local function new_snippet(text, trigger) if #lines > 1 then -- Match indentation on all lines after the first. local indent_size = #buffer:get_cur_line():match('^%s*') - if not use_tabs then - indent_size = math.floor(indent_size / buffer.tab_width) -- for Lua 5.3 + if not use_tabs then + -- Need integer division and LuaJIT does not have // operator. + indent_size = math.floor(indent_size / buffer.tab_width) end local additional_indent = indent[use_tabs]:rep(indent_size) for i = 2, #lines do lines[i] = additional_indent..lines[i] end @@ -273,7 +274,6 @@ M._snippet_mt = { -- Goes to the next placeholder in a snippet. -- @param snippet The snippet returned by `new_snippet()`. next = function(snippet) - local buffer = buffer -- If the snippet was just initialized, determine how many placeholders it -- has. if not snippet.index then @@ -307,7 +307,7 @@ M._snippet_mt = { escaped_text = snippet:get_escaped_text()..' ' local offset = 0 for s, e in escaped_text:gmatch('()%%'..index..'()[^(]') do - buffer:set_target_range(start + s - 1 + offset, + buffer:set_target_range(start + s - 1 + offset, start + e - 1 + offset) buffer:replace_target(placeholder) buffer:add_selection(buffer.target_start, buffer.target_end) |