aboutsummaryrefslogtreecommitdiff
path: root/modules/textadept/keys.lua
diff options
context:
space:
mode:
Diffstat (limited to 'modules/textadept/keys.lua')
-rw-r--r--modules/textadept/keys.lua101
1 files changed, 48 insertions, 53 deletions
diff --git a/modules/textadept/keys.lua b/modules/textadept/keys.lua
index e88bbb6e..2c2f1b43 100644
--- a/modules/textadept/keys.lua
+++ b/modules/textadept/keys.lua
@@ -215,7 +215,6 @@ M.utils = {
end,
enclose_as_xml_tags = function()
_M.textadept.editing.enclose('<', '>')
- local buffer = buffer
local pos = buffer.current_pos
while buffer.char_at[pos - 1] ~= 60 do pos = pos - 1 end -- '<'
buffer:insert_text(-1, '</'..buffer:text_range(pos, buffer.current_pos))
@@ -229,7 +228,6 @@ M.utils = {
if buffer.filename then io.snapopen(buffer.filename:match('^(.+)[/\\]')) end
end,
show_style = function()
- local buffer = buffer
local style = buffer.style_at[buffer.current_pos]
local text = string.format("%s %s\n%s %s (%d)", _L['Lexer'],
buffer:get_lexer(true), _L['Style'],
@@ -245,7 +243,7 @@ M.utils = {
if type(state) == 'boolean' then
buffer[property] = not state
elseif type(state) == 'number' then
- buffer[property] = buffer[property] == 0 and (i or 1) or 0
+ buffer[property] = state == 0 and (i or 1) or 0
end
events.emit(events.UPDATE_UI) -- for updating statusbar
end,
@@ -262,26 +260,23 @@ M.utils = {
grow = function() if view.size then view.size = view.size + 10 end end,
shrink = function() if view.size then view.size = view.size - 10 end end,
toggle_current_fold = function()
- local buffer = buffer
buffer:toggle_fold(buffer:line_from_position(buffer.current_pos))
end,
reset_zoom = function() buffer.zoom = 0 end,
open_webpage = function(url)
- local cmd
if WIN32 then
- cmd = string.format('start "" "%s"', url)
- local p = io.popen(cmd)
+ local p = io.popen(string.format('start "" "%s"', url))
if not p then error(_L['Error loading webpage:']..url) end
p:close()
else
- cmd = string.format(OSX and 'open "file://%s"' or 'xdg-open "%s" &', url)
- local _, _, code = os.execute(cmd)
+ local _, _, code = os.execute(string.format(OSX and 'open "file://%s"' or
+ 'xdg-open "%s" &', url))
if code ~= 0 then error(_L['Error loading webpage:']..url) end
end
end,
cut_to_eol = function()
- _G.buffer:line_end_extend()
- _G.buffer:cut()
+ buffer:line_end_extend()
+ buffer:cut()
end
}
-- The following buffer functions need to be constantized in order for menu
@@ -299,13 +294,9 @@ events.connect(events.BUFFER_NEW, constantize_menu_buffer_functions)
-- Scintilla's first buffer does not have this.
if not RESETTING then constantize_menu_buffer_functions() end
-local keys = keys
-local io, gui, gui_find, gui_ce = io, gui, gui.find, gui.command_entry
-local buffer, view = buffer, view
-local m_textadept, m_editing = _M.textadept, _M.textadept.editing
-local m_bookmarks, m_snippets = m_textadept.bookmarks, m_textadept.snippets
-local OSX, c = OSX, _SCINTILLA.constants
-local utils = M.utils
+local _M, keys, buffer, view = _M, keys, buffer, view
+local m_editing, utils = _M.textadept.editing, M.utils
+local OSX, CURSES, c = OSX, CURSES, _SCINTILLA.constants
-- Windows and Linux key bindings.
--
@@ -372,8 +363,8 @@ keys[not OSX and 'cs' or 'ms'] = buffer.save
keys[not OSX and (not CURSES and 'cS' or 'cms') or 'mS'] = buffer.save_as
keys[not OSX and 'cw' or 'mw'] = buffer.close
keys[not OSX and (not CURSES and 'cW' or 'cmw') or 'mW'] = io.close_all
--- TODO: m_textadept.sessions.load
--- TODO: m_textadept.sessions.save
+-- TODO: _M.textadept.sessions.load
+-- TODO: _M.textadept.sessions.save
keys[not OSX and 'cq' or 'mq'] = quit
-- Edit.
@@ -399,7 +390,7 @@ keys[not OSX and not CURSES and 'c/' or 'm/'] = m_editing.block_comment
keys.ct = m_editing.transpose_chars
keys[not OSX and (not CURSES and 'cJ' or 'mj') or 'cj'] = m_editing.join_lines
keys[not OSX and (not CURSES and 'c|' or 'c\\')
- or 'm|'] = {gui_ce.enter_mode, 'filter_through'}
+ or 'm|'] = {gui.command_entry.enter_mode, 'filter_through'}
-- Select.
keys[not CURSES and 'cM' or 'mM'] = {m_editing.match_brace, 'select'}
keys[not OSX and not CURSES and 'c<'
@@ -441,55 +432,58 @@ keys.csup = buffer.move_selected_lines_up
keys.csdown = buffer.move_selected_lines_down
-- Search.
-keys[not OSX and not CURSES and 'cf' or 'mf'] = gui_find.focus
+keys[not OSX and not CURSES and 'cf' or 'mf'] = gui.find.focus
if CURSES then keys.mF = keys.mf end -- in case mf is used by GUI terminals
-keys[not OSX and not CURSES and 'cg' or 'mg'] = gui_find.find_next
+keys[not OSX and not CURSES and 'cg' or 'mg'] = gui.find.find_next
if not OSX and not CURSES then keys.f3 = keys.cg end
-keys[not OSX and not CURSES and 'cG' or 'mG'] = gui_find.find_prev
+keys[not OSX and not CURSES and 'cG' or 'mG'] = gui.find.find_prev
if not OSX and not CURSES then keys.sf3 = keys.cG end
-keys[not OSX and (not CURSES and 'car' or 'mr') or 'cr'] = gui_find.replace
-keys[not OSX and (not CURSES and 'caR' or 'mR') or 'cR'] = gui_find.replace_all
+keys[not OSX and (not CURSES and 'car' or 'mr') or 'cr'] = gui.find.replace
+keys[not OSX and (not CURSES and 'caR' or 'mR') or 'cR'] = gui.find.replace_all
-- Find Next is an when find pane is focused in GUI.
-- Find Prev is ap when find pane is focused in GUI.
-- Replace is ar when find pane is focused in GUI.
-- Replace All is aa when find pane is focused in GUI.
-keys[not OSX and not CURSES and 'caf' or 'cmf'] = gui_find.find_incremental
+keys[not OSX and not CURSES and 'caf' or 'cmf'] = gui.find.find_incremental
if not CURSES then keys[not OSX and 'cF' or 'mF'] = utils.find_in_files end
-- Find in Files is ai when find pane is focused in GUI.
if not CURSES then
- keys[not OSX and 'cag' or 'cmg'] = {gui_find.goto_file_found, false, true}
- keys[not OSX and 'caG' or 'cmG'] = {gui_find.goto_file_found, false, false}
+ keys[not OSX and 'cag' or 'cmg'] = {gui.find.goto_file_found, false, true}
+ keys[not OSX and 'caG' or 'cmG'] = {gui.find.goto_file_found, false, false}
end
keys[not OSX and 'cj' or 'mj'] = m_editing.goto_line
-- Tools.
keys[not OSX and (not CURSES and 'ce' or 'mc')
- or 'me'] = {gui_ce.enter_mode, 'lua_command'}
+ or 'me'] = {gui.command_entry.enter_mode, 'lua_command'}
keys[not OSX and (not CURSES and 'cE' or 'mC') or 'mE'] = utils.select_command
-keys[not OSX and 'cr' or 'mr'] = m_textadept.run.run
+keys[not OSX and 'cr' or 'mr'] = _M.textadept.run.run
keys[not OSX and (not CURSES and 'cR' or 'cmr')
- or 'mR'] = m_textadept.run.compile
+ or 'mR'] = _M.textadept.run.compile
keys[not OSX and (not CURSES and 'cae' or 'mx')
- or 'cme'] = {m_textadept.run.goto_error, false, true}
+ or 'cme'] = {_M.textadept.run.goto_error, false, true}
keys[not OSX and (not CURSES and 'caE' or 'mX')
- or 'cmE'] = {m_textadept.run.goto_error, false, false}
+ or 'cmE'] = {_M.textadept.run.goto_error, false, false}
-- Adeptsense.
keys[not OSX and ((not CURSES or WIN32) and 'c ' or 'c@')
- or 'aesc'] = m_textadept.adeptsense.complete
-keys[not CURSES and 'ch' or 'mh'] = m_textadept.adeptsense.show_apidoc
+ or 'aesc'] = _M.textadept.adeptsense.complete
+keys[not CURSES and 'ch' or 'mh'] = _M.textadept.adeptsense.show_apidoc
if CURSES then keys.mH = keys.mh end -- in case mh is used by GUI terminals
-- Snippets.
-keys[not OSX and (not CURSES and 'ck' or 'mk') or 'a\t'] = m_snippets._select
-keys['\t'] = m_snippets._insert
-keys['s\t'] = m_snippets._previous
+keys[not OSX and (not CURSES and 'ck' or 'mk')
+ or 'a\t'] = _M.textadept.snippets._select
+keys['\t'] = _M.textadept.snippets._insert
+keys['s\t'] = _M.textadept.snippets._previous
keys[not OSX and (not CURSES and 'cK' or 'mK')
- or 'as\t'] = m_snippets._cancel_current
+ or 'as\t'] = _M.textadept.snippets._cancel_current
-- Bookmark.
-keys[not OSX and (not CURSES and 'cf2' or 'f1') or 'mf2'] = m_bookmarks.toggle
-keys[not OSX and (not CURSES and 'csf2' or 'f6') or 'msf2'] = m_bookmarks.clear
-keys.f2 = m_bookmarks.goto_next
-keys[not CURSES and 'sf2' or 'f3'] = m_bookmarks.goto_prev
-keys[not CURSES and 'af2' or 'f4'] = m_bookmarks.goto_bookmark
+keys[not OSX and (not CURSES and 'cf2' or 'f1')
+ or 'mf2'] = _M.textadept.bookmarks.toggle
+keys[not OSX and (not CURSES and 'csf2' or 'f6')
+ or 'msf2'] = _M.textadept.bookmarks.clear
+keys.f2 = _M.textadept.bookmarks.goto_next
+keys[not CURSES and 'sf2' or 'f3'] = _M.textadept.bookmarks.goto_prev
+keys[not CURSES and 'af2' or 'f4'] = _M.textadept.bookmarks.goto_bookmark
-- Snapopen.
keys[not OSX and 'cu' or 'mu'] = {io.snapopen, _USERHOME}
-- TODO: {io.snapopen, _HOME}
@@ -523,7 +517,7 @@ keys[not OSX and (not CURSES and 'cai' or 'mi')
-- TODO: {utils.set_encoding, 'MacRoman'}
-- TODO: {utils.set_encoding, 'UTF-16LE'}
keys[not OSX and not CURSES and 'cL'
- or 'mL'] = m_textadept.mime_types.select_lexer
+ or 'mL'] = _M.textadept.mime_types.select_lexer
keys.f5 = {buffer.colourise, buffer, 0, -1}
if CURSES then keys.cl = keys.f5 end
@@ -594,27 +588,28 @@ end
-- Modes.
keys.lua_command = {
- ['\t'] = gui_ce.complete_lua,
- ['\n'] = {gui_ce.finish_mode, gui_ce.execute_lua}
+ ['\t'] = gui.command_entry.complete_lua,
+ ['\n'] = {gui.command_entry.finish_mode, gui.command_entry.execute_lua}
}
keys.filter_through = {
- ['\n'] = {gui_ce.finish_mode, m_editing.filter_through},
+ ['\n'] = {gui.command_entry.finish_mode, m_editing.filter_through},
}
keys.find_incremental = {
['\n'] = function()
- gui_find.find_incremental(gui_ce.entry_text, true, true)
+ gui.find.find_incremental(gui.command_entry.entry_text, true, true)
end,
['cr'] = function()
- gui_find.find_incremental(gui_ce.entry_text, false, true)
+ gui.find.find_incremental(gui.command_entry.entry_text, false, true)
end,
['\b'] = function()
- gui_find.find_incremental(gui_ce.entry_text:sub(1, -2), true)
+ gui.find.find_incremental(gui.command_entry.entry_text:sub(1, -2), true)
return false -- propagate
end
}
+-- Add the character for any key pressed without modifiers to incremental find.
setmetatable(keys.find_incremental, {__index = function(t, k)
if #k > 1 and k:find('^[cams]*.+$') then return end
- gui_find.find_incremental(gui_ce.entry_text..k, true)
+ gui.find.find_incremental(gui.command_entry.entry_text..k, true)
end})
return M