|
Main /
Context Menu Buffer List PatchA small patch that replaces the context menu with a list of buffers. Save the following patch as context_menu_buffer_list.patch and run the patch against core/ext/menu.lua.
--- menu.lua 2010-04-01 07:27:22.000000000 +0200
+++ menu.lua 2010-04-08 21:54:47.761540262 +0200
@@ -11,6 +11,7 @@
local t = textadept
local l = locale
local gtkmenu = textadept.gtkmenu
+local context_mbl = {} -- Context menu buffer list
local SEPARATOR = 'separator'
local ID = {
@@ -131,6 +132,8 @@
MANUAL = 901,
LUADOC = 902,
ABOUT = 903,
+ -- Buffers (context menu) (will be generated dynamically)
+ BUFFER_START = 1000,
}
@@ -504,6 +507,10 @@
active_table =
{ set_lexer, lexer_menu[menu_id - ID.LEXER_START + 1][1] }
end
+ if menu_id >= ID.BUFFER_START and menu_id < ID.BUFFER_START + 99 then
+ active_table =
+ { 'goto_buffer', v, context_mbl[menu_id], true }
+ end
local f, args
if active_table and #active_table > 0 then
local func = active_table[1]
@@ -527,14 +534,34 @@
end)
-- Right-click context menu.
-t.context_menu = gtkmenu {
- { l.MENU_EDIT_UNDO, ID.UNDO },
- { l.MENU_EDIT_REDO, ID.REDO },
- { SEPARATOR, ID.SEPARATOR },
- { l.MENU_EDIT_CUT, ID.CUT },
- { l.MENU_EDIT_COPY, ID.COPY },
- { l.MENU_EDIT_PASTE, ID.PASTE },
- { l.MENU_EDIT_DELETE, ID.DELETE },
- { SEPARATOR, ID.SEPARATOR },
- { l.MENU_EDIT_SELECT_ALL, ID.SELECT_ALL }
-}
+
+-- t.context_menu = gtkmenu {
+-- { l.MENU_EDIT_UNDO, ID.UNDO },
+-- { l.MENU_EDIT_REDO, ID.REDO },
+-- { SEPARATOR, ID.SEPARATOR },
+-- { l.MENU_EDIT_CUT, ID.CUT },
+-- { l.MENU_EDIT_COPY, ID.COPY },
+-- { l.MENU_EDIT_PASTE, ID.PASTE },
+-- { l.MENU_EDIT_DELETE, ID.DELETE },
+-- { SEPARATOR, ID.SEPARATOR },
+-- { l.MENU_EDIT_SELECT_ALL, ID.SELECT_ALL }
+-- }
+
+t.context_menu = gtkmenu {}
+
+function update_context_menu()
+ t.context_menu = {}
+ for _, buffer in ipairs(textadept.buffers) do
+ local filename = buffer.filename or buffer._type or locale.UNTITLED
+ local table_index = #t.context_menu + 1
+ -- A list of buffer/table index
+ context_mbl[ID.BUFFER_START + table_index] = table_index
+ -- The actual menu item
+ t.context_menu[table_index] = { filename:match('[^/\\]+$'), ID.BUFFER_START + table_index }
+ end
+ t.context_menu = gtkmenu(t.context_menu)
+end
+
+textadept.events.add_handler('buffer_new', update_context_menu)
+textadept.events.add_handler('file_opened', update_context_menu)
+textadept.events.add_handler('buffer_deleted', update_context_menu)
|