diff options
-rw-r--r-- | core/file_io.lua | 4 | ||||
-rw-r--r-- | modules/textadept/keys.lua | 80 | ||||
-rw-r--r-- | modules/textadept/menu.lua | 38 | ||||
-rw-r--r-- | src/textadept.c | 8 |
4 files changed, 69 insertions, 61 deletions
diff --git a/core/file_io.lua b/core/file_io.lua index 7079776f..750f0827 100644 --- a/core/file_io.lua +++ b/core/file_io.lua @@ -187,6 +187,7 @@ end -- LuaDoc is in core/.buffer.luadoc. local function reload(buffer) + if not buffer then buffer = _G.buffer end gui.check_focused_buffer(buffer) if not buffer.filename then return end local pos, first_visible_line = buffer.current_pos, buffer.first_visible_line @@ -224,6 +225,7 @@ end -- LuaDoc is in core/.buffer.luadoc. local function save(buffer) + if not buffer then buffer = _G.buffer end gui.check_focused_buffer(buffer) if not buffer.filename then return buffer:save_as() end events.emit(events.FILE_BEFORE_SAVE, buffer.filename) @@ -245,6 +247,7 @@ end -- LuaDoc is in core/.buffer.luadoc. local function save_as(buffer, utf8_filename) + if not buffer and not utf8_filename then buffer = _G.buffer end gui.check_focused_buffer(buffer) if not utf8_filename then utf8_filename = gui.dialog('filesave', @@ -277,6 +280,7 @@ end -- LuaDoc is in core/.buffer.luadoc. local function close(buffer) + if not buffer then buffer = _G.buffer end gui.check_focused_buffer(buffer) if buffer.dirty and gui.dialog('msgbox', diff --git a/modules/textadept/keys.lua b/modules/textadept/keys.lua index 8d7c38c6..3faee901 100644 --- a/modules/textadept/keys.lua +++ b/modules/textadept/keys.lua @@ -67,10 +67,10 @@ if not OSX then -- File keys.cn = new_buffer keys.co = io.open_file - -- TODO: { _buffer.reload, _buffer } - keys.cs = { _buffer.save, _buffer } - keys.cS = { _buffer.save_as, _buffer } - keys.cw = { _buffer.close, _buffer } + -- TODO: _buffer.reload + keys.cs = _buffer.save + keys.cS = _buffer.save_as + keys.cw = _buffer.close keys.cW = io.close_all -- TODO: m_textadept.session.load after prompting with open dialog -- TODO: m_textadept.session.save after prompting with save dialog @@ -78,13 +78,13 @@ if not OSX then -- Edit local m_editing = m_textadept.editing - keys.cz = { _buffer.undo, _buffer } - keys.cy = { _buffer.redo, _buffer } - keys.cx = { _buffer.cut, _buffer } - keys.cc = { _buffer.copy, _buffer } - keys.cv = { _buffer.paste, _buffer } + keys.cz = _buffer.undo + keys.cy = _buffer.redo + keys.cx = _buffer.cut + keys.cc = _buffer.copy + keys.cv = _buffer.paste -- Delete is delete. - keys.ca = { _buffer.select_all, _buffer } + keys.ca = _buffer.select_all keys.ce = m_editing.match_brace keys.cE = { m_editing.match_brace, 'select' } keys['c\n'] = { m_editing.autocomplete_word, '%w_' } @@ -193,10 +193,10 @@ else -- File keys.an = new_buffer keys.ao = io.open_file - -- TODO: { _buffer.reload, _buffer } - keys.as = { _buffer.save, _buffer } - keys.aS = { _buffer.save_as, _buffer } - keys.aw = { _buffer.close, _buffer } + -- TODO: _buffer.reload + keys.as = _buffer.save + keys.aS = _buffer.save_as + keys.aw = _buffer.close keys.aW = { io.close_all } -- TODO: m_textadept.session.load after prompting with open dialog -- TODO: m_textadept.session.save after prompting with save dialog @@ -204,13 +204,13 @@ else -- Edit local m_editing = m_textadept.editing - keys.az = { _buffer.undo, _buffer } - keys.aZ = { _buffer.redo, _buffer } - keys.ax = { _buffer.cut, _buffer } - keys.ac = { _buffer.copy, _buffer } - keys.av = { _buffer.paste, _buffer } + keys.az = _buffer.undo + keys.aZ = _buffer.redo + keys.ax = _buffer.cut + keys.ac = _buffer.copy + keys.av = _buffer.paste -- Delete is delete. - keys.aa = { _buffer.select_all, _buffer } + keys.aa = _buffer.select_all keys.cm = m_editing.match_brace keys.aE = { m_editing.match_brace, 'select' } keys.esc = { m_editing.autocomplete_word, '%w_' } @@ -304,28 +304,28 @@ else keys.caI = show_style -- Movement/selection commands - keys.cf = { _buffer.char_right, _buffer } - keys.cF = { _buffer.char_right_extend, _buffer } - keys.caf = { _buffer.word_right, _buffer } - keys.caF = { _buffer.word_right_extend, _buffer } - keys.cb = { _buffer.char_left, _buffer } - keys.cB = { _buffer.char_left_extend, _buffer } - keys.cab = { _buffer.word_left, _buffer } - keys.caB = { _buffer.word_left_extend, _buffer } - keys.cn = { _buffer.line_down, _buffer } - keys.cN = { _buffer.line_down_extend, _buffer } - keys.cp = { _buffer.line_up, _buffer } - keys.cP = { _buffer.line_up_extend, _buffer } - keys.ca = { _buffer.vc_home, _buffer } - keys.cA = { _buffer.home_extend, _buffer } - keys.ce = { _buffer.line_end, _buffer } - keys.cE = { _buffer.line_end_extend, _buffer } - keys.cah = { _buffer.del_word_left, _buffer } - keys.cd = { _buffer.clear, _buffer } - keys.cad = { _buffer.del_word_right, _buffer } + keys.cf = _buffer.char_right + keys.cF = _buffer.char_right_extend + keys.caf = _buffer.word_right + keys.caF = _buffer.word_right_extend + keys.cb = _buffer.char_left + keys.cB = _buffer.char_left_extend + keys.cab = _buffer.word_left + keys.caB = _buffer.word_left_extend + keys.cn = _buffer.line_down + keys.cN = _buffer.line_down_extend + keys.cp = _buffer.line_up + keys.cP = _buffer.line_up_extend + keys.ca = _buffer.vc_home + keys.cA = _buffer.home_extend + keys.ce = _buffer.line_end + keys.cE = _buffer.line_end_extend + keys.cah = _buffer.del_word_left + keys.cd = _buffer.clear + keys.cad = _buffer.del_word_right keys.ck = function() buffer:line_end_extend() buffer:cut() end - keys.cy = { _buffer.paste, _buffer } + keys.cy = _buffer.paste end diff --git a/modules/textadept/menu.lua b/modules/textadept/menu.lua index 92385fa0..03277491 100644 --- a/modules/textadept/menu.lua +++ b/modules/textadept/menu.lua @@ -62,11 +62,11 @@ menubar = { { L('gtk-new'), new_buffer }, { L('gtk-open'), io.open_file }, { L('Open Recent...'), io.open_recent_file }, - { L('Reload'), { _buffer.reload, _buffer } }, - { L('gtk-save'), { _buffer.save, _buffer } }, - { L('gtk-save-as'), { _buffer.save_as, _buffer } }, + { L('Reload'), _buffer.reload }, + { L('gtk-save'), _buffer.save }, + { L('gtk-save-as'), _buffer.save_as }, SEPARATOR, - { L('gtk-close'), { _buffer.close, _buffer } }, + { L('gtk-close'), _buffer.close }, { L('Close All'), io.close_all }, SEPARATOR, { L('Load Session...'), function() @@ -99,15 +99,15 @@ menubar = { { L('gtk-quit'), quit }, }, { title = L('Edit'), - { L('gtk-undo'), { _buffer.undo, _buffer } }, - { L('gtk-redo'), { _buffer.redo, _buffer } }, + { L('gtk-undo'), _buffer.undo }, + { L('gtk-redo'), _buffer.redo }, SEPARATOR, - { L('gtk-cut'), { _buffer.cut, _buffer } }, - { L('gtk-copy'), { _buffer.copy, _buffer } }, - { L('gtk-paste'), { _buffer.paste, _buffer } }, - { L('Duplicate'), { _buffer.line_duplicate, _buffer } }, - { L('gtk-delete'), { _buffer.clear, _buffer } }, - { L('gtk-select-all'), { _buffer.select_all, _buffer } }, + { L('gtk-cut'), _buffer.cut }, + { L('gtk-copy'), _buffer.copy }, + { L('gtk-paste'), _buffer.paste }, + { L('Duplicate'), _buffer.line_duplicate }, + { L('gtk-delete'), _buffer.clear }, + { L('gtk-select-all'), _buffer.select_all }, SEPARATOR, { L('Match Brace'), m_editing.match_brace }, { L('Select to Brace'), { m_editing.match_brace, 'select' } }, @@ -285,15 +285,15 @@ table.insert(menubar, #menubar, lexer_menu) -- before 'Help' -- @class table -- @name context_menu context_menu = { - { L('gtk-undo'), { _buffer.undo, _buffer } }, - { L('gtk-redo'), { _buffer.redo, _buffer } }, + { L('gtk-undo'), _buffer.undo }, + { L('gtk-redo'), _buffer.redo }, SEPARATOR, - { L('gtk-cut'), { _buffer.cut, _buffer } }, - { L('gtk-copy'), { _buffer.copy, _buffer } }, - { L('gtk-paste'), { _buffer.paste, _buffer } }, - { L('gtk-delete'), { _buffer.clear, _buffer } }, + { L('gtk-cut'), _buffer.cut }, + { L('gtk-copy'), _buffer.copy }, + { L('gtk-paste'), _buffer.paste }, + { L('gtk-delete'), _buffer.clear }, SEPARATOR, - { L('gtk-select-all'), { _buffer.select_all, _buffer } } + { L('gtk-select-all'), _buffer.select_all } } local menu_actions = {} diff --git a/src/textadept.c b/src/textadept.c index d9874dd2..661b8ca6 100644 --- a/src/textadept.c +++ b/src/textadept.c @@ -1599,8 +1599,12 @@ static int l_call_buffer_function(lua_State *lua) { int rt_type = l_rawgeti_int(lua, buffer_func_table_idx, 2); int p1_type = l_rawgeti_int(lua, buffer_func_table_idx, 3); int p2_type = l_rawgeti_int(lua, buffer_func_table_idx, 4); - l_check_focused_buffer(lua, 1); - return l_call_scintilla(lua, editor, msg, p1_type, p2_type, rt_type, 2); + int arg = 1; + if (lua_type(lua, 1) == LUA_TTABLE) { + l_check_focused_buffer(lua, 1); + arg = 2; + } + return l_call_scintilla(lua, editor, msg, p1_type, p2_type, rt_type, arg); } /** |