aboutsummaryrefslogtreecommitdiff
path: root/core/ext/menu.lua
diff options
context:
space:
mode:
Diffstat (limited to 'core/ext/menu.lua')
-rw-r--r--core/ext/menu.lua711
1 files changed, 472 insertions, 239 deletions
diff --git a/core/ext/menu.lua b/core/ext/menu.lua
index 2fecc91e..db089ed0 100644
--- a/core/ext/menu.lua
+++ b/core/ext/menu.lua
@@ -5,165 +5,396 @@
-- This module, like ext/key_commands, should be 'require'ed last.
module('textadept.menu', package.seeall)
-local t, gtkmenu = textadept, textadept.gtkmenu
+local t, gtkmenu, l = textadept, textadept.gtkmenu, textadept.locale
+
+local SEPARATOR = 'separator'
+local ID = {
+ SEPARATOR = 0,
+ -- File
+ NEW = 101,
+ OPEN = 102,
+ RELOAD = 103,
+ SAVE = 104,
+ SAVEAS = 105,
+ CLOSE = 106,
+ CLOSE_ALL = 107,
+ LOAD_SESSION = 108,
+ SAVE_SESSION = 109,
+ QUIT = 110,
+ -- Edit
+ UNDO = 201,
+ REDO = 202,
+ CUT = 203,
+ COPY = 204,
+ PASTE = 205,
+ DELETE = 206,
+ SELECT_ALL = 207,
+ MATCH_BRACE = 208,
+ SELECT_TO_BRACE = 209,
+ COMPLETE_WORD = 210,
+ DELETE_WORD = 211,
+ TRANSPOSE_CHARACTERS = 212,
+ SQUEEZE = 213,
+ JOIN_LINES = 245,
+ MOVE_LINE_UP = 214,
+ MOVE_LINE_DOWN = 215,
+ CONVERT_INDENTATION = 216,
+ CUT_TO_LINE_END = 217,
+ COPY_TO_LINE_END = 218,
+ PASTE_FROM_RING = 219,
+ PASTE_NEXT_FROM_RING = 220,
+ PASTE_PREV_FROM_RING = 221,
+ EXECUTE_AS_RUBY = 222,
+ EXECUTE_AS_LUA = 223,
+ ENCLOSE_IN_HTML_TAGS = 224,
+ ENCLOSE_IN_HTML_SINGLE_TAG = 225,
+ ENCLOSE_IN_DOUBLE_QUOTES = 226,
+ ENCLOSE_IN_SINGLE_QUOTES = 227,
+ ENCLOSE_IN_PARENTHESES = 228,
+ ENCLOSE_IN_BRACKETS = 229,
+ ENCLOSE_IN_BRACES = 230,
+ ENCLOSE_IN_CHARACTER_SEQUENCE = 231,
+ GROW_SELECTION = 232,
+ SELECT_IN_STRUCTURE = 233,
+ SELECT_IN_HTML_TAG = 234,
+ SELECT_IN_DOUBLE_QUOTE = 235,
+ SELECT_IN_SINGLE_QUOTE = 236,
+ SELECT_IN_PARENTHESIS = 237,
+ SELECT_IN_BRACKET = 238,
+ SELECT_IN_BRACE = 239,
+ SELECT_IN_WORD = 240,
+ SELECT_IN_LINE = 241,
+ SELECT_IN_PARAGRAPH = 242,
+ SELECT_IN_INDENTED_BLOCK = 243,
+ SELECT_IN_SCOPE = 244,
+ -- Search
+ FIND = 301,
+ FIND_NEXT = 302,
+ FIND_PREV = 303,
+ FIND_AND_REPLACE = 304,
+ REPLACE = 305,
+ REPLACE_ALL = 306,
+ GOTO_LINE = 307,
+ -- Tools
+ FOCUS_COMMAND_ENTRY = 401,
+ INSERT_SNIPPET = 402,
+ PREVIOUS_SNIPPET_PLACEHOLDER = 403,
+ CANCEL_SNIPPET = 404,
+ LIST_SNIPPETS = 405,
+ SHOW_SCOPE = 406,
+ ADD_MULTIPLE_LINE = 407,
+ ADD_MULTIPLE_LINES = 408,
+ REMOVE_MULTIPLE_LINE = 409,
+ REMOVE_MULTIPLE_LINES = 410,
+ UPDATE_MULTIPLE_LINES = 411,
+ FINISH_MULTIPLE_LINES = 412,
+ START_RECORDING_MACRO = 413,
+ STOP_RECORDING_MACRO = 414,
+ PLAY_MACRO = 415,
+ -- Buffers
+ NEXT_BUFFER = 501,
+ PREV_BUFFER = 502,
+ TOGGLE_VIEW_EOL = 503,
+ TOGGLE_WRAP_MODE = 504,
+ TOGGLE_SHOW_INDENT_GUIDES = 505,
+ TOGGLE_USE_TABS = 506,
+ TOGGLE_VIEW_WHITESPACE = 507,
+ REFRESH_SYNTAX_HIGHLIGHTING = 508,
+ -- Views
+ NEXT_VIEW = 601,
+ PREV_VIEW = 602,
+ SPLIT_VIEW_VERTICAL = 603,
+ SPLIT_VIEW_HORIZONTAL = 604,
+ UNSPLIT_VIEW = 605,
+ UNSPLIT_ALL_VIEWS = 606,
+ GROW_VIEW = 607,
+ SHRINK_VIEW = 608,
+ -- Project Manager
+ TOGGLE_PM_VISIBLE = 701,
+ FOCUS_PM = 702,
+ SHOW_PM_PROJECT = 703,
+ SHOW_PM_CTAGS = 704,
+ SHOW_PM_BUFFERS = 705,
+ SHOW_PM_FILES = 706,
+ SHOW_PM_MACROS = 707,
+ SHOW_PM_MODULES = 708,
+ -- Lexers
+ LEXER_ACTIONSCRIPT = 801,
+ LEXER_ADA = 802,
+ LEXER_ANTLR = 803,
+ LEXER_APDL = 804,
+ LEXER_APPLESCRIPT = 805,
+ LEXER_ASP = 806,
+ LEXER_AWK = 807,
+ LEXER_BATCH = 808,
+ LEXER_BOO = 809,
+ LEXER_CONTAINER = 810,
+ LEXER_CPP = 811,
+ LEXER_CSHARP = 812,
+ LEXER_CSS = 813,
+ LEXER_D = 814,
+ LEXER_DIFF = 815,
+ LEXER_DJANGO = 816,
+ LEXER_EIFFEL = 817,
+ LEXER_ERLANG = 818,
+ LEXER_ERRORLIST = 819,
+ LEXER_FORTH = 820,
+ LEXER_FORTRAN = 821,
+ LEXER_GAP = 822,
+ LEXER_GETTEXT = 823,
+ LEXER_GNUPLOT = 824,
+ LEXER_GROOVY = 825,
+ LEXER_HASKELL = 826,
+ LEXER_HTML = 827,
+ LEXER_IDL = 828,
+ LEXER_INI = 829,
+ LEXER_IO = 830,
+ LEXER_JAVA = 831,
+ LEXER_JAVASCRIPT = 832,
+ LEXER_LATEX = 833,
+ LEXER_LISP = 834,
+ LEXER_LUA = 835,
+ LEXER_MAKEFILE = 836,
+ LEXER_MYSQL = 837,
+ LEXER_OBJECTIVEC = 838,
+ LEXER_OCAML = 839,
+ LEXER_PASCAL = 840,
+ LEXER_PERL = 841,
+ LEXER_PHP = 842,
+ LEXER_PIKE = 843,
+ LEXER_POSTSCRIPT = 844,
+ LEXER_PROPS = 845,
+ LEXER_PYTHON = 846,
+ LEXER_R = 847,
+ LEXER_RAGEL = 848,
+ LEXER_REBOL = 849,
+ LEXER_REXX = 850,
+ LEXER_RHTML = 851,
+ LEXER_RUBY = 852,
+ LEXER_SCHEME = 853,
+ LEXER_SHELLSCRIPT = 854,
+ LEXER_SMALLTALK = 855,
+ LEXER_TCL = 856,
+ LEXER_VALA = 857,
+ LEXER_VERILOG = 858,
+ LEXER_VHDL = 859,
+ LEXER_VISUALBASIC = 860,
+ LEXER_XML = 861
+}
+
t.menubar = {
gtkmenu {
- title = '_File',
- 'gtk-new',
- 'gtk-open',
- '_Reload',
- 'gtk-save',
- 'gtk-save-as',
- 'gtk-close',
- 'Close A_ll',
- 'separator',
- '_Load Session...',
- 'Sa_ve Session...',
- 'separator',
- 'gtk-quit',
+ title = l.MENU_FILE_TITLE,
+ { l.MENU_FILE_NEW, ID.NEW },
+ { l.MENU_FILE_OPEN, ID.OPEN },
+ { l.MENU_FILE_RELOAD, ID.RELOAD },
+ { l.MENU_FILE_SAVE, ID.SAVE },
+ { l.MENU_FILE_SAVEAS, ID.SAVEAS },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_FILE_CLOSE, ID.CLOSE },
+ { l.MENU_FILE_CLOSE_ALL, ID.CLOSE_ALL },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_FILE_LOAD_SESSION, ID.LOAD_SESSION },
+ { l.MENU_FILE_SAVE_SESSION, ID.SAVE_SESSION },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_FILE_QUIT, ID.QUIT },
},
gtkmenu {
- title = '_Edit',
- 'gtk-undo',
- 'gtk-redo',
- 'separator',
- 'gtk-cut',
- 'gtk-copy',
- 'gtk-paste',
- 'gtk-delete',
- 'gtk-select-all',
- 'separator',
- 'Match _Brace',
- 'Select t_o Brace',
- 'Complete _Word',
- 'De_lete Word',
- 'Tran_spose Characters',
- 'S_queeze',
- '_Move line up',
- 'Mo_ve line down',
- 'Convert _Indentation',
- { title = '_Kill Ring',
- '_Cut to line end',
- 'C_opy to line end',
- '_Paste from ring',
- 'Paste _next from ring',
- 'Paste pre_v from ring',
+ title = l.MENU_EDIT_TITLE,
+ { 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 },
+ { l.MENU_EDIT_SELECT_ALL, ID.SELECT_ALL },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_EDIT_MATCH_BRACE, ID.MATCH_BRACE },
+ { l.MENU_EDIT_SELECT_TO_BRACE, ID.SELECT_TO_BRACE },
+ { l.MENU_EDIT_COMPLETE_WORD, ID.COMPLETE_WORD },
+ { l.MENU_EDIT_DELETE_WORD, ID.DELETE_WORD },
+ { l.MENU_EDIT_TRANSPOSE_CHARACTERS, ID.TRANSPOSE_CHARACTERS },
+ { l.MENU_EDIT_SQUEEZE, ID.SQUEEZE },
+ { l.MENU_EDIT_JOIN_LINES, ID.JOIN_LINES },
+ { l.MENU_EDIT_MOVE_LINE_UP, ID.MOVE_LINE_UP },
+ { l.MENU_EDIT_MOVE_LINE_DOWN, ID.MOVE_LINE_DOWN },
+ { l.MENU_EDIT_CONVERT_INDENTATION, ID.CONVERT_INDENTATION },
+ { title = l.MENU_EDIT_KR_TITLE,
+ { l.MENU_EDIT_KR_CUT_TO_LINE_END, ID.CUT_TO_LINE_END },
+ { l.MENU_EDIT_KR_COPY_TO_LINE_END, ID.COPY_TO_LINE_END },
+ { l.MENU_EDIT_KR_PASTE_FROM, ID.PASTE_FROM_RING },
+ { l.MENU_EDIT_KR_PASTE_NEXT_FROM, ID.PASTE_NEXT_FROM_RING },
+ { l.MENU_EDIT_KR_PASTE_PREV_FROM, ID.PASTE_PREV_FROM_RING },
},
- { title = 'S_election',
- { title = 'E_xecute as...',
- '_Ruby',
- '_Lua',
+ { title = l.MENU_EDIT_SEL_TITLE,
+ { title = l.MENU_EDIT_SEL_EXEC_TITLE,
+ { l.MENU_EDIT_SEL_EXEC_AS_RUBY, ID.EXECUTE_AS_RUBY },
+ { l.MENU_EDIT_SEL_EXEC_AS_LUA, ID.EXECUTE_AS_LUA },
},
- { title = '_Enclose in...',
- '_HTML Tags',
- 'HTML Single _Tag',
- '_Double Quotes',
- '_Single Quotes',
- '_Parentheses',
- '_Brackets',
- 'B_races',
- '_Character Sequence',
+ { title = l.MENU_EDIT_SEL_ENC_TITLE,
+ { l.MENU_EDIT_SEL_ENC_HTML_TAGS, ID.ENCLOSE_IN_HTML_TAGS },
+ { l.MENU_EDIT_SEL_ENC_HTML_SINGLE_TAG, ID.ENCLOSE_IN_HTML_SINGLE_TAG },
+ { l.MENU_EDIT_SEL_ENC_DOUBLE_QUOTES, ID.ENCLOSE_IN_DOUBLE_QUOTES },
+ { l.MENU_EDIT_SEL_ENC_SINGLE_QUOTES, ID.ENCLOSE_IN_SINGLE_QUOTES },
+ { l.MENU_EDIT_SEL_ENC_PARENTHESES, ID.ENCLOSE_IN_PARENTHESES },
+ { l.MENU_EDIT_SEL_ENC_BRACKETS, ID.ENCLOSE_IN_BRACKETS },
+ { l.MENU_EDIT_SEL_ENC_BRACES, ID.ENCLOSE_IN_BRACES },
+ { l.MENU_EDIT_SEL_ENC_CHAR_SEQ, ID.ENCLOSE_IN_CHARACTER_SEQUENCE },
},
- '_Grow',
+ { l.MENU_EDIT_SEL_GROW, ID.GROW_SELECTION },
},
- { title = 'Select i_n...',
- 'S_tructure',
- '_HTML Tag',
- '_Double Quote',
- '_Single Quote',
- '_Parenthesis',
- '_Bracket',
- 'B_race',
- '_Word',
- '_Line',
- 'Para_graph',
- '_Indented Block',
- 'S_cope',
+ { title = l.MENU_EDIT_SEL_IN_TITLE,
+ { l.MENU_EDIT_SEL_IN_STRUCTURE, ID.SELECT_IN_STRUCTURE },
+ { l.MENU_EDIT_SEL_IN_HTML_TAG, ID.SELECT_IN_HTML_TAG },
+ { l.MENU_EDIT_SEL_IN_DOUBLE_QUOTE, ID.SELECT_IN_DOUBLE_QUOTE },
+ { l.MENU_EDIT_SEL_IN_SINGLE_QUOTE, ID.SELECT_IN_SINGLE_QUOTE },
+ { l.MENU_EDIT_SEL_IN_PARENTHESIS, ID.SELECT_IN_PARENTHESIS },
+ { l.MENU_EDIT_SEL_IN_BRACKET, ID.SELECT_IN_BRACKET },
+ { l.MENU_EDIT_SEL_IN_BRACE, ID.SELECT_IN_BRACE },
+ { l.MENU_EDIT_SEL_IN_WORD, ID.SELECT_IN_WORD },
+ { l.MENU_EDIT_SEL_IN_LINE, ID.SELECT_IN_LINE },
+ { l.MENU_EDIT_SEL_IN_PARAGRAPH, ID.SELECT_IN_PARAGRAPH },
+ { l.MENU_EDIT_SEL_IN_INDENTED_BLOCK, ID.SELECT_IN_INDENTED_BLOCK },
+ { l.MENU_EDIT_SEL_IN_SCOPE, ID.SELECT_IN_SCOPE },
},
},
gtkmenu {
- title = '_Search',
- 'gtk-find',
- 'Find _Next',
- 'Find _Prev',
- 'gtk-find-and-replace',
- 'Replace',
- 'Replace _All',
- 'separator',
- 'gtk-jump-to',
+ title = l.MENU_SEARCH_TITLE,
+ { l.MENU_SEARCH_FIND, ID.FIND },
+ { l.MENU_SEARCH_FIND_NEXT, ID.FIND_NEXT },
+ { l.MENU_SEARCH_FIND_PREV, ID.FIND_PREV },
+ { l.MENU_SEARCH_FIND_AND_REPLACE, ID.FIND_AND_REPLACE },
+ { l.MENU_SEARCH_REPLACE, ID.REPLACE },
+ { l.MENU_SEARCH_REPLACE_ALL, ID.REPLACE_ALL },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_SEARCH_GOTO_LINE, ID.GOTO_LINE },
},
gtkmenu {
- title = '_Tools',
- 'Focus _Command Entry',
- { title = '_Snippets',
- '_Insert Snippet',
- '_Previous Placeholder',
- '_Cancel Snippet',
- '_List Snippets',
- '_Show Scope',
+ title = l.MENU_TOOLS_TITLE,
+ { l.MENU_TOOLS_FOCUS_COMMAND_ENTRY, ID.FOCUS_COMMAND_ENTRY },
+ { title = l.MENU_TOOLS_SNIPPETS_TITLE,
+ { l.MENU_TOOLS_SNIPPETS_INSERT, ID.INSERT_SNIPPET },
+ { l.MENU_TOOLS_SNIPPETS_PREV_PLACE, ID.PREVIOUS_SNIPPET_PLACEHOLDER },
+ { l.MENU_TOOLS_SNIPPETS_CANCEL, ID.CANCEL_SNIPPET },
+ { l.MENU_TOOLS_SNIPPETS_LIST, ID.LIST_SNIPPETS },
+ { l.MENU_TOOLS_SNIPPETS_SHOW_SCOPE, ID.SHOW_SCOPE },
},
- { title = '_Multiple Line Editing',
- '_Add Line',
- 'Add _Multiple Lines',
- '_Remove Line',
- 'R_emove Multiple Lines',
- '_Update Multiple Lines',
- '_Finished Editing',
+ { title = l.MENU_TOOLS_ML_TITLE,
+ { l.MENU_TOOLS_ML_ADD, ID.ADD_MULTIPLE_LINE },
+ { l.MENU_TOOLS_ML_ADD_MULTIPLE, ID.ADD_MULTIPLE_LINES },
+ { l.MENU_TOOLS_ML_REMOVE, ID.REMOVE_MULTIPLE_LINE },
+ { l.MENU_TOOLS_ML_REMOVE_MULTIPLE, ID.REMOVE_MULTIPLE_LINES },
+ { l.MENU_TOOLS_ML_UPDATE, ID.UPDATE_MULTIPLE_LINES },
+ { l.MENU_TOOLS_ML_FINISH, ID.FINISH_MULTIPLE_LINES },
},
- { title = 'M_acros',
- '_Start Recording',
- 'S_top Recording',
- '_Play Macro'
+ { title = l.MENU_TOOLS_MACROS_TITLE,
+ { l.MENU_TOOLS_MACROS_START, ID.START_RECORDING_MACRO },
+ { l.MENU_TOOLS_MACROS_STOP, ID.STOP_RECORDING_MACRO },
+ { l.MENU_TOOLS_MACROS_PLAY, ID.PLAY_MACRO },
},
},
gtkmenu {
- title = '_Buffers',
- '_Next Buffer',
- '_Prev Buffer',
- 'separator',
- 'Toggle View _EOL',
- 'Toggle _Wrap Mode',
- 'Toggle Show _Indentation Guides',
- 'Toggle Use _Tabs',
- 'Toggle View White_space',
- 'separator',
- '_Refresh Syntax Highlighting',
+ title = l.MENU_BUF_TITLE,
+ { l.MENU_BUF_NEXT, ID.NEXT_BUFFER },
+ { l.MENU_BUF_PREV, ID.PREV_BUFFER },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_BUF_TOGGLE_VIEW_EOL, ID.TOGGLE_VIEW_EOL },
+ { l.MENU_BUF_TOGGLE_WRAP, ID.TOGGLE_WRAP_MODE },
+ { l.MENU_BUF_TOGGLE_INDENT_GUIDES, ID.TOGGLE_SHOW_INDENT_GUIDES },
+ { l.MENU_BUF_TOGGLE_TABS, ID.TOGGLE_USE_TABS },
+ { l.MENU_BUF_TOGGLE_VIEW_WHITESPACE, ID.TOGGLE_VIEW_WHITESPACE },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_BUF_REFRESH, ID.REFRESH_SYNTAX_HIGHLIGHTING },
},
gtkmenu {
- title = '_Views',
- '_Next View',
- '_Prev View',
- 'separator',
- 'Split _Vertical',
- 'Split _Horizontal',
- '_Unsplit',
- 'Unsplit _All',
- 'separator',
- '_Grow View',
- '_Shrink View',
+ title = l.MENU_VIEW_TITLE,
+ { l.MENU_VIEW_NEXT, ID.NEXT_VIEW },
+ { l.MENU_VIEW_PREV, ID.PREV_VIEW },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_VIEW_SPLIT_VERTICAL, ID.SPLIT_VIEW_VERTICAL },
+ { l.MENU_VIEW_SPLIT_HORIZONTAL, ID.SPLIT_VIEW_HORIZONTAL },
+ { l.MENU_VIEW_UNSPLIT, ID.UNSPLIT_VIEW },
+ { l.MENU_VIEW_UNSPLIT_ALL, ID.UNSPLIT_ALL_VIEWS },
+ { SEPARATOR, ID.SEPARATOR },
+ { l.MENU_VIEW_GROW, ID.GROW_VIEW },
+ { l.MENU_VIEW_SHRINK, ID.SHRINK_VIEW },
},
gtkmenu {
- title = '_Project Manager',
- '_Toggle PM Visible',
- '_Focus PM',
- 'Show PM _Project',
- 'Show PM _Ctags',
- 'Show PM _Buffers',
- 'Show PM _Files',
- 'Show PM _Macros',
- 'Show PM Mo_dules',
+ title = l.MENU_PM_TITLE,
+ { l.MENU_PM_TOGGLE_VISIBLE, ID.TOGGLE_PM_VISIBLE },
+ { l.MENU_PM_FOCUS, ID.FOCUS_PM },
+ { l.MENU_PM_BUFFERS, ID.SHOW_PM_BUFFERS },
+ { l.MENU_PM_PROJECT, ID.SHOW_PM_PROJECT },
+ { l.MENU_PM_FILES, ID.SHOW_PM_FILES },
+ { l.MENU_PM_CTAGS, ID.SHOW_PM_CTAGS },
+ { l.MENU_PM_MACROS, ID.SHOW_PM_MACROS },
+ { l.MENU_PM_MODULES, ID.SHOW_PM_MODULES },
},
gtkmenu {
- title = '_Lexers',
- 'actionscript', 'ada', 'antlr', 'apdl', 'applescript', 'asp', 'awk',
- 'batch', 'boo', 'container', 'cpp', 'csharp', 'css', 'd', 'diff', 'django',
- 'eiffel', 'erlang', 'errorlist', 'forth', 'fortran', 'gap', 'gettext',
- 'gnuplot', 'groovy', 'haskell', 'html', 'idl', 'ini', 'io', 'java',
- 'javascript', 'latex', 'lisp', 'lua', 'makefile', 'mysql', 'objective__c',
- 'ocaml', 'pascal', 'perl', 'php', 'pike', 'postscript', 'props', 'python',
- 'r', 'ragel', 'rebol', 'rexx', 'rhtml', 'ruby', 'scheme', 'shellscript',
- 'smalltalk', 'tcl', 'vala', 'verilog', 'vhdl', 'visualbasic', 'xml',
+ title = l.MENU_LEX_TITLE,
+ { 'actionscript', ID.LEXER_ACTIONSCRIPT },
+ { 'ada', ID.LEXER_ADA },
+ { 'antlr', ID.LEXER_ANTLR },
+ { 'apdl', ID.LEXER_APDL },
+ { 'applescript', ID.LEXER_APPLESCRIPT },
+ { 'asp', ID.LEXER_ASP },
+ { 'awk', ID.LEXER_AWK },
+ { 'batch', ID.LEXER_BATCH },
+ { 'boo', ID.LEXER_BOO },
+ { 'container', ID.LEXER_CONTAINER },
+ { 'cpp', ID.LEXER_CPP },
+ { 'csharp', ID.LEXER_CSHARP },
+ { 'css', ID.LEXER_CSS },
+ { 'd', ID.LEXER_D },
+ { 'diff', ID.LEXER_DIFF },
+ { 'django', ID.LEXER_DJANGO },
+ { 'eiffel', ID.LEXER_EIFFEL },
+ { 'erlang', ID.LEXER_ERLANG },
+ { 'errorlist', ID.LEXER_ERRORLIST },
+ { 'forth', ID.LEXER_FORTH },
+ { 'fortran', ID.LEXER_FORTRAN },
+ { 'gap', ID.LEXER_GAP },
+ { 'gettext', ID.LEXER_GETTEXT },
+ { 'gnuplot', ID.LEXER_GNUPLOT },
+ { 'groovy', ID.LEXER_GROOVY },
+ { 'haskell', ID.LEXER_HASKELL },
+ { 'html', ID.LEXER_HTML },
+ { 'idl', ID.LEXER_IDL },
+ { 'ini', ID.LEXER_INI },
+ { 'io', ID.LEXER_IO },
+ { 'java', ID.LEXER_JAVA },
+ { 'javascript', ID.LEXER_JAVASCRIPT },
+ { 'latex', ID.LEXER_LATEX },
+ { 'lisp', ID.LEXER_LISP },
+ { 'lua', ID.LEXER_LUA },
+ { 'makefile', ID.LEXER_MAKEFILE },
+ { 'mysql', ID.LEXER_MYSQL },
+ { 'objective__c', ID.LEXER_OBJECTIVEC },
+ { 'ocaml', ID.LEXER_OCAML },
+ { 'pascal', ID.LEXER_PASCAL },
+ { 'perl', ID.LEXER_PERL },
+ { 'php', ID.LEXER_PHP },
+ { 'pike', ID.LEXER_PIKE },
+ { 'postscript', ID.LEXER_POSTSCRIPT },
+ { 'props', ID.LEXER_PROPS },
+ { 'python', ID.LEXER_PYTHON },
+ { 'r', ID.LEXER_R },
+ { 'ragel', ID.LEXER_RAGEL },
+ { 'rebol', ID.LEXER_REBOL },
+ { 'rexx', ID.LEXER_REXX },
+ { 'rhtml', ID.LEXER_RHTML },
+ { 'ruby', ID.LEXER_RUBY },
+ { 'scheme', ID.LEXER_SCHEME },
+ { 'shellscript', ID.LEXER_SHELLSCRIPT },
+ { 'smalltalk', ID.LEXER_SMALLTALK },
+ { 'tcl', ID.LEXER_TCL },
+ { 'vala', ID.LEXER_VALA },
+ { 'verilog', ID.LEXER_VERILOG },
+ { 'vhdl', ID.LEXER_VHDL },
+ { 'visualbasic', ID.LEXER_VISUALBASIC },
+ { 'xml', ID.LEXER_XML },
},
}
@@ -190,132 +421,134 @@ end
local actions = {
-- File
- New = { t.new_buffer },
- Open = { t.io.open },
- Reload = { 'reload', b },
- Save = { 'save', b },
- ['Save As'] = { 'save_as', b },
- Close = { 'close', b },
- ['Close All'] = { t.io.close_all },
- ['Load Session...'] = { t.io.load_session }, -- TODO: file open dialog prompt
- ['Save Session...'] = { t.io.save_session }, -- TODO: file save dialog prompt
- Quit = { t.quit },
+ [ID.NEW] = { t.new_buffer },
+ [ID.OPEN] = { t.io.open },
+ [ID.RELOAD] = { 'reload', b },
+ [ID.SAVE] = { 'save', b },
+ [ID.SAVEAS] = { 'save_as', b },
+ [ID.CLOSE] = { 'close', b },
+ [ID.CLOSE_ALL] = { t.io.close_all },
+ [ID.LOAD_SESSION] = { t.io.load_session }, -- TODO: file open dialog prompt
+ [ID.SAVE_SESSION] = { t.io.save_session }, -- TODO: file save dialog prompt
+ [ID.QUIT] = { t.quit },
-- Edit
- Undo = { 'undo', b },
- Redo = { 'redo', b },
- Cut = { 'cut', b },
- Copy = { 'copy', b },
- Paste = { 'paste', b },
- Delete = { 'clear', b },
- ['Select All'] = { 'select_all', b },
- ['Match Brace'] = { m_editing.match_brace },
- ['Select to Brace'] = { m_editing.match_brace, 'select' },
- ['Complete Word'] = { m_editing.autocomplete_word, '%w_' },
- ['Delete Word'] = { m_editing.current_word, 'delete' },
- ['Transpose Characters'] = { m_editing.transpose_chars },
- ['Squeeze'] = { m_editing.squeeze },
- ['Join Lines'] = { m_editing.join_lines },
- ['Move line up'] = { m_editing.move_line, 'up' },
- ['Move line down'] = { m_editing.move_line, 'down' },
- ['Convert Indentation'] = { m_editing.convert_indentation },
+ [ID.UNDO] = { 'undo', b },
+ [ID.REDO] = { 'redo', b },
+ [ID.CUT] = { 'cut', b },
+ [ID.COPY] = { 'copy', b },
+ [ID.PASTE] = { 'paste', b },
+ [ID.DELETE] = { 'clear', b },
+ [ID.SELECT_ALL] = { 'select_all', b },
+ [ID.MATCH_BRACE] = { m_editing.match_brace },
+ [ID.SELECT_TO_BRACE] = { m_editing.match_brace, 'select' },
+ [ID.COMPLETE_WORD] = { m_editing.autocomplete_word, '%w_' },
+ [ID.DELETE_WORD] = { m_editing.current_word, 'delete' },
+ [ID.TRANSPOSE_CHARACTERS] = { m_editing.transpose_chars },
+ [ID.SQUEEZE] = { m_editing.squeeze },
+ [ID.JOIN_LINES] = { m_editing.join_lines },
+ [ID.MOVE_LINE_UP] = { m_editing.move_line, 'up' },
+ [ID.MOVE_LINE_DOWN] = { m_editing.move_line, 'down' },
+ [ID.CONVERT_INDENTATION] = { m_editing.convert_indentation },
-- Edit -> Kill Ring
- ['Cut to line end'] = { m_editing.smart_cutcopy },
- ['Copy to line end'] = { m_editing.smart_cutcopy, 'copy' },
- ['Paste from ring'] = { m_editing.smart_paste },
- ['Paste next from ring'] = { m_editing.smart_paste, 'cycle' },
- ['Paste prev from ring'] = { m_editing.smart_paste, 'reverse' },
+ [ID.CUT_TO_LINE_END] = { m_editing.smart_cutcopy },
+ [ID.COPY_TO_LINE_END] = { m_editing.smart_cutcopy, 'copy' },
+ [ID.PASTE_FROM_RING] = { m_editing.smart_paste },
+ [ID.PASTE_NEXT_FROM_RING] = { m_editing.smart_paste, 'cycle' },
+ [ID.PASTE_PREV_FROM_RING] = { m_editing.smart_paste, 'reverse' },
-- Edit -> Selection -> Execute as...
- Ruby = { m_editing.ruby_exec },
- Lua = { m_editing.lua_exec },
+ [ID.EXECUTE_AS_RUBY] = { m_editing.ruby_exec },
+ [ID.EXECUTE_AS_LUA] = { m_editing.lua_exec },
-- Edit -> Selection -> Enclose in...
- ['HTML Tags'] = { m_editing.enclose, 'tag' },
- ['HTML Single Tag'] = { m_editing.enclose, 'single_tag' },
- ['Double Quotes'] = { m_editing.enclose, 'dbl_quotes' },
- ['Single Quotes'] = { m_editing.enclose, 'sng_quotes' },
- Parentheses = { m_editing.enclose, 'parens' },
- Brackets = { m_editing.enclose, 'brackets' },
- Braces = { m_editing.enclose, 'braces' },
- ['Character Sequence'] = { m_editing.enclose, 'chars' },
+ [ID.ENCLOSE_IN_HTML_TAGS] = { m_editing.enclose, 'tag' },
+ [ID.ENCLOSE_IN_HTML_SINGLE_TAG] = { m_editing.enclose, 'single_tag' },
+ [ID.ENCLOSE_IN_DOUBLE_QUOTES] = { m_editing.enclose, 'dbl_quotes' },
+ [ID.ENCLOSE_IN_SINGLE_QUOTES] = { m_editing.enclose, 'sng_quotes' },
+ [ID.ENCLOSE_IN_PARENTHESES] = { m_editing.enclose, 'parens' },
+ [ID.ENCLOSE_IN_BRACKETS] = { m_editing.enclose, 'brackets' },
+ [ID.ENCLOSE_IN_BRACES] = { m_editing.enclose, 'braces' },
+ [ID.ENCLOSE_IN_CHARACTER_SEQUENCE] = { m_editing.enclose, 'chars' },
-- Edit -> Selection
- Grow = { m_editing.grow_selection, 1 },
+ [ID.GROW_SELECTION] = { m_editing.grow_selection, 1 },
-- Edit -> Select In...
- Structure = { m_editing.select_enclosed },
- ['HTML Tag'] = { m_editing.select_enclosed, 'tags' },
- ['Double Quote'] = { m_editing.select_enclosed, 'dbl_quotes' },
- ['Single Quote'] = { m_editing.select_enclosed, 'sng_quotes' },
- Parenthesis = { m_editing.select_enclosed, 'parens' },
- Bracket = { m_editing.select_enclosed, 'brackets' },
- Brace = { m_editing.select_enclosed, 'braces' },
- Word = { m_editing.current_word, 'select' },
- Line = { m_editing.select_line },
- Paragraph = { m_editing.select_paragraph },
- ['Indented Block'] = { m_editing.select_indented_block },
- Scope = { m_editing.select_scope },
+ [ID.SELECT_IN_STRUCTURE] = { m_editing.select_enclosed },
+ [ID.SELECT_IN_HTML_TAG] = { m_editing.select_enclosed, 'tags' },
+ [ID.SELECT_IN_DOUBLE_QUOTE] = { m_editing.select_enclosed, 'dbl_quotes' },
+ [ID.SELECT_IN_SINGLE_QUOTE] = { m_editing.select_enclosed, 'sng_quotes' },
+ [ID.SELECT_IN_PARENTHESIS] = { m_editing.select_enclosed, 'parens' },
+ [ID.SELECT_IN_BRACKET] = { m_editing.select_enclosed, 'brackets' },
+ [ID.SELECT_IN_BRACE] = { m_editing.select_enclosed, 'braces' },
+ [ID.SELECT_IN_WORD] = { m_editing.current_word, 'select' },
+ [ID.SELECT_IN_LINE] = { m_editing.select_line },
+ [ID.SELECT_IN_PARAGRAPH] = { m_editing.select_paragraph },
+ [ID.SELECT_IN_INDENTED_BLOCK] = { m_editing.select_indented_block },
+ [ID.SELECT_IN_SCOPE] = { m_editing.select_scope },
-- Search
- Find = { t.find.focus },
- ['Find Next'] = { t.find.call_find_next },
- ['Find Prev'] = { t.find.call_find_prev },
- ['Find and Replace'] = { t.find.focus },
- Replace = { t.find.call_replace },
- ['Replace All'] = { t.find.call_replace_all },
- ['Jump to'] = { m_editing.goto_line },
+ [ID.FIND] = { t.find.focus },
+ [ID.FIND_NEXT] = { t.find.call_find_next },
+ [ID.FIND_PREV] = { t.find.call_find_prev },
+ [ID.FIND_AND_REPLACE] = { t.find.focus },
+ [ID.REPLACE] = { t.find.call_replace },
+ [ID.REPLACE_ALL] = { t.find.call_replace_all },
+ [ID.GOTO_LINE] = { m_editing.goto_line },
-- Tools
- ['Focus Command Entry'] = { t.command_entry.focus },
+ [ID.FOCUS_COMMAND_ENTRY] = { t.command_entry.focus },
-- Tools -> Snippets
- ['Insert Snippet'] = { m_snippets.insert },
- ['Previous Placeholder'] = { m_snippets.prev },
- ['Cancel Snippet'] = { m_snippets.cancel_current },
- ['List Snippets'] = { m_snippets.list },
- ['Show Scope'] = { m_snippets.show_style },
+ [ID.INSERT_SNIPPET] = { m_snippets.insert },
+ [ID.PREVIOUS_SNIPPET_PLACEHOLDER] = { m_snippets.prev },
+ [ID.CANCEL_SNIPPET] = { m_snippets.cancel_current },
+ [ID.LIST_SNIPPETS] = { m_snippets.list },
+ [ID.SHOW_SCOPE] = { m_snippets.show_style },
-- Tools -> Multiple Line Editing
- ['Add Line'] = { m_mlines.add },
- ['Add Multiple Lines'] = { m_mlines.add_multiple },
- ['Remove Line'] = { m_mlines.remove },
- ['Remove Multiple Lines'] = { m_mlines.remove_multiple },
- ['Update Multiple Lines'] = { m_mlines.update },
- ['Finished Editing'] = { m_mlines.clear },
+ [ID.ADD_MULTIPLE_LINE] = { m_mlines.add },
+ [ID.ADD_MULTIPLE_LINES] = { m_mlines.add_multiple },
+ [ID.REMOVE_MULTIPLE_LINE] = { m_mlines.remove },
+ [ID.REMOVE_MULTIPLE_LINES] = { m_mlines.remove_multiple },
+ [ID.UPDATE_MULTIPLE_LINES] = { m_mlines.update },
+ [ID.FINISH_MULTIPLE_LINES] = { m_mlines.clear },
-- Tools -> Macros
- ['Start Recording'] = { m_macros.start_recording },
- ['Stop Recording'] = { m_macros.stop_recording },
- ['Play Macro'] = { m_macros.play },
+ [ID.START_RECORDING_MACRO] = { m_macros.start_recording },
+ [ID.STOP_RECORDING_MACRO] = { m_macros.stop_recording },
+ [ID.PLAY_MACRO] = { m_macros.play },
-- Buffers
- ['Next Buffer'] = { 'goto_buffer', v, 1, false },
- ['Prev Buffer'] = { 'goto_buffer', v, -1, false },
- ['Toggle View EOL'] = { toggle_setting, 'view_eol' },
- ['Toggle Wrap Mode'] = { toggle_setting, 'wrap_mode' },
- ['Toggle Show Indentation Guides'] = { toggle_setting, 'indentation_guides' },
- ['Toggle Use Tabs'] = { toggle_setting, 'use_tabs' },
- ['Toggle View Whitespace'] = { toggle_setting, 'view_ws' },
- ['Refresh Syntax Highlighting'] = { 'colourise', b, 0, -1 },
+ [ID.NEXT_BUFFER] = { 'goto_buffer', v, 1, false },
+ [ID.PREV_BUFFER] = { 'goto_buffer', v, -1, false },
+ [ID.TOGGLE_VIEW_EOL] = { toggle_setting, 'view_eol' },
+ [ID.TOGGLE_WRAP_MODE] = { toggle_setting, 'wrap_mode' },
+ [ID.TOGGLE_SHOW_INDENT_GUIDES] = { toggle_setting, 'indentation_guides' },
+ [ID.TOGGLE_USE_TABS] = { toggle_setting, 'use_tabs' },
+ [ID.TOGGLE_VIEW_WHITESPACE] = { toggle_setting, 'view_ws' },
+ [ID.REFRESH_SYNTAX_HIGHLIGHTING] = { 'colourise', b, 0, -1 },
-- Views
- ['Next View'] = { t.goto_view, 1, false },
- ['Prev View'] = { t.goto_view, -1, false },
- ['Split Vertical'] = { 'split', v },
- ['Split Horizontal'] = { 'split', v, false },
- ['Unsplit'] = { function() view:unsplit() end },
- ['Unsplit All'] = { function() while view:unsplit() do end end },
- ['Grow View'] = {
+ [ID.NEXT_VIEW] = { t.goto_view, 1, false },
+ [ID.PREV_VIEW] = { t.goto_view, -1, false },
+ [ID.SPLIT_VIEW_VERTICAL] = { 'split', v },
+ [ID.SPLIT_VIEW_HORIZONTAL] = { 'split', v, false },
+ [ID.UNSPLIT_VIEW] = { function() view:unsplit() end },
+ [ID.UNSPLIT_ALL_VIEWS] = { function() while view:unsplit() do end end },
+ [ID.GROW_VIEW] = {
function() if view.size then view.size = view.size + 10 end end
},
- ['Shrink View'] = {
+ [ID.SHRINK_VIEW] = {
function() if view.size then view.size = view.size - 10 end end
},
-- Project Manager
- ['Toggle PM Visible'] = { t.pm.toggle_visible },
- ['Focus PM'] = { t.pm.focus },
- ['Show PM Project'] = { pm_activate, 'project' },
- ['Show PM Ctags'] = { pm_activate, 'ctags' },
- ['Show PM Buffers'] = { pm_activate, 'buffers' },
- ['Show PM Files'] = { pm_activate, not WIN32 and '/' or 'C:\\' },
- ['Show PM Macros'] = { pm_activate, 'macros' },
- ['Show PM Modules'] = { pm_activate, 'modules' },
+ [ID.TOGGLE_PM_VISIBLE] = { t.pm.toggle_visible },
+ [ID.FOCUS_PM] = { t.pm.focus },
+ [ID.SHOW_PM_PROJECT] = { pm_activate, 'project' },
+ [ID.SHOW_PM_CTAGS] = { pm_activate, 'ctags' },
+ [ID.SHOW_PM_BUFFERS] = { pm_activate, 'buffers' },
+ [ID.SHOW_PM_FILES] = { pm_activate, not WIN32 and '/' or 'C:\\' },
+ [ID.SHOW_PM_MACROS] = { pm_activate, 'macros' },
+ [ID.SHOW_PM_MODULES] = { pm_activate, 'modules' },
}
-- Most of this handling code comes from keys.lua.
t.events.add_handler('menu_clicked',
- function(menu_item)
- local active_table = actions[menu_item] or
- { set_lexer_language, menu_item } -- anything not in actions is a lexer
+ function(menu_item, menu_id)
+ local active_table = actions[menu_id]
+ if menu_id >= ID.LEXER_ACTIONSCRIPT and menu_id <= ID.LEXER_XML then
+ active_table = { set_lexer_language, menu_item }
+ end
local f, args
if active_table and #active_table > 0 then
local func = active_table[1]
@@ -333,7 +566,7 @@ t.events.add_handler('menu_clicked',
local ret, retval = pcall( f, unpack(args) )
if not ret then textadept.events.error(retval) end -- error
else
- error( 'Unknown command: '..tostring(func) )
+ error( l.MENU_UNKNOWN_COMMAND..tostring(func) )
end
end
end)