1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
-- Copyright 2011-18 Paul Kulchenko, ZeroBrane LLC
 
local ide = ide
 
--[[
Accelerator general syntax is any combination of "CTRL", "ALT", "RAWCTRL" and
"SHIFT" strings (case doesn't matter) separated by either '-' or '+' characters
and followed by the accelerator itself. The accelerator may be any alphanumeric
character, any function key (from F1 to F12) or one of the special characters
listed below (again, case doesn't matter):
 
  DEL/DELETE   Delete key
  INS/INSERT   Insert key
  ENTER/RETURN Enter key
  PGUP         PageUp key
  PGDN         PageDown key
  LEFT         Left cursor arrow key
  RIGHT        Right cursor arrow key
  UP           Up cursor arrow key
  DOWN         Down cursor arrow key
  HOME         Home key
  END          End key
  SPACE        Space
  TAB          Tab key
  ESC/ESCAPE   Escape key (Windows only)
 
"CTRL" accelerator is mapped to "Cmd" key on OSX and to "Ctrl" key on other platforms.
"RAWCTRL" accelerator is mapped to "Ctrl" key on all platforms. For example, to specify
a combination of "Ctrl" with "PGUP" use "RawCtrl-PgUp".
--]]
 
ide.config.keymap = {
-- File menu
  [ID.NEW]              = "Ctrl-N",
  [ID.OPEN]             = "Ctrl-O",
  [ID.CLOSE]            = "Ctrl-W",
  [ID.SAVE]             = "Ctrl-S",
  [ID.SAVEAS]           = "Alt-Shift-S",
  [ID.SAVEALL]          = "",
  [ID.RECENTFILES]      = "",
  [ID.RECENTFILESPREV]  = "Ctrl-,",
  [ID.RECENTFILESNEXT]  = "Ctrl-.",
  [ID.EXIT]             = "Ctrl-Q",
  [ID.RECENTPROJECTSPREV] = "Ctrl-Shift-<",
-- Edit menu
  [ID.CUT]              = "Ctrl-X",
  [ID.COPY]             = "Ctrl-C",
  [ID.PASTE]            = "Ctrl-V",
  [ID.SELECTALL]        = "Ctrl-A",
  [ID.UNDO]             = "Ctrl-Z",
  [ID.REDO]             = "Ctrl-Y",
  [ID.SHOWTOOLTIP]      = "Ctrl-T",
  [ID.AUTOCOMPLETE]     = "Ctrl-K",
  [ID.AUTOCOMPLETEENABLE] = "",
  [ID.COMMENT]          = "Ctrl-U",
  [ID.FOLD]             = "F12",
  [ID.FOLDLINE]         = "Shift-F12",
  [ID.CLEARDYNAMICWORDS] = "",
  [ID.REINDENT]         = "Ctrl-I",
  [ID.BOOKMARKTOGGLE]   = "Ctrl-F2",
  [ID.BOOKMARKNEXT]     = "F2",
  [ID.BOOKMARKPREV]     = "Shift-F2",
  [ID.NAVIGATETOFILE]   = "Ctrl-P",
  [ID.NAVIGATETOLINE]   = "Ctrl-G",
  [ID.NAVIGATETOSYMBOL] = "Ctrl-B",
  [ID.NAVIGATETOMETHOD] = "Ctrl-;",
-- Search menu
  [ID.FIND]             = "Ctrl-F",
  [ID.FINDNEXT]         = "F3",
  [ID.FINDPREV]         = "Shift-F3",
  [ID.FINDSELECTNEXT]   = "Ctrl-F3",
  [ID.FINDSELECTPREV]   = "Ctrl-Shift-F3",
  [ID.REPLACE]          = "Ctrl-R",
  [ID.FINDINFILES]      = "Ctrl-Shift-F",
  [ID.REPLACEINFILES]   = "Ctrl-Shift-R",
  [ID.SORT]             = "",
-- View menu
  [ID.VIEWFILETREE]     = "Ctrl-Shift-P",
  [ID.VIEWOUTPUT]       = "Ctrl-Shift-O",
  [ID.VIEWWATCHWINDOW]  = "Ctrl-Shift-W",
  [ID.VIEWCALLSTACK]    = "Ctrl-Shift-S",
  [ID.VIEWDEFAULTLAYOUT] = "",
  [ID.VIEWFULLSCREEN]   = "Ctrl-Shift-A",
  [ID.ZOOMRESET]        = "Ctrl-0",
  [ID.ZOOMIN]           = "Ctrl-+",
  [ID.ZOOMOUT]          = "Ctrl--",
-- Project menu
  [ID.RUN]              = "F6",
  [ID.RUNNOW]           = "Ctrl-F6",
  [ID.COMPILE]          = "F7",
  [ID.ANALYZE]          = "Shift-F7",
  [ID.STARTDEBUG]       = "F5",
  [ID.ATTACHDEBUG]      = "",
  [ID.DETACHDEBUG]      = "",
  [ID.STOPDEBUG]        = "Shift-F5",
  [ID.STEP]             = "F10",
  [ID.STEPOVER]         = "Shift-F10",
  [ID.STEPOUT]          = "Ctrl-F10",
  [ID.RUNTO]            = "Ctrl-Shift-F10",
  [ID.TRACE]            = "",
  [ID.BREAK]            = "",
  [ID.BREAKPOINTTOGGLE] = "Ctrl-F9",
  [ID.BREAKPOINTNEXT]   = "F9",
  [ID.BREAKPOINTPREV]   = "Shift-F9",
  [ID.CLEAROUTPUT]      = "",
  [ID.CLEAROUTPUTENABLE] = "",
  [ID.INTERPRETER]      = "",
  [ID.PROJECTDIR]       = "",
-- Help menu
  [ID.ABOUT]            = "F1",
-- Watch window menu items
  [ID.ADDWATCH]         = "Ins",
  [ID.EDITWATCH]        = "F2",
  [ID.DELETEWATCH]      = "Del",
-- Editor popup menu items
  [ID.GOTODEFINITION]   = "",
  [ID.RENAMEALLINSTANCES] = "",
  [ID.REPLACEALLSELECTIONS] = "",
  [ID.QUICKADDWATCH]    = "",
  [ID.QUICKEVAL]        = "",
  [ID.ADDTOSCRATCHPAD]  = "",
-- Filetree popup menu items
  [ID.RENAMEFILE]       = "F2",
  [ID.DELETEFILE]       = "Del",
-- Special global accelerators
  [ID.NOTEBOOKTABNEXT]  = "RawCtrl-PgDn",
  [ID.NOTEBOOKTABPREV]  = "RawCtrl-PgUp",
}
 
function KSC(id, default)
  -- this is only for the rare case of someone assigning a complete list
  -- to ide.config.keymap.
  local keymap = ide.config.keymap
  return (keymap[id] and "\t"..keymap[id]) or (default and "\t"..default) or ""
end
 
ide.config.editor.keymap = {
  -- key, modifier, command, os: http://www.scintilla.org/ScintillaDoc.html#KeyboardCommands
  -- Cmd+Left/Right moves to start/end of line
  ["Ctrl-Left"] = {wxstc.wxSTC_KEY_LEFT, wxstc.wxSTC_SCMOD_CTRL, wxstc.wxSTC_CMD_HOME, "Macintosh"},
  ["Ctrl-Right"] = {wxstc.wxSTC_KEY_RIGHT, wxstc.wxSTC_SCMOD_CTRL, wxstc.wxSTC_CMD_LINEEND, "Macintosh"},
  -- Cmd+Shift+Left/Right selects to the beginning/end of the line
  ["Ctrl-Shift-Left"] = {wxstc.wxSTC_KEY_LEFT, wxstc.wxSTC_SCMOD_CTRL+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_HOMEEXTEND, "Macintosh"},
  ["Ctrl-Shift-Right"] = {wxstc.wxSTC_KEY_RIGHT, wxstc.wxSTC_SCMOD_CTRL+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_LINEENDEXTEND, "Macintosh"},
  -- Cmd+Shift+Up/Down selects to the beginning/end of the text
  ["Ctrl-Shift-Up"] = {wxstc.wxSTC_KEY_UP, wxstc.wxSTC_SCMOD_CTRL+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_LINEUPEXTEND, "Macintosh"},
  ["Ctrl-Shift-Down"] = {wxstc.wxSTC_KEY_DOWN, wxstc.wxSTC_SCMOD_CTRL+wxstc.wxSTC_SCMOD_SHIFT, wxstc.wxSTC_CMD_LINEDOWNEXTEND, "Macintosh"},
  -- Opt+Left/Right moves one word left (to the beginning)/right (to the end)
  ["Alt-Left"] = {wxstc.wxSTC_KEY_LEFT, wxstc.wxSTC_SCMOD_ALT, wxstc.wxSTC_CMD_WORDLEFT, "Macintosh"},
  ["Alt-Right"] = {wxstc.wxSTC_KEY_RIGHT, wxstc.wxSTC_SCMOD_ALT, wxstc.wxSTC_CMD_WORDRIGHTEND, "Macintosh"},
}