diff options
author | 2009-01-03 22:50:12 -0500 | |
---|---|---|
committer | 2009-01-03 22:50:12 -0500 | |
commit | c15e9a9cf36da02cb883eb14fd3a4ee23548f675 (patch) | |
tree | be8de81c387208fa5011399d31df5c772e626f50 /core/ext/menu.lua | |
parent | fd48dede42c0678e4a5410bd635a02d255fe89d6 (diff) | |
download | textadept-c15e9a9cf36da02cb883eb14fd3a4ee23548f675.tar.gz textadept-c15e9a9cf36da02cb883eb14fd3a4ee23548f675.zip |
Added localization support.
All Textadept messages are in core/locale.lua which provides the new
'textadept.locale' module.
Diffstat (limited to 'core/ext/menu.lua')
-rw-r--r-- | core/ext/menu.lua | 711 |
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) |