]> git.lyx.org Git - lyx.git/blob - src/LyXAction.cpp
Add lfuns doxy.
[lyx.git] / src / LyXAction.cpp
1 /**
2  * \file LyXAction.cpp
3  * This file is part of LyX, the document processor.
4  * Licence details can be found in the file COPYING.
5  *
6  * \author Lars Gullik Bjønnes
7  * \author Jean-Marc Lasgouttes
8  * \author John Levon
9  * \author André Pönitz
10  *
11  * Full author contact details are available in file CREDITS.
12  */
13
14 #include <config.h>
15
16 #include "LyXAction.h"
17
18 #include "support/debug.h"
19 #include "FuncRequest.h"
20
21 #include "support/lstrings.h"
22
23 #include <boost/assert.hpp>
24
25 using namespace std;
26 using namespace lyx::support;
27
28 namespace lyx {
29
30 /*
31      NAMING RULES FOR USER-COMMANDS
32      Here's the set of rules to apply when a new command name is introduced:
33
34      1) Use the object.event order. That is, use `word-forward'
35         instead of `forward-word'.
36      2) Don't introduce an alias for an already named object. Same for events.
37      3) Forward movement or focus is called `forward' (not `right').
38      4) Backward movement or focus is called `backward' (not `left').
39      5) Upward movement of focus is called `up'.
40      6) Downward movement is called `down'.
41      7) The begin of an object is called `begin' (not `start').
42      8) The end of an object is called `end'.
43
44      (May 19 1996, 12:04, RvdK)
45 */
46
47 /* LFUN documentation (a start at least, Chr 2007-08-12)
48  *
49  * The documentation below is primarily notes about restrictions and
50  * oddities relating to the different LFUNs.
51  *
52  * Try to find an appropriate (thematical) place when adding the new LFUN.
53  *
54  * Doxygen template below. Some notes: Parameters should be set in uppercase
55  * and put in <BRACKETS>, as so.
56  */
57
58 /**
59  * 
60  * \li Action: 
61  * \li Notion: 
62  * \li Syntax: 
63  * \li Params: 
64  * \li Origin: 
65  */
66
67 LyXAction lyxaction;
68
69
70 void LyXAction::newFunc(kb_action action, string const & name,
71                         unsigned int attrib, LyXAction::func_type type)
72 {
73         lyx_func_map[name] = action;
74         func_info tmpinfo;
75         tmpinfo.name = name;
76         tmpinfo.attrib = attrib;
77         tmpinfo.type = type;
78         lyx_info_map[action] = tmpinfo;
79 }
80
81
82 // Needed for LFUNs documentation to be accepted, since doxygen won't take
83 // \var inside functions.
84 #ifndef DOXYGEN_SHOULD_SKIP_THIS
85 void LyXAction::init()
86 {
87         // This function was changed to use the array below in initalization
88         // instead of calling newFunc numerous times because of compilation
89         // times. Since the array is not static we get back the memory it
90         // occupies after the init is completed. It compiles several
91         // magnitudes faster.
92
93         static bool init;
94         if (init) return;
95
96         struct ev_item {
97                 kb_action action;
98                 char const * name;
99                 unsigned int attrib;
100                 func_type type;
101         };
102
103         ev_item const items[] = {
104 #endif
105                 { LFUN_ACCENT_ACUTE, "accent-acute", Noop, Edit },
106                 { LFUN_ACCENT_BREVE, "accent-breve", Noop, Edit },
107                 { LFUN_ACCENT_CARON, "accent-caron", Noop, Edit },
108                 { LFUN_ACCENT_CEDILLA, "accent-cedilla", Noop, Edit },
109                 { LFUN_ACCENT_CIRCLE, "accent-circle", Noop, Edit },
110                 { LFUN_ACCENT_CIRCUMFLEX, "accent-circumflex", Noop, Edit },
111                 { LFUN_ACCENT_DOT, "accent-dot", Noop, Edit },
112                 { LFUN_ACCENT_GRAVE, "accent-grave", Noop, Edit },
113                 { LFUN_ACCENT_HUNGARIAN_UMLAUT, "accent-hungarian-umlaut", Noop, Edit },
114                 { LFUN_ACCENT_MACRON, "accent-macron", Noop, Edit },
115                 { LFUN_ACCENT_OGONEK, "accent-ogonek", Noop, Edit },
116                 { LFUN_ACCENT_SPECIAL_CARON, "accent-special-caron", Noop, Edit },
117                 { LFUN_ACCENT_TIE, "accent-tie", Noop, Edit },
118                 { LFUN_ACCENT_TILDE, "accent-tilde", Noop, Edit },
119                 { LFUN_ACCENT_UMLAUT, "accent-umlaut", Noop, Edit },
120                 { LFUN_ACCENT_UNDERBAR, "accent-underbar", Noop, Edit },
121                 { LFUN_ACCENT_UNDERDOT, "accent-underdot", Noop, Edit },
122
123                 { LFUN_BREAK_PARAGRAPH, "break-paragraph", Noop, Edit },
124                 { LFUN_BREAK_PARAGRAPH_SKIP, "break-paragraph-skip", Noop, Edit },
125
126                 { LFUN_CAPTION_INSERT, "caption-insert", Noop, Edit },
127                 { LFUN_DATE_INSERT, "date-insert", Noop, Edit },
128                 { LFUN_FOOTNOTE_INSERT, "footnote-insert", Noop, Edit },
129                 { LFUN_ERT_INSERT, "ert-insert", Noop, Edit },
130                 { LFUN_FLOAT_INSERT, "float-insert", Noop, Edit },
131                 { LFUN_FLOAT_WIDE_INSERT, "float-wide-insert", Noop, Edit },
132                 { LFUN_WRAP_INSERT, "wrap-insert", Noop, Edit },
133                 { LFUN_HFILL_INSERT, "hfill-insert", Noop, Edit },
134                 { LFUN_OPTIONAL_INSERT, "optional-insert", Noop, Edit },
135                 { LFUN_LINE_INSERT, "line-insert", Noop, Edit },
136                 { LFUN_NEWPAGE_INSERT, "newpage-insert", Noop, Edit },
137                 { LFUN_PAGEBREAK_INSERT, "pagebreak-insert", Noop, Edit },
138                 { LFUN_MARGINALNOTE_INSERT, "marginalnote-insert", Noop, Edit },
139                 { LFUN_UNICODE_INSERT, "unicode-insert", Noop, Edit },
140                 { LFUN_LISTING_INSERT, "listing-insert", Noop, Edit },
141                 { LFUN_QUOTE_INSERT, "quote-insert", Noop, Edit },
142                 { LFUN_INFO_INSERT, "info-insert", Noop, Edit },
143                 { LFUN_BRANCH_INSERT, "branch-insert", Noop, Edit },
144                 { LFUN_BOX_INSERT, "box-insert", Noop, Edit },
145                 { LFUN_FLEX_INSERT, "flex-insert", Noop, Edit },
146                 { LFUN_SELF_INSERT, "self-insert", SingleParUpdate, Hidden },
147                 { LFUN_SPACE_INSERT, "space-insert", Noop, Edit },
148                 { LFUN_HYPERLINK_INSERT, "href-insert", Noop, Edit },
149                 { LFUN_SPECIALCHAR_INSERT, "specialchar-insert", Noop, Edit },
150                 { LFUN_CLEARPAGE_INSERT, "clearpage-insert", Noop, Edit },
151                 { LFUN_CLEARDOUBLEPAGE_INSERT, "cleardoublepage-insert", Noop, Edit },
152                 { LFUN_TOC_INSERT, "toc-insert", Noop, Edit },
153                 { LFUN_APPENDIX, "appendix", Noop, Edit },
154
155 #if 0
156                 { LFUN_LIST_INSERT, "list-insert", Noop, Edit },
157                 { LFUN_THEOREM_INSERT, "theorem-insert", Noop, Edit },
158 #endif
159
160                 { LFUN_DELETE_BACKWARD_SKIP, "delete-backward-skip", Noop, Edit },
161                 { LFUN_DELETE_FORWARD_SKIP, "delete-forward-skip", Noop, Edit },
162                 { LFUN_DOWN, "down", ReadOnly | NoUpdate, Edit },
163                 { LFUN_DOWN_SELECT, "down-select", ReadOnly | SingleParUpdate, Edit },
164                 { LFUN_UP, "up", ReadOnly | NoUpdate, Edit },
165                 { LFUN_UP_SELECT, "up-select", ReadOnly | SingleParUpdate, Edit },
166                 { LFUN_SCREEN_DOWN, "screen-down", ReadOnly, Edit },
167                 { LFUN_SCREEN_DOWN_SELECT, "screen-down-select", ReadOnly, Edit },
168 /**
169  * \var lyx::kb_action lyx::LFUN_SCROLL
170  * \li Action: scroll the buffer view
171  * \li Notion: Only scrolls the screen up or down; does not move the cursor.
172  * \li Syntax: scroll <TYPE> <QUANTITY>
173  * \li Params: <TYPE>:  line|page\n
174                <QUANTITY>: up|down|<number>\n
175  * \li Origin: Abdelrazak Younes, Dec 27 2007
176  */
177                 { LFUN_SCROLL, "scroll", ReadOnly, Edit },
178 /**
179  * \var lyx::kb_action lyx::LFUN_SCREEN_RECENTER
180  * \li Action: Recenters the screen on the current cursor position
181  * \li Syntax: screen-recenter
182  */
183                 { LFUN_SCREEN_RECENTER, "screen-recenter", ReadOnly, Edit },
184                 { LFUN_SCREEN_UP, "screen-up", ReadOnly, Edit },
185                 { LFUN_SCREEN_UP_SELECT, "screen-up-select", ReadOnly, Edit },
186
187                 { LFUN_ERROR_NEXT, "error-next", ReadOnly, Edit },
188                 { LFUN_CHAR_BACKWARD, "char-backward", ReadOnly | NoUpdate, Edit },
189                 { LFUN_CHAR_BACKWARD_SELECT, "char-backward-select", ReadOnly | SingleParUpdate, Edit },
190                 { LFUN_CHAR_DELETE_BACKWARD, "delete-backward", SingleParUpdate, Edit },
191                 { LFUN_CHAR_DELETE_FORWARD, "delete-forward", SingleParUpdate, Edit },
192                 { LFUN_CHAR_FORWARD, "char-forward", ReadOnly | NoUpdate, Edit },
193                 { LFUN_CHAR_FORWARD_SELECT, "char-forward-select", ReadOnly | SingleParUpdate, Edit },
194                 { LFUN_CHAR_LEFT, "char-left", ReadOnly | NoUpdate, Edit },
195                 { LFUN_CHAR_LEFT_SELECT, "char-left-select", ReadOnly | SingleParUpdate, Edit },
196                 { LFUN_CHAR_RIGHT, "char-right", ReadOnly | NoUpdate, Edit },
197                 { LFUN_CHAR_RIGHT_SELECT, "char-right-select", ReadOnly | SingleParUpdate, Edit },
198
199                 { LFUN_WORD_BACKWARD, "word-backward", ReadOnly | NoUpdate, Edit },
200                 { LFUN_WORD_BACKWARD_SELECT, "word-backward-select", ReadOnly | SingleParUpdate, Edit },
201                 { LFUN_WORD_CAPITALIZE, "word-capitalize", Noop, Edit },
202                 { LFUN_WORD_DELETE_BACKWARD, "word-delete-backward", Noop, Edit },
203                 { LFUN_WORD_DELETE_FORWARD, "word-delete-forward", Noop, Edit },
204                 { LFUN_WORD_FIND_BACKWARD, "word-find-backward", ReadOnly, Edit },
205                 { LFUN_WORD_FIND_FORWARD, "word-find-forward", ReadOnly, Edit },
206                 { LFUN_WORD_FORWARD, "word-forward", ReadOnly | NoUpdate, Edit },
207                 { LFUN_WORD_FORWARD_SELECT, "word-forward-select", ReadOnly | SingleParUpdate, Edit },
208                 { LFUN_WORD_LEFT, "word-left", ReadOnly | NoUpdate, Edit },
209                 { LFUN_WORD_LEFT_SELECT, "word-left-select", ReadOnly | SingleParUpdate, Edit },
210                 { LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit },
211                 { LFUN_WORD_RIGHT, "word-right", ReadOnly | NoUpdate, Edit },
212                 { LFUN_WORD_RIGHT_SELECT, "word-right-select", ReadOnly | SingleParUpdate, Edit },
213                 { LFUN_WORD_SELECT, "word-select", ReadOnly, Edit },
214                 { LFUN_WORD_UPCASE, "word-upcase", Noop, Edit },
215                 { LFUN_WORD_FIND, "word-find", ReadOnly, Edit },
216                 { LFUN_WORD_REPLACE, "word-replace", Noop, Edit },
217 /**
218  * \var lyx::kb_action lyx::LFUN_THESAURUS_ENTRY
219  * \li Action: Look up thesaurus entries with respect to the word under the cursor.
220  * \li Syntax: thesaurus-entry
221  * \li Origin: Levon, 20 Jul 2001
222  */
223                 { LFUN_THESAURUS_ENTRY, "thesaurus-entry", ReadOnly, Edit },
224                 { LFUN_BUFFER_BEGIN, "buffer-begin", ReadOnly, Edit },
225                 { LFUN_BUFFER_BEGIN_SELECT, "buffer-begin-select", ReadOnly, Edit },
226                 { LFUN_BUFFER_END, "buffer-end", ReadOnly, Edit },
227                 { LFUN_BUFFER_END_SELECT, "buffer-end-select", ReadOnly, Edit },
228
229                 { LFUN_LINE_BEGIN, "line-begin", ReadOnly | NoUpdate, Edit },
230                 { LFUN_LINE_BEGIN_SELECT, "line-begin-select", ReadOnly | SingleParUpdate, Edit },
231                 { LFUN_LINE_BREAK, "line-break", Noop, Edit },
232                 { LFUN_LINE_DELETE, "line-delete-forward", Noop, Edit }, // there is no line-delete-backward
233                 { LFUN_LINE_END, "line-end", ReadOnly | NoUpdate, Edit },
234                 { LFUN_LINE_END_SELECT, "line-end-select", ReadOnly | SingleParUpdate, Edit },
235                 { LFUN_NEW_LINE, "new-line", Noop, Edit },
236
237 /**
238  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_MOVE_DOWN
239  * \li Action: Moves the current paragraph downwards in the document.
240  * \li Syntax: paragraph-move-down
241  * \li Origin: Edwin, 8 Apr 2006
242  */
243                 { LFUN_PARAGRAPH_MOVE_DOWN, "paragraph-move-down", Noop, Edit },
244 /**
245  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_MOVE_UP
246  * \li Action: Moves the current paragraph upwards in the document.
247  * \li Syntax: paragraph-move-up
248  * \li Origin: Edwin, 8 Apr 2006
249  */
250                 { LFUN_PARAGRAPH_MOVE_UP, "paragraph-move-up", Noop, Edit },
251 /**
252  * \var lyx::kb_action lyx::LFUN_COPY
253  * \li Action: Copies to the clipboard the last edit
254  * \li Syntax: copy
255  */
256                 { LFUN_COPY, "copy", ReadOnly, Edit },
257 /**
258  * \var lyx::kb_action lyx::LFUN_CUT
259  * \li Action: Cuts to the clipboard
260  * \li Syntax: cut
261  */
262                 { LFUN_CUT, "cut", Noop, Edit },
263 /**
264  * \var lyx::kb_action lyx::LFUN_PASTE
265  * \li Action: Pastes from the active clipboard
266  * \li Syntax: paste
267  */
268                 { LFUN_PASTE, "paste", Noop, Edit },
269                 { LFUN_CLIPBOARD_PASTE, "clipboard-paste", Noop, Edit },
270 /**
271  * \var lyx::kb_action lyx::LFUN_PRIMARY_SELECTION_PASTE
272  * \li Action: Pastes the material currently selected
273  * \li Syntax: primary-selection-paste
274  */
275                 { LFUN_PRIMARY_SELECTION_PASTE, "primary-selection-paste", Noop, Edit },
276 /**
277  * \var lyx::kb_action lyx::LFUN_UNDO
278  * \li Action: Undoes the last edit
279  * \li Syntax: undo
280  */
281                 { LFUN_UNDO, "undo", Noop, Edit },
282 /**
283  * \var lyx::kb_action lyx::LFUN_REDO
284  * \li Action: Redoes the last thing undone
285  * \li Syntax: redo
286  */
287                 { LFUN_REDO, "redo", Noop, Edit },
288                 { LFUN_REPEAT, "repeat", NoBuffer, Edit },
289                 { LFUN_CHARS_TRANSPOSE, "chars-transpose", Noop, Edit },
290
291                 { LFUN_DEPTH_DECREMENT, "depth-decrement", Noop, Edit },
292                 { LFUN_DEPTH_INCREMENT, "depth-increment", Noop, Edit },
293                 { LFUN_ENVIRONMENT_INSERT, "environment-insert", Noop, Edit },
294
295                 { LFUN_FONT_BOLD, "font-bold", Noop, Layout },
296                 { LFUN_FONT_TYPEWRITER, "font-typewriter", Noop, Layout },
297                 { LFUN_FONT_DEFAULT, "font-default", Noop, Layout },
298                 { LFUN_FONT_EMPH, "font-emph", Noop, Layout },
299                 { LFUN_FONT_FREE_APPLY, "font-free-apply", Noop, Layout },
300                 { LFUN_FONT_FREE_UPDATE, "font-free-update", Noop, Layout },
301                 { LFUN_FONT_NOUN, "font-noun", Noop, Layout },
302                 { LFUN_FONT_ROMAN, "font-roman", Noop, Layout },
303                 { LFUN_FONT_SANS, "font-sans", Noop, Layout },
304                 { LFUN_FONT_FRAK, "font-frak", Noop, Layout },
305                 { LFUN_FONT_ITAL, "font-ital", Noop, Layout },
306                 { LFUN_FONT_SIZE, "font-size", Noop, Layout },
307                 { LFUN_FONT_STATE, "font-state", ReadOnly, Layout },
308                 { LFUN_FONT_UNDERLINE, "font-underline", Noop, Layout },
309                 { LFUN_SCREEN_FONT_UPDATE, "screen-font-update", NoBuffer, Layout },
310
311                 { LFUN_INDEX_INSERT, "index-insert", Noop, Edit },
312                 { LFUN_INDEX_PRINT, "index-print", Noop, Edit },
313
314                 { LFUN_NOMENCL_INSERT, "nomencl-insert", Noop, Edit },
315                 { LFUN_NOMENCL_PRINT, "nomencl-print", Noop, Edit },
316
317                 { LFUN_NOTE_INSERT, "note-insert", Noop, Edit },
318                 { LFUN_NOTE_NEXT, "note-next", ReadOnly, Edit },
319
320                 { LFUN_BIBITEM_INSERT, "bibitem-insert", Noop, Edit },
321                 { LFUN_CITATION_INSERT, "citation-insert", Noop, Edit },
322                 { LFUN_BIBTEX_DATABASE_ADD, "bibtex-database-add", Noop, Edit },
323                 { LFUN_BIBTEX_DATABASE_DEL, "bibtex-database-del", Noop, Edit },
324
325  /**
326  * \var lyx::kb_action lyx::LFUN_LAYOUT
327  * \li Action: Sets the layout (that is, environment) for the current paragraph
328  * \li Syntax: layout <LAYOUT>
329  * \li Params: <LAYOUT>: the layout to use
330  */
331                 { LFUN_LAYOUT, "layout", Noop, Layout },
332 /**
333  * \var lyx::kb_action lyx::LFUN_LAYOUT_PARAGRAPH
334  * \li Action: Launches the paragraph settings dialog
335  * \li Syntax: layout-paragraph
336  */
337                 { LFUN_LAYOUT_PARAGRAPH, "layout-paragraph", ReadOnly, Layout },
338                 { LFUN_LAYOUT_TABULAR, "layout-tabular", Noop, Layout },
339 /**
340  * \var lyx::kb_action lyx::LFUN_DROP_LAYOUTS_CHOICE
341  * \li Action: Displays list of layout choices
342  * \li Notion: In the current (as of 2007) Qt4 frontend, this LFUN opens the
343                dropbox allowing for choice of layout
344  * \li Syntax: drop-layouts-choice
345  */
346                 { LFUN_DROP_LAYOUTS_CHOICE, "drop-layouts-choice", ReadOnly, Layout },
347 /**
348  * \var lyx::kb_action lyx::LFUN_LAYOUT_MODULES_CLEAR
349  * \li Action: Clears the module list
350  * \li Notion: Clears the list of included modules for the current buffer.
351  * \li Syntax: layout-modules-clear
352  * \li Origin: rgh, 25 August 2007
353  */
354                 { LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", Noop, Layout },
355 /**
356  * \var lyx::kb_action lyx::LFUN_LAYOUT_MODULE_ADD
357  * \li Action: Adds a module
358  * \li Notion: Adds a module to the list of included modules for the current buffer.
359  * \li Syntax: layout-module-add <MODULE>
360  * \li Params: <MODULE>: the module to be added
361  * \li Origin: rgh, 25 August 2007
362  */
363                 { LFUN_LAYOUT_MODULE_ADD, "layout-module-add", Noop, Layout },
364 /**
365  * \var lyx::kb_action lyx::LFUN_LAYOUT_RELOAD
366  * \li Action: Reloads layout information
367  * \li Notion: Reloads all layout information for the current buffer from disk, thus
368                recognizing any changes that have been made to layout files on the fly.
369                This is intended to be used only by layout developers and should not be
370                used when one is trying to do actual work.
371  * \li Syntax: layout-reload
372  * \li Origin: rgh, 3 September 2007
373  */
374                 { LFUN_LAYOUT_RELOAD, "layout-reload", Noop, Layout },
375 /**
376  * \var lyx::kb_action lyx::LFUN_TEXTCLASS_APPLY
377  * \li Action: Sets the text class for the current buffer
378  * \li Syntax: textclass-apply <TEXTCLASS>
379  * \li Params: <TEXTCLASS>: the textclass to set. Note that this must be
380                    the filename, minus the ".layout" extension.
381  */
382                 { LFUN_TEXTCLASS_APPLY, "textclass-apply", Noop, Layout },
383 /**
384  * \var lyx::kb_action lyx::LFUN_TEXTCLASS_LOAD
385  * \li Action: Loads information for a textclass from disk
386  * \li Syntax: textclass-load <TEXTCLASS>
387  * \li Params: <TEXTCLASS>: the textclass to load. Note that this must be
388                    the filename, minus the ".layout" extension.
389  */
390                 { LFUN_TEXTCLASS_LOAD, "textclass-load", Noop, Layout },
391
392 /**
393  * \var lyx::kb_action lyx::LFUN_MARK_OFF
394  * \li Action: Disable selecting of text-region.
395  * \li Syntax: mark-off
396  */
397                 { LFUN_MARK_OFF, "mark-off", ReadOnly, Edit },
398 /**
399  * \var lyx::kb_action lyx::LFUN_MARK_ON
400  * \li Action: Enable selecting of text-region.
401  * \li Notion: After enabling you can simply move arrow keys to get selected region.
402  * \li Syntax: mark-on
403  */
404                 { LFUN_MARK_ON, "mark-on", ReadOnly, Edit },
405 /**
406  * \var lyx::kb_action lyx::LFUN_MARK_TOGGLE
407  * \li Action: Toggle between MARK_ON and MARK_OFF
408  * \li Syntax: mark-toggle
409  * \li Origin: poenitz, May 5 2006
410  */
411                 { LFUN_MARK_TOGGLE, "mark-toggle", ReadOnly, Edit },
412                 
413                 { LFUN_MATH_DELIM, "math-delim", Noop, Math },
414                 { LFUN_MATH_BIGDELIM, "math-bigdelim", Noop, Math },
415                 { LFUN_MATH_DISPLAY, "math-display", Noop, Math },
416                 { LFUN_MATH_INSERT, "math-insert", Noop, Math },
417                 { LFUN_MATH_SUBSCRIPT, "math-subscript", Noop, Math },
418                 { LFUN_MATH_SUPERSCRIPT, "math-superscript", Noop, Math },
419                 { LFUN_MATH_LIMITS, "math-limits", Noop, Math },
420                 { LFUN_MATH_MACRO, "math-macro", Noop, Math },
421                 { LFUN_MATH_MUTATE, "math-mutate", Noop, Math },
422                 { LFUN_MATH_SPACE, "math-space", Noop, Math },
423                 { LFUN_MATH_IMPORT_SELECTION, "math-import-selection", Noop, Math },
424                 { LFUN_MATH_MATRIX, "math-matrix", Noop, Math },
425                 { LFUN_MATH_MODE, "math-mode", Noop, Math },
426 /**
427  * \var lyx::kb_action lyx::LFUN_MATH_NUMBER_LINE_TOGGLE
428  * \li Action: Toggles numbering of the current formula line.
429  * \li Notion: Must be in display formula mode.
430  * \li Syntax: math-number-line-toggle
431  * \li Origin: Alejandro 18 Jun 1996
432  */
433                 { LFUN_MATH_NUMBER_LINE_TOGGLE, "math-number-line-toggle", Noop, Math },
434 /**
435  * \var lyx::kb_action lyx::LFUN_MATH_NUMBER_TOGGLE
436  * \li Action: Toggles numbering of the current formula.
437  * \li Notion: Must be in display formula mode.
438  * \li Syntax: math-number-toggle
439  * \li Origin: Alejandro 4 Jun 1996
440  */
441                 { LFUN_MATH_NUMBER_TOGGLE, "math-number-toggle", Noop, Math },
442                 { LFUN_MATH_EXTERN, "math-extern", Noop, Math },
443                 { LFUN_MATH_SIZE, "math-size", Noop, Math },
444 /**
445  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_UNFOLD
446  * \li Action: Unfold a Math Macro
447  * \li Notion: Unfold the Math Macro the cursor is in, i.e.
448                display it as \foo.
449  * \li Syntax: math-macro-unfold
450  * \li Origin: sts, 06 January 2008
451  */
452                 { LFUN_MATH_MACRO_UNFOLD, "math-macro-unfold", ReadOnly | SingleParUpdate, Math },
453 /**
454  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_FOLD
455  * \li Action: Fold a Math Macro
456  * \li Notion: Fold the Math Macro the cursor is in if it was
457                unfolded, i.e. displayed as \foo before.
458  * \li Syntax: math-macro-fold
459  * \li Origin: sts, 06 January 2008
460  */
461                 { LFUN_MATH_MACRO_FOLD, "math-macro-fold", ReadOnly | SingleParUpdate, Math },
462 /**
463  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_ADD_PARAM
464  * \li Action: Add a parameter
465  * \li Notion: Add a parameter to a Math Macro
466  * \li Params: <NUM>: The number of the parameter behind which the new one
467                will be added (1 for the first, i.e. use 0 for add a
468                parameter at the left), defaults to the last one.
469  * \li Syntax: math-macro-add-param <NUM>
470  * \li Origin: sts, 06 January 2008
471  */
472                 { LFUN_MATH_MACRO_ADD_PARAM, "math-macro-add-param", Noop, Math },
473 /**
474  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_REMOVE_PARAM
475  * \li Action: Remove the last parameter
476  * \li Notion: Remove the last parameter of a Math Macro and
477                remove its value in all instances of the macro
478                in the buffer.
479  * \li Params: <NUM>: The number of the parameter to be deleted (1 for
480                the first), defaults to the last one.
481  * \li Syntax: math-macro-remove-param <NUM>
482  * \li Origin: sts, 06 January 2008
483  */
484                 { LFUN_MATH_MACRO_REMOVE_PARAM, "math-macro-remove-param", Noop, Math },
485 /**
486  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_APPEND_GREEDY_PARAM
487  * \li Action: Append a greedy parameter
488  * \li Notion: Append a greedy parameter to a Math Macro which
489                eats the following mathed cell in every instance of
490                the macro in the buffer.
491  * \li Syntax: math-macro-append-greedy-param
492  * \li Origin: sts, 06 January 2008
493  */
494                 { LFUN_MATH_MACRO_APPEND_GREEDY_PARAM, "math-macro-append-greedy-param", Noop, Math },
495 /**
496  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM
497  * \li Action: Remove a greedy parameter
498  * \li Notion: Remove a greedy parameter of a Math Macro and spit
499                out the values of it in every instance of the macro
500                in the buffer. If it is an optional parameter the [valud]
501                format is used.
502  * \li Syntax: math-macro-remove-greedy-param
503  * \li Origin: sts, 06 January 2008
504  */
505                 { LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM, "math-macro-remove-greedy-param", Noop, Math },
506 /**
507  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_MAKE_OPTIONAL
508  * \li Action: Make a parameter optional
509  * \li Notion: Turn the first non-optional parameter of a Math Macro
510                into an optional parameter with a default value.
511  * \li Syntax: math-macro-make-optional
512  * \li Origin: sts, 06 January 2008
513  */
514                 { LFUN_MATH_MACRO_MAKE_OPTIONAL, "math-macro-make-optional", Noop, Math },
515 /**
516  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_MAKE_NONOPTIONAL
517  * \li Action: Make a parameter non-optional
518  * \li Notion: Turn the last optional parameter of a Math Macro
519                into a non-optional parameter. The default value is
520                remembered to be reused later if the user changes his mind.
521  * \li Syntax: math-macro-make-nonoptional
522  * \li Origin: sts, 06 January 2008
523  */
524                 { LFUN_MATH_MACRO_MAKE_NONOPTIONAL, "math-macro-make-nonoptional", Noop, Math },
525 /**
526  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM
527  * \li Action: Add an optional parameter
528  * \li Notion: Insert an optional parameter just behind the
529                already existing optional parameters.
530  * \li Syntax: math-macro-add-optional-param
531  * \li Origin: sts, 06 January 2008
532  */
533                 { LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM, "math-macro-add-optional-param", Noop, Math },
534 /**
535  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM
536  * \li Action: Remove the last optional parameter
537  * \li Notion: Remove the last optional parameter of a Math Macro and
538                remove it in all the instances of the macro in the buffer.
539  * \li Syntax: math-macro-remove-optional-param
540  * \li Origin: sts, 06 January 2008
541  */
542                 { LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM, "math-macro-remove-optional-param", Noop, Math },
543 /**
544  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM
545  * \li Action: Add a greedy optional parameter
546  * \li Notion: Add a greedy optional parameter which eats the value
547                from the following cells in mathed which are in the [value]
548                format.
549  * \li Syntax: math-macro-add-greedy-optional-param
550  * \li Origin: sts, 06 January 2008
551  */
552                 { LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM, "math-macro-add-greedy-optional-param", Noop, Math },
553 /**
554  * \var lyx::kb_action lyx::LFUN_IN_MATHMACROTEMPLATE
555  * \li Action: Only active in Math Macro definition
556  * \li Notion: Dummy function which is only active in a Math Macro definition.
557                It's used to toggle the Math Macro toolbar if the cursor moves
558                into a Math Macro definition.
559  * \li Syntax: in-mathmacrotemplate
560  * \li Origin: sts, 06 January 2008
561  */
562                 { LFUN_IN_MATHMACROTEMPLATE, "in-mathmacrotemplate", Noop, Math },
563
564                 { LFUN_PARAGRAPH_DOWN, "paragraph-down", ReadOnly | NoUpdate, Edit },
565                 { LFUN_PARAGRAPH_DOWN_SELECT, "paragraph-down-select", ReadOnly, Edit },
566                 { LFUN_PARAGRAPH_GOTO, "paragraph-goto", ReadOnly, Edit },
567 /**
568  * \var lyx::kb_action lyx::LFUN_OUTLINE_UP
569  * \li Action: Move the current group in the upward direction in the
570                structure of the document.
571  * \li Notion: The "group" can be Part/Chapter/Section/etc. It moves
572                the whole substructure of the group.
573  * \li Syntax: outline-up
574  * \li Origin: Vermeer, 23 Mar 2006
575  */
576                 { LFUN_OUTLINE_UP, "outline-up", Noop, Edit },
577 /**
578  * \var lyx::kb_action lyx::LFUN_OUTLINE_DOWN
579  * \li Action: Move the current group in the downward direction in the
580                structure of the document.
581  * \li Notion: The "group" can be Part/Chapter/Section/etc. It moves
582                the whole substructure of the group.
583  * \li Syntax: outline-down
584  * \li Origin: Vermeer, 23 Mar 2006
585  */
586                 { LFUN_OUTLINE_DOWN, "outline-down", Noop, Edit },
587 /**
588  * \var lyx::kb_action lyx::LFUN_OUTLINE_IN
589  * \li Action: Moves the current group in the downward direction in the
590                hierarchy of the document structure.
591  * \li Notion: Part -> Chapter -> Section -> etc.
592  * \li Syntax: outline-in
593  * \li Origin: Vermeer, 23 Mar 2006
594  */
595                 { LFUN_OUTLINE_IN, "outline-in", Noop, Edit },
596 /**
597  * \var lyx::kb_action lyx::LFUN_OUTLINE_OUT
598  * \li Action: Moves the current group in the upward direction in the
599                hierarchy of the document structure.
600  * \li Notion: Part <- Chapter <- Section <- etc.
601  * \li Syntax: outline-out
602  * \li Origin: Vermeer, 23 Mar 2006
603  */
604                 { LFUN_OUTLINE_OUT, "outline-out", Noop, Edit },
605
606                 { LFUN_PARAGRAPH_SPACING, "paragraph-spacing", Noop, Edit },
607                 { LFUN_PARAGRAPH_UP, "paragraph-up", ReadOnly | NoUpdate, Edit },
608                 { LFUN_PARAGRAPH_UP_SELECT, "paragraph-up-select", ReadOnly, Edit },
609
610                 { LFUN_EXTERNAL_EDIT, "external-edit", Noop, Edit },
611                 { LFUN_GRAPHICS_EDIT, "graphics-edit", Noop, Edit },
612
613                 { LFUN_CELL_BACKWARD, "cell-backward", Noop, Edit },
614                 { LFUN_CELL_FORWARD, "cell-forward", Noop, Edit },
615                 { LFUN_CELL_SPLIT, "cell-split", Noop, Edit },
616                 { LFUN_TABULAR_INSERT, "tabular-insert", Noop, Edit },
617                 { LFUN_TABULAR_FEATURE, "tabular-feature", Noop, Edit },
618
619                 { LFUN_VC_CHECK_IN, "vc-check-in", ReadOnly, System },
620                 { LFUN_VC_CHECK_OUT, "vc-check-out", ReadOnly, System },
621                 { LFUN_VC_REGISTER, "vc-register", ReadOnly, System },
622                 { LFUN_VC_REVERT, "vc-revert", ReadOnly, System },
623                 { LFUN_VC_UNDO_LAST, "vc-undo-last", ReadOnly, System },
624
625                 { LFUN_CHANGES_TRACK, "changes-track", Noop, Edit },
626                 { LFUN_CHANGES_OUTPUT, "changes-output", Noop, Edit },
627                 { LFUN_CHANGE_NEXT, "change-next", ReadOnly, Edit },
628                 { LFUN_CHANGES_MERGE, "changes-merge", Noop, Edit },
629                 { LFUN_CHANGE_ACCEPT, "change-accept", Noop, Edit },
630                 { LFUN_CHANGE_REJECT, "change-reject", Noop, Edit },
631                 { LFUN_ALL_CHANGES_ACCEPT, "all-changes-accept", Noop, Edit },
632                 { LFUN_ALL_CHANGES_REJECT, "all-changes-reject", Noop, Edit },
633
634                 { LFUN_INSET_APPLY, "inset-apply", Noop, Edit },
635                 { LFUN_INSET_DISSOLVE, "inset-dissolve", Noop, Edit },
636                 { LFUN_INSET_INSERT, "inset-insert", Noop, Edit },
637                 { LFUN_INSET_MODIFY, "", Noop, Hidden },
638                 { LFUN_INSET_DIALOG_UPDATE, "", Noop, Hidden },
639                 { LFUN_INSET_SETTINGS, "inset-settings", ReadOnly, Edit },
640                 { LFUN_INSET_REFRESH, "", Noop, Hidden },
641                 { LFUN_NEXT_INSET_TOGGLE, "next-inset-toggle", ReadOnly, Edit },
642                 { LFUN_INSET_TOGGLE, "", ReadOnly, Hidden },
643                 { LFUN_ALL_INSETS_TOGGLE, "all-insets-toggle", ReadOnly, Edit },
644
645 /**
646  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_PARAMS
647  * \li Action: Change paragraph settings
648  * \li Notion: Modifies the current paragraph, or currently selected paragraphs.
649                This function only modifies, and does not override, existing settings.
650                Note that the "leftindent" indent setting is deprecated.
651  * \li Syntax: paragraph-params [<INDENT>] [<SPACING>] [<ALIGN>] [<OTHERS>]
652  * \li Params: <INDENT>:  \\noindent|\\indent|\\indent-toggle|\\leftindent LENGTH\n
653                <SPACING>: \\paragraph_spacing default|single|onehalf|double|other\n
654                <ALIGN>:   \\align block|left|right|center|default\n
655                <OTHERS>:  \\labelwidthstring WIDTH|\\start_of_appendix\n
656  * \li Origin: rgh, Aug 15 2007
657  */
658                 { LFUN_PARAGRAPH_PARAMS, "paragraph-params", Noop, Edit },
659 /**
660  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_PARAMS_APPLY
661  * \li Action: Change paragraph settings.
662  * \li Notion: Overwrite all nonspecified settings to the default ones.
663                Use paragraph-params lfun if you don't want to overwrite others settings.
664  * \li Syntax: paragraph-params-apply <INDENT> <SPACING> <ALIGN> <OTHERS>
665  * \li Params: For parameters see LFUN_PARAGRAPH_PARAMS
666  * \li Origin: leeming, 30 Mar 2004
667  */
668                 { LFUN_PARAGRAPH_PARAMS_APPLY, "paragraph-params-apply", Noop, Edit },
669                 { LFUN_PARAGRAPH_UPDATE, "", Noop, Hidden },
670
671                 { LFUN_FINISHED_FORWARD, "", ReadOnly, Hidden },
672                 { LFUN_FINISHED_BACKWARD, "", ReadOnly, Hidden },
673                 { LFUN_FINISHED_RIGHT, "", ReadOnly, Hidden },
674                 { LFUN_FINISHED_LEFT, "", ReadOnly, Hidden },
675
676                 { LFUN_LANGUAGE, "language", Noop, Edit },
677
678                 { LFUN_LABEL_GOTO, "label-goto", ReadOnly, Edit },
679                 { LFUN_LABEL_INSERT, "label-insert", Noop, Edit },
680                 { LFUN_REFERENCE_NEXT, "reference-next", ReadOnly, Edit },
681
682 /**
683  * \var lyx::kb_action lyx::LFUN_BOOKMARK_GOTO
684  * \li Action: Goto a bookmark
685  * \li Notion: Moves the cursor to the numbered bookmark, opening the file
686                if necessary. Note that bookmarsk are saved per-session, not
687                per file.
688  * \li Syntax: bookmark-goto <NUMBER>
689  * \li Params: <NUMBER>: the number of the bookmark to restore.
690  * \li Origin: Dekel, 27 January 2001
691  */
692                 { LFUN_BOOKMARK_GOTO, "bookmark-goto", NoBuffer, Edit },
693 /**
694  * \var lyx::kb_action lyx::LFUN_BOOKMARK_SAVE
695  * \li Action: Save a bookmark
696  * \li Notion: Saves a numbered bookmark to the sessions file. The number
697                must be between 1 and 9, inclusive. Note that bookmarks are
698                saved per-session, not per file.
699  * \li Syntax: bookmark-save <NUMBER>
700  * \li Params: <NUMBER>: the number of the bookmark to save.
701  * \li Origin: Dekel, 27 January 2001
702  */
703                 { LFUN_BOOKMARK_SAVE, "bookmark-save", ReadOnly, Edit },
704 /**
705  * \var lyx::kb_action lyx::LFUN_BOOKMARK_CLEAR
706  * \li Action: Clears the list of saved bookmarks
707  * \li Syntax: bookmark-clear
708  * \li Origin: bpeng, 31 October 2006
709  */
710                 { LFUN_BOOKMARK_CLEAR, "bookmark-clear", NoBuffer, Edit },
711
712                 { LFUN_HELP_OPEN, "help-open", NoBuffer | Argument, Buffer },
713 /**
714  * \var lyx::kb_action lyx::LFUN_LYX_QUIT
715  * \li Action: Terminates the current LyX instance
716  * \li Notion: Terminates the current LyX instance, asking whether to save
717                modified documents, etc.
718  * \li Syntax: lyx-quit
719  */
720                 { LFUN_LYX_QUIT, "lyx-quit", NoBuffer, Buffer },
721                 { LFUN_TOOLBAR_TOGGLE, "toolbar-toggle", NoBuffer, Buffer },
722                 { LFUN_MENU_OPEN, "menu-open", NoBuffer, Buffer },
723
724                 { LFUN_WINDOW_NEW, "window-new", NoBuffer, Buffer },
725                 { LFUN_WINDOW_CLOSE, "window-close", NoBuffer, Buffer },
726
727                 { LFUN_DIALOG_SHOW, "dialog-show", NoBuffer, Edit },
728                 { LFUN_DIALOG_SHOW_NEW_INSET, "dialog-show-new-inset", Noop, Edit },
729                 { LFUN_DIALOG_UPDATE, "dialog-update", NoBuffer, Edit },
730                 { LFUN_DIALOG_HIDE, "dialog-hide", NoBuffer, Edit },
731                 { LFUN_DIALOG_TOGGLE, "dialog-toggle", NoBuffer, Edit },
732                 { LFUN_DIALOG_DISCONNECT_INSET, "dialog-disconnect-inset", Noop, Edit },
733
734                 { LFUN_MOUSE_PRESS, "", ReadOnly, Hidden },
735                 { LFUN_MOUSE_MOTION, "", ReadOnly | SingleParUpdate, Hidden },
736                 { LFUN_MOUSE_RELEASE, "", ReadOnly, Hidden },
737                 { LFUN_MOUSE_DOUBLE, "", ReadOnly, Hidden },
738                 { LFUN_MOUSE_TRIPLE, "", ReadOnly, Hidden },
739
740                 { LFUN_KEYMAP_OFF, "keymap-off", ReadOnly, Edit },
741                 { LFUN_KEYMAP_PRIMARY, "keymap-primary", ReadOnly, Edit },
742                 { LFUN_KEYMAP_SECONDARY, "keymap-secondary", ReadOnly, Edit },
743                 { LFUN_KEYMAP_TOGGLE, "keymap-toggle", ReadOnly, Edit },
744
745                 { LFUN_MESSAGE, "message", NoBuffer, System },
746                 { LFUN_FLOAT_LIST, "float-list", Noop, Edit },
747                 { LFUN_ESCAPE, "escape", ReadOnly, Edit },
748
749                 { LFUN_SERVER_CHAR_AFTER, "server-char-after", ReadOnly, System },
750                 { LFUN_SERVER_GET_FONT, "server-get-font", ReadOnly, System },
751                 { LFUN_SERVER_GET_LAYOUT, "server-get-layout", ReadOnly, System },
752                 { LFUN_SERVER_GET_NAME, "server-get-name", ReadOnly, System },
753                 { LFUN_SERVER_GET_XY, "server-get-xy", ReadOnly, System },
754                 { LFUN_SERVER_GOTO_FILE_ROW, "server-goto-file-row", ReadOnly, System },
755                 { LFUN_SERVER_NOTIFY, "server-notify", ReadOnly, System },
756                 { LFUN_SERVER_SET_XY, "server-set-xy", ReadOnly, System },
757
758                 { LFUN_BUILD_PROGRAM, "build-program", ReadOnly, Buffer },
759
760 /**
761  * \var lyx::kb_action lyx::LFUN_BUFFER_AUTO_SAVE
762  * \li Action: Saves the current buffer to a temporary file
763  * \li Notion: Saves the current buffer to a file named "#filename#". This LFUN
764                is called automatically by LyX, to "autosave" the current buffer.
765         * \li Syntax: buffer-auto-save
766  */
767                 { LFUN_BUFFER_AUTO_SAVE, "buffer-auto-save", Noop, Buffer },
768                 { LFUN_BUFFER_CHILD_OPEN, "buffer-child-open", ReadOnly, Buffer },
769                 { LFUN_BUFFER_CHKTEX, "buffer-chktex", ReadOnly, Buffer },
770                 { LFUN_BUFFER_TOGGLE_COMPRESSION, "buffer-toggle-compression", Noop, Buffer },
771                 { LFUN_BUFFER_TOGGLE_EMBEDDING, "buffer-toggle-embedding", Noop, Buffer },
772 /**
773  * \var lyx::kb_action lyx::LFUN_BUFFER_CLOSE
774  * \li Action: Closes the current buffer
775  * \li Notion: Closes the current buffer, asking whether to save it, etc,
776                if the buffer has been modified.
777  * \li Syntax: buffer-close
778  */
779                 { LFUN_BUFFER_CLOSE, "buffer-close", ReadOnly, Buffer },
780                 { LFUN_BUFFER_EXPORT, "buffer-export", ReadOnly, Buffer },
781                 { LFUN_BUFFER_EXPORT_CUSTOM, "buffer-export-custom", ReadOnly, Buffer },
782                 { LFUN_BUFFER_PRINT, "buffer-print", ReadOnly, Buffer },
783                 { LFUN_BUFFER_IMPORT, "buffer-import", NoBuffer, Buffer },
784 /**
785  * \var lyx::kb_action lyx::LFUN_BUFFER_NEW
786  * \li Action: Creates a new buffer (that is, document)
787  * \li Syntax: buffer-new
788  */
789                 { LFUN_BUFFER_NEW, "buffer-new", NoBuffer, Buffer },
790                 { LFUN_BUFFER_NEW_TEMPLATE,"buffer-new-template", NoBuffer, Buffer },
791                 { LFUN_BUFFER_RELOAD, "buffer-reload", ReadOnly, Buffer },
792                 { LFUN_BUFFER_SWITCH, "buffer-switch", NoBuffer | ReadOnly, Buffer },
793                 { LFUN_BUFFER_TOGGLE_READ_ONLY, "buffer-toggle-read-only", ReadOnly, Buffer },
794                 { LFUN_BUFFER_UPDATE, "buffer-update", ReadOnly, Buffer },
795 /**
796  * \var lyx::kb_action lyx::LFUN_BUFFER_VIEW
797  * \li Action: Displays current buffer in chosen format
798  * \li Notion: Displays the contents of the current buffer in the chosen
799                format, for example, PDF or DVI. This runs the necessary
800                converter, calls the defined viewer, and so forth.
801  * \li Syntax: buffer-view <FORMAT>
802  * \li Params: <FORMAT>: The format to display, where this is one of the
803                          formats defined (in the current GUI) in the
804                          Tools>Preferences>File Formats dialog.
805  */
806                 { LFUN_BUFFER_VIEW, "buffer-view", ReadOnly, Buffer },
807 /**
808  * \var lyx::kb_action lyx::LFUN_BUFFER_WRITE
809  * \li Action: Saves the current buffer
810  * \li Notion: Saves the current buffer to disk, using the filename that
811                is already associated with the buffer, asking for one if
812                none is yet assigned.
813  * \li Syntax: buffer-write
814  */
815                 { LFUN_BUFFER_WRITE, "buffer-write", ReadOnly, Buffer },
816 /**
817  * \var lyx::kb_action lyx::LFUN_BUFFER_WRITE_AS
818  * \li Action: Rename and save current buffer.
819  * \li Syntax: buffer-write-as <FILENAME>
820  * \li Params: <FILENAME>: New name of the buffer/file. A relative path
821  *             is with respect to the original location of the buffer/file.
822  */
823                 { LFUN_BUFFER_WRITE_AS, "buffer-write-as", ReadOnly, Buffer },
824                 { LFUN_BUFFER_WRITE_ALL, "buffer-write-all", ReadOnly, Buffer },
825                 { LFUN_BUFFER_NEXT, "buffer-next", ReadOnly, Buffer },
826                 { LFUN_BUFFER_PREVIOUS, "buffer-previous", ReadOnly, Buffer },
827                 { LFUN_MASTER_BUFFER_UPDATE, "master-buffer-update", ReadOnly, Buffer },
828                 { LFUN_MASTER_BUFFER_VIEW, "master-buffer-view", ReadOnly, Buffer },
829                 { LFUN_BUFFER_LANGUAGE, "buffer-language", Noop, Buffer },
830                 { LFUN_BUFFER_SAVE_AS_DEFAULT, "buffer-save-as-default", Noop, Buffer },
831                 { LFUN_BUFFER_PARAMS_APPLY, "buffer-params-apply", Noop, Buffer },
832
833                 { LFUN_FILE_INSERT, "file-insert", Noop, Edit },
834                 { LFUN_FILE_INSERT_PLAINTEXT, "file-insert-plaintext", Noop, Edit },
835                 { LFUN_FILE_INSERT_PLAINTEXT_PARA, "file-insert-plaintext-para", Noop, Edit },
836                 { LFUN_FILE_NEW, "file-new", NoBuffer, Buffer },
837                 { LFUN_FILE_OPEN, "file-open", NoBuffer, Buffer },
838
839                 { LFUN_META_PREFIX, "meta-prefix", NoBuffer, System },
840
841                 { LFUN_CALL, "call", NoBuffer, System },
842                 { LFUN_CANCEL, "cancel", NoBuffer, System },
843
844                 { LFUN_COMMAND_EXECUTE, "command-execute", NoBuffer, Edit },
845                 { LFUN_COMMAND_PREFIX, "command-prefix", NoBuffer, Hidden },
846                 { LFUN_COMMAND_SEQUENCE, "command-sequence", NoBuffer, System },
847
848 /**
849  * \var lyx::kb_action lyx::LFUN_PREFERENCES_SAVE
850  * \li Action: Save user preferences.
851  * \li Syntax: preferences-save
852  * \li Origin: Lgb, 27 Nov 1999
853  */
854                 { LFUN_PREFERENCES_SAVE, "preferences-save", NoBuffer, System },
855 /**
856  * \var lyx::kb_action lyx::LFUN_RECONFIGURE
857  * \li Action: Reconfigure the automatic settings.
858  * \li Syntax: reconfigure
859  * \li Origin: Asger, 14 Feb 1997
860  */
861                 { LFUN_RECONFIGURE, "reconfigure", NoBuffer, System },
862                 { LFUN_LYXRC_APPLY, "lyxrc-apply", NoBuffer, System },
863 /**
864  * \var lyx::kb_action lyx::LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR
865  * \li Action: Determine whether keep cursor inside the editing window regardless
866                the scrollbar movement.
867  * \li Syntax: toggle-cursor-follows-scrollbar
868  * \li Origin: ARRae, 2 Dec 1997
869  */
870                 { LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR, "toggle-cursor-follows-scrollbar", ReadOnly, System },
871 /**
872  * \var lyx::kb_action lyx::LFUN_SET_COLOR
873  * \li Action: Set the given LyX color to the color defined by the X11 name given.
874  * \li Notion: A new color entry is created if the color is unknown.
875                Color names can be stored as a part of user settings.
876  * \li Syntax: set-color <LYX_NAME> <X11_NAME>
877  * \li Origin: SLior, 11 Jun 2000
878  */
879                 { LFUN_SET_COLOR, "set-color", ReadOnly | NoBuffer, System },
880 /**
881  * \var lyx::kb_action lyx::LFUN_STATISTICS
882  * \li Action: Count the statistics (number of words and characters)
883                in the document or in the given selection.
884  * \li Notion: Note that this function gives the number of words/chars written,
885                not the number of characters which will be typeset.
886  * \li Syntax: statistics
887  * \li Origin: lasgouttes, Jan 27 2004; ps, Jan 8 2008
888  */
889                 { LFUN_STATISTICS, "statistics", ReadOnly, System },
890
891                 { LFUN_NOACTION, "", Noop, Hidden }
892 #ifndef DOXYGEN_SHOULD_SKIP_THIS
893         };
894
895         for (int i = 0; items[i].action != LFUN_NOACTION; ++i) {
896                 newFunc(items[i].action, items[i].name, items[i].attrib, items[i].type);
897         }
898
899         init = true;
900 }
901 #endif
902
903 LyXAction::LyXAction()
904 {
905         init();
906 }
907
908
909 // Returns an action tag from a string.
910 FuncRequest LyXAction::lookupFunc(string const & func) const
911 {
912         string const func2 = trim(func);
913
914         if (func2.empty()) {
915                 return FuncRequest(LFUN_NOACTION);
916         }
917
918         string cmd;
919         string const arg = split(func2, cmd, ' ');
920
921         func_map::const_iterator fit = lyx_func_map.find(cmd);
922
923         return fit != lyx_func_map.end() ? FuncRequest(fit->second, arg) : FuncRequest(LFUN_UNKNOWN_ACTION);
924 }
925
926
927 string const LyXAction::getActionName(kb_action action) const
928 {
929         info_map::const_iterator const it = lyx_info_map.find(action);
930         return it != lyx_info_map.end() ? it->second.name : string();
931 }
932
933
934 LyXAction::func_type const LyXAction::getActionType(kb_action action) const
935 {
936         info_map::const_iterator const it = lyx_info_map.find(action);
937         return it != lyx_info_map.end() ? it->second.type : Hidden;
938 }
939
940
941 bool LyXAction::funcHasFlag(kb_action action,
942                             LyXAction::func_attrib flag) const
943 {
944         info_map::const_iterator ici = lyx_info_map.find(action);
945
946         if (ici == lyx_info_map.end()) {
947                 LYXERR0("action: " << action << " is not known.");
948                 BOOST_ASSERT(false);
949         }
950
951         return ici->second.attrib & flag;
952 }
953
954
955 LyXAction::const_func_iterator LyXAction::func_begin() const
956 {
957         return lyx_func_map.begin();
958 }
959
960
961 LyXAction::const_func_iterator LyXAction::func_end() const
962 {
963         return lyx_func_map.end();
964 }
965
966
967 } // namespace lyx