]> git.lyx.org Git - features.git/blob - src/LyXAction.cpp
Let doxygen recognize us
[features.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                 { LFUN_BUFFER_BEGIN, "buffer-begin", ReadOnly, Edit },
218                 { LFUN_BUFFER_BEGIN_SELECT, "buffer-begin-select", ReadOnly, Edit },
219                 { LFUN_BUFFER_END, "buffer-end", ReadOnly, Edit },
220                 { LFUN_BUFFER_END_SELECT, "buffer-end-select", ReadOnly, Edit },
221
222                 { LFUN_LINE_BEGIN, "line-begin", ReadOnly | NoUpdate, Edit },
223                 { LFUN_LINE_BEGIN_SELECT, "line-begin-select", ReadOnly | SingleParUpdate, Edit },
224                 { LFUN_LINE_BREAK, "line-break", Noop, Edit },
225                 { LFUN_LINE_DELETE, "line-delete-forward", Noop, Edit }, // there is no line-delete-backward
226                 { LFUN_LINE_END, "line-end", ReadOnly | NoUpdate, Edit },
227                 { LFUN_LINE_END_SELECT, "line-end-select", ReadOnly | SingleParUpdate, Edit },
228                 { LFUN_NEW_LINE, "new-line", Noop, Edit },
229
230 /**
231  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_MOVE_DOWN
232  * \li Action: Moves the current paragraph downwards in the document.
233  * \li Syntax: paragraph-move-down
234  * \li Origin: Edwin, 8 Apr 2006
235  */
236                 { LFUN_PARAGRAPH_MOVE_DOWN, "paragraph-move-down", Noop, Edit },
237 /**
238  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_MOVE_UP
239  * \li Action: Moves the current paragraph upwards in the document.
240  * \li Syntax: paragraph-move-up
241  * \li Origin: Edwin, 8 Apr 2006
242  */
243                 { LFUN_PARAGRAPH_MOVE_UP, "paragraph-move-up", Noop, Edit },
244 /**
245  * \var lyx::kb_action lyx::LFUN_COPY
246  * \li Action: Copies to the clipboard the last edit
247  * \li Syntax: copy
248  */
249                 { LFUN_COPY, "copy", ReadOnly, Edit },
250 /**
251  * \var lyx::kb_action lyx::LFUN_CUT
252  * \li Action: Cuts to the clipboard
253  * \li Syntax: cut
254  */
255                 { LFUN_CUT, "cut", Noop, Edit },
256 /**
257  * \var lyx::kb_action lyx::LFUN_PASTE
258  * \li Action: Pastes from the active clipboard
259  * \li Syntax: paste
260  */
261                 { LFUN_PASTE, "paste", Noop, Edit },
262                 { LFUN_CLIPBOARD_PASTE, "clipboard-paste", Noop, Edit },
263 /**
264  * \var lyx::kb_action lyx::LFUN_PRIMARY_SELECTION_PASTE
265  * \li Action: Pastes the material currently selected
266  * \li Syntax: primary-selection-paste
267  */
268                 { LFUN_PRIMARY_SELECTION_PASTE, "primary-selection-paste", Noop, Edit },
269 /**
270  * \var lyx::kb_action lyx::LFUN_UNDO
271  * \li Action: Undoes the last edit
272  * \li Syntax: undo
273  */
274                 { LFUN_UNDO, "undo", Noop, Edit },
275 /**
276  * \var lyx::kb_action lyx::LFUN_REDO
277  * \li Action: Redoes the last thing undone
278  * \li Syntax: redo
279  */
280                 { LFUN_REDO, "redo", Noop, Edit },
281                 { LFUN_REPEAT, "repeat", NoBuffer, Edit },
282                 { LFUN_CHARS_TRANSPOSE, "chars-transpose", Noop, Edit },
283
284                 { LFUN_DEPTH_DECREMENT, "depth-decrement", Noop, Edit },
285                 { LFUN_DEPTH_INCREMENT, "depth-increment", Noop, Edit },
286                 { LFUN_ENVIRONMENT_INSERT, "environment-insert", Noop, Edit },
287
288                 { LFUN_FONT_BOLD, "font-bold", Noop, Layout },
289                 { LFUN_FONT_TYPEWRITER, "font-typewriter", Noop, Layout },
290                 { LFUN_FONT_DEFAULT, "font-default", Noop, Layout },
291                 { LFUN_FONT_EMPH, "font-emph", Noop, Layout },
292                 { LFUN_FONT_FREE_APPLY, "font-free-apply", Noop, Layout },
293                 { LFUN_FONT_FREE_UPDATE, "font-free-update", Noop, Layout },
294                 { LFUN_FONT_NOUN, "font-noun", Noop, Layout },
295                 { LFUN_FONT_ROMAN, "font-roman", Noop, Layout },
296                 { LFUN_FONT_SANS, "font-sans", Noop, Layout },
297                 { LFUN_FONT_FRAK, "font-frak", Noop, Layout },
298                 { LFUN_FONT_ITAL, "font-ital", Noop, Layout },
299                 { LFUN_FONT_SIZE, "font-size", Noop, Layout },
300                 { LFUN_FONT_STATE, "font-state", ReadOnly, Layout },
301                 { LFUN_FONT_UNDERLINE, "font-underline", Noop, Layout },
302                 { LFUN_SCREEN_FONT_UPDATE, "screen-font-update", NoBuffer, Layout },
303
304                 { LFUN_INDEX_INSERT, "index-insert", Noop, Edit },
305                 { LFUN_INDEX_PRINT, "index-print", Noop, Edit },
306
307                 { LFUN_NOMENCL_INSERT, "nomencl-insert", Noop, Edit },
308                 { LFUN_NOMENCL_PRINT, "nomencl-print", Noop, Edit },
309
310                 { LFUN_NOTE_INSERT, "note-insert", Noop, Edit },
311                 { LFUN_NOTE_NEXT, "note-next", ReadOnly, Edit },
312
313                 { LFUN_BIBITEM_INSERT, "bibitem-insert", Noop, Edit },
314                 { LFUN_CITATION_INSERT, "citation-insert", Noop, Edit },
315                 { LFUN_BIBTEX_DATABASE_ADD, "bibtex-database-add", Noop, Edit },
316                 { LFUN_BIBTEX_DATABASE_DEL, "bibtex-database-del", Noop, Edit },
317
318  /**
319  * \var lyx::kb_action lyx::LFUN_LAYOUT
320  * \li Action: Sets the layout (that is, environment) for the current paragraph
321  * \li Syntax: layout <LAYOUT>
322  * \li Params: <LAYOUT>: the layout to use
323  */
324                 { LFUN_LAYOUT, "layout", Noop, Layout },
325 /**
326  * \var lyx::kb_action lyx::LFUN_LAYOUT_PARAGRAPH
327  * \li Action: Launches the paragraph settings dialog
328  * \li Syntax: layout-paragraph
329  */
330                 { LFUN_LAYOUT_PARAGRAPH, "layout-paragraph", ReadOnly, Layout },
331                 { LFUN_LAYOUT_TABULAR, "layout-tabular", Noop, Layout },
332 /**
333  * \var lyx::kb_action lyx::LFUN_DROP_LAYOUTS_CHOICE
334  * \li Action: Displays list of layout choices
335  * \li Notion: In the current (as of 2007) Qt4 frontend, this LFUN opens the
336                dropbox allowing for choice of layout
337  * \li Syntax: drop-layouts-choice
338  */
339                 { LFUN_DROP_LAYOUTS_CHOICE, "drop-layouts-choice", ReadOnly, Layout },
340 /**
341  * \var lyx::kb_action lyx::LFUN_LAYOUT_MODULES_CLEAR
342  * \li Action: Clears the module list
343  * \li Notion: Clears the list of included modules for the current buffer.
344  * \li Syntax: layout-modules-clear
345  * \li Origin: rgh, 25 August 2007
346  */
347                 { LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", Noop, Layout },
348 /**
349  * \var lyx::kb_action lyx::LFUN_LAYOUT_MODULE_ADD
350  * \li Action: Adds a module
351  * \li Notion: Adds a module to the list of included modules for the current buffer.
352  * \li Syntax: layout-module-add <MODULE>
353  * \li Params: <MODULE>: the module to be added
354  * \li Origin: rgh, 25 August 2007
355  */
356                 { LFUN_LAYOUT_MODULE_ADD, "layout-module-add", Noop, Layout },
357 /**
358  * \var lyx::kb_action lyx::LFUN_LAYOUT_RELOAD
359  * \li Action: Reloads layout information
360  * \li Notion: Reloads all layout information for the current buffer from disk, thus
361                recognizing any changes that have been made to layout files on the fly.
362                This is intended to be used only by layout developers and should not be
363                used when one is trying to do actual work.
364  * \li Syntax: layout-reload
365  * \li Origin: rgh, 3 September 2007
366  */
367                 { LFUN_LAYOUT_RELOAD, "layout-reload", Noop, Layout },
368 /**
369  * \var lyx::kb_action lyx::LFUN_TEXTCLASS_APPLY
370  * \li Action: Sets the text class for the current buffer
371  * \li Syntax: textclass-apply <TEXTCLASS>
372  * \li Params: <TEXTCLASS>: the textclass to set. Note that this must be
373                    the filename, minus the ".layout" extension.
374  */
375                 { LFUN_TEXTCLASS_APPLY, "textclass-apply", Noop, Layout },
376 /**
377  * \var lyx::kb_action lyx::LFUN_TEXTCLASS_LOAD
378  * \li Action: Loads information for a textclass from disk
379  * \li Syntax: textclass-load <TEXTCLASS>
380  * \li Params: <TEXTCLASS>: the textclass to load. Note that this must be
381                    the filename, minus the ".layout" extension.
382  */
383                 { LFUN_TEXTCLASS_LOAD, "textclass-load", Noop, Layout },
384
385 /**
386  * \var lyx::kb_action lyx::LFUN_MARK_OFF
387  * \li Action: Disable selecting of text-region.
388  * \li Syntax: mark-off
389  */
390                 { LFUN_MARK_OFF, "mark-off", ReadOnly, Edit },
391 /**
392  * \var lyx::kb_action lyx::LFUN_MARK_ON
393  * \li Action: Enable selecting of text-region.
394  * \li Notion: After enabling you can simply move arrow keys to get selected region.
395  * \li Syntax: mark-on
396  */
397                 { LFUN_MARK_ON, "mark-on", ReadOnly, Edit },
398 /**
399  * \var lyx::kb_action lyx::LFUN_MARK_TOGGLE
400  * \li Action: Toggle between MARK_ON and MARK_OFF
401  * \li Syntax: mark-toggle
402  * \li Origin: poenitz, May 5 2006
403  */
404                 { LFUN_MARK_TOGGLE, "mark-toggle", ReadOnly, Edit },
405                 
406                 { LFUN_MATH_DELIM, "math-delim", Noop, Math },
407                 { LFUN_MATH_BIGDELIM, "math-bigdelim", Noop, Math },
408                 { LFUN_MATH_DISPLAY, "math-display", Noop, Math },
409                 { LFUN_MATH_INSERT, "math-insert", Noop, Math },
410                 { LFUN_MATH_SUBSCRIPT, "math-subscript", Noop, Math },
411                 { LFUN_MATH_SUPERSCRIPT, "math-superscript", Noop, Math },
412                 { LFUN_MATH_LIMITS, "math-limits", Noop, Math },
413                 { LFUN_MATH_MACRO, "math-macro", Noop, Math },
414                 { LFUN_MATH_MUTATE, "math-mutate", Noop, Math },
415                 { LFUN_MATH_SPACE, "math-space", Noop, Math },
416                 { LFUN_MATH_IMPORT_SELECTION, "math-import-selection", Noop, Math },
417                 { LFUN_MATH_MATRIX, "math-matrix", Noop, Math },
418                 { LFUN_MATH_MODE, "math-mode", Noop, Math },
419 /**
420  * \var lyx::kb_action lyx::LFUN_MATH_NUMBER_LINE_TOGGLE
421  * \li Action: Toggles numbering of the current formula line.
422  * \li Notion: Must be in display formula mode.
423  * \li Syntax: math-number-line-toggle
424  * \li Origin: Alejandro 18 Jun 1996
425  */
426                 { LFUN_MATH_NUMBER_LINE_TOGGLE, "math-number-line-toggle", Noop, Math },
427 /**
428  * \var lyx::kb_action lyx::LFUN_MATH_NUMBER_TOGGLE
429  * \li Action: Toggles numbering of the current formula.
430  * \li Notion: Must be in display formula mode.
431  * \li Syntax: math-number-toggle
432  * \li Origin: Alejandro 4 Jun 1996
433  */
434                 { LFUN_MATH_NUMBER_TOGGLE, "math-number-toggle", Noop, Math },
435                 { LFUN_MATH_EXTERN, "math-extern", Noop, Math },
436                 { LFUN_MATH_SIZE, "math-size", Noop, Math },
437 /**
438  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_UNFOLD
439  * \li Action: Unfold a Math Macro
440  * \li Notion: Unfold the Math Macro the cursor is in, i.e.
441                display it as \foo.
442  * \li Syntax: math-macro-unfold
443  * \li Origin: sts, 06 January 2008
444  */
445                 { LFUN_MATH_MACRO_UNFOLD, "math-macro-unfold", ReadOnly | SingleParUpdate, Math },
446 /**
447  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_FOLD
448  * \li Action: Fold a Math Macro
449  * \li Notion: Fold the Math Macro the cursor is in if it was
450                unfolded, i.e. displayed as \foo before.
451  * \li Syntax: math-macro-fold
452  * \li Origin: sts, 06 January 2008
453  */
454                 { LFUN_MATH_MACRO_FOLD, "math-macro-fold", ReadOnly | SingleParUpdate, Math },
455 /**
456  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_ADD_PARAM
457  * \li Action: Add a parameter
458  * \li Notion: Add a parameter to a Math Macro
459  * \li Params: <NUM>: The number of the parameter behind which the new one
460                will be added (1 for the first, i.e. use 0 for add a
461                parameter at the left), defaults to the last one.
462  * \li Syntax: math-macro-add-param <NUM>
463  * \li Origin: sts, 06 January 2008
464  */
465                 { LFUN_MATH_MACRO_ADD_PARAM, "math-macro-add-param", Noop, Math },
466 /**
467  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_REMOVE_PARAM
468  * \li Action: Remove the last parameter
469  * \li Notion: Remove the last parameter of a Math Macro and
470                remove its value in all instances of the macro
471                in the buffer.
472  * \li Params: <NUM>: The number of the parameter to be deleted (1 for
473                the first), defaults to the last one.
474  * \li Syntax: math-macro-remove-param <NUM>
475  * \li Origin: sts, 06 January 2008
476  */
477                 { LFUN_MATH_MACRO_REMOVE_PARAM, "math-macro-remove-param", Noop, Math },
478 /**
479  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_APPEND_GREEDY_PARAM
480  * \li Action: Append a greedy parameter
481  * \li Notion: Append a greedy parameter to a Math Macro which
482                eats the following mathed cell in every instance of
483                the macro in the buffer.
484  * \li Syntax: math-macro-append-greedy-param
485  * \li Origin: sts, 06 January 2008
486  */
487                 { LFUN_MATH_MACRO_APPEND_GREEDY_PARAM, "math-macro-append-greedy-param", Noop, Math },
488 /**
489  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM
490  * \li Action: Remove a greedy parameter
491  * \li Notion: Remove a greedy parameter of a Math Macro and spit
492                out the values of it in every instance of the macro
493                in the buffer. If it is an optional parameter the [valud]
494                format is used.
495  * \li Syntax: math-macro-remove-greedy-param
496  * \li Origin: sts, 06 January 2008
497  */
498                 { LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM, "math-macro-remove-greedy-param", Noop, Math },
499 /**
500  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_MAKE_OPTIONAL
501  * \li Action: Make a parameter optional
502  * \li Notion: Turn the first non-optional parameter of a Math Macro
503                into an optional parameter with a default value.
504  * \li Syntax: math-macro-make-optional
505  * \li Origin: sts, 06 January 2008
506  */
507                 { LFUN_MATH_MACRO_MAKE_OPTIONAL, "math-macro-make-optional", Noop, Math },
508 /**
509  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_MAKE_NONOPTIONAL
510  * \li Action: Make a parameter non-optional
511  * \li Notion: Turn the last optional parameter of a Math Macro
512                into a non-optional parameter. The default value is
513                remembered to be reused later if the user changes his mind.
514  * \li Syntax: math-macro-make-nonoptional
515  * \li Origin: sts, 06 January 2008
516  */
517                 { LFUN_MATH_MACRO_MAKE_NONOPTIONAL, "math-macro-make-nonoptional", Noop, Math },
518 /**
519  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM
520  * \li Action: Add an optional parameter
521  * \li Notion: Insert an optional parameter just behind the
522                already existing optional parameters.
523  * \li Syntax: math-macro-add-optional-param
524  * \li Origin: sts, 06 January 2008
525  */
526                 { LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM, "math-macro-add-optional-param", Noop, Math },
527 /**
528  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM
529  * \li Action: Remove the last optional parameter
530  * \li Notion: Remove the last optional parameter of a Math Macro and
531                remove it in all the instances of the macro in the buffer.
532  * \li Syntax: math-macro-remove-optional-param
533  * \li Origin: sts, 06 January 2008
534  */
535                 { LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM, "math-macro-remove-optional-param", Noop, Math },
536 /**
537  * \var lyx::kb_action lyx::LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM
538  * \li Action: Add a greedy optional parameter
539  * \li Notion: Add a greedy optional parameter which eats the value
540                from the following cells in mathed which are in the [value]
541                format.
542  * \li Syntax: math-macro-add-greedy-optional-param
543  * \li Origin: sts, 06 January 2008
544  */
545                 { LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM, "math-macro-add-greedy-optional-param", Noop, Math },
546 /**
547  * \var lyx::kb_action lyx::LFUN_IN_MATHMACROTEMPLATE
548  * \li Action: Only active in Math Macro definition
549  * \li Notion: Dummy function which is only active in a Math Macro definition.
550                It's used to toggle the Math Macro toolbar if the cursor moves
551                into a Math Macro definition.
552  * \li Syntax: in-mathmacrotemplate
553  * \li Origin: sts, 06 January 2008
554  */
555                 { LFUN_IN_MATHMACROTEMPLATE, "in-mathmacrotemplate", Noop, Math },
556
557                 { LFUN_PARAGRAPH_DOWN, "paragraph-down", ReadOnly | NoUpdate, Edit },
558                 { LFUN_PARAGRAPH_DOWN_SELECT, "paragraph-down-select", ReadOnly, Edit },
559                 { LFUN_PARAGRAPH_GOTO, "paragraph-goto", ReadOnly, Edit },
560 /**
561  * \var lyx::kb_action lyx::LFUN_OUTLINE_UP
562  * \li Action: Move the current group in the upward direction in the
563                structure of the document.
564  * \li Notion: The "group" can be Part/Chapter/Section/etc. It moves
565                the whole substructure of the group.
566  * \li Syntax: outline-up
567  * \li Origin: Vermeer, 23 Mar 2006
568  */
569                 { LFUN_OUTLINE_UP, "outline-up", Noop, Edit },
570 /**
571  * \var lyx::kb_action lyx::LFUN_OUTLINE_DOWN
572  * \li Action: Move the current group in the downward direction in the
573                structure of the document.
574  * \li Notion: The "group" can be Part/Chapter/Section/etc. It moves
575                the whole substructure of the group.
576  * \li Syntax: outline-down
577  * \li Origin: Vermeer, 23 Mar 2006
578  */
579                 { LFUN_OUTLINE_DOWN, "outline-down", Noop, Edit },
580 /**
581  * \var lyx::kb_action lyx::LFUN_OUTLINE_IN
582  * \li Action: Moves the current group in the downward direction in the
583                hierarchy of the document structure.
584  * \li Notion: Part -> Chapter -> Section -> etc.
585  * \li Syntax: outline-in
586  * \li Origin: Vermeer, 23 Mar 2006
587  */
588                 { LFUN_OUTLINE_IN, "outline-in", Noop, Edit },
589 /**
590  * \var lyx::kb_action lyx::LFUN_OUTLINE_OUT
591  * \li Action: Moves the current group in the upward direction in the
592                hierarchy of the document structure.
593  * \li Notion: Part <- Chapter <- Section <- etc.
594  * \li Syntax: outline-out
595  * \li Origin: Vermeer, 23 Mar 2006
596  */
597                 { LFUN_OUTLINE_OUT, "outline-out", Noop, Edit },
598
599                 { LFUN_PARAGRAPH_SPACING, "paragraph-spacing", Noop, Edit },
600                 { LFUN_PARAGRAPH_UP, "paragraph-up", ReadOnly | NoUpdate, Edit },
601                 { LFUN_PARAGRAPH_UP_SELECT, "paragraph-up-select", ReadOnly, Edit },
602
603                 { LFUN_EXTERNAL_EDIT, "external-edit", Noop, Edit },
604                 { LFUN_GRAPHICS_EDIT, "graphics-edit", Noop, Edit },
605
606                 { LFUN_CELL_BACKWARD, "cell-backward", Noop, Edit },
607                 { LFUN_CELL_FORWARD, "cell-forward", Noop, Edit },
608                 { LFUN_CELL_SPLIT, "cell-split", Noop, Edit },
609                 { LFUN_TABULAR_INSERT, "tabular-insert", Noop, Edit },
610                 { LFUN_TABULAR_FEATURE, "tabular-feature", Noop, Edit },
611
612                 { LFUN_VC_CHECK_IN, "vc-check-in", ReadOnly, System },
613                 { LFUN_VC_CHECK_OUT, "vc-check-out", ReadOnly, System },
614                 { LFUN_VC_REGISTER, "vc-register", ReadOnly, System },
615                 { LFUN_VC_REVERT, "vc-revert", ReadOnly, System },
616                 { LFUN_VC_UNDO_LAST, "vc-undo-last", ReadOnly, System },
617
618                 { LFUN_CHANGES_TRACK, "changes-track", Noop, Edit },
619                 { LFUN_CHANGES_OUTPUT, "changes-output", Noop, Edit },
620                 { LFUN_CHANGE_NEXT, "change-next", ReadOnly, Edit },
621                 { LFUN_CHANGES_MERGE, "changes-merge", Noop, Edit },
622                 { LFUN_CHANGE_ACCEPT, "change-accept", Noop, Edit },
623                 { LFUN_CHANGE_REJECT, "change-reject", Noop, Edit },
624                 { LFUN_ALL_CHANGES_ACCEPT, "all-changes-accept", Noop, Edit },
625                 { LFUN_ALL_CHANGES_REJECT, "all-changes-reject", Noop, Edit },
626
627                 { LFUN_INSET_APPLY, "inset-apply", Noop, Edit },
628                 { LFUN_INSET_DISSOLVE, "inset-dissolve", Noop, Edit },
629                 { LFUN_INSET_INSERT, "inset-insert", Noop, Edit },
630                 { LFUN_INSET_MODIFY, "", Noop, Hidden },
631                 { LFUN_INSET_DIALOG_UPDATE, "", Noop, Hidden },
632                 { LFUN_INSET_SETTINGS, "inset-settings", ReadOnly, Edit },
633                 { LFUN_INSET_REFRESH, "", Noop, Hidden },
634                 { LFUN_NEXT_INSET_TOGGLE, "next-inset-toggle", ReadOnly, Edit },
635                 { LFUN_INSET_TOGGLE, "", ReadOnly, Hidden },
636                 { LFUN_ALL_INSETS_TOGGLE, "all-insets-toggle", ReadOnly, Edit },
637
638 /**
639  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_PARAMS
640  * \li Action: Change paragraph settings
641  * \li Notion: Modifies the current paragraph, or currently selected paragraphs.
642                This function only modifies, and does not override, existing settings.
643                Note that the "leftindent" indent setting is deprecated.
644  * \li Syntax: paragraph-params [<INDENT>] [<SPACING>] [<ALIGN>] [<OTHERS>]
645  * \li Params: <INDENT>:  \\noindent|\\indent|\\indent-toggle|\\leftindent LENGTH\n
646                <SPACING>: \\paragraph_spacing default|single|onehalf|double|other\n
647                <ALIGN>:   \\align block|left|right|center|default\n
648                <OTHERS>:  \\labelwidthstring WIDTH|\\start_of_appendix\n
649  * \li Origin: rgh, Aug 15 2007
650  */
651                 { LFUN_PARAGRAPH_PARAMS, "paragraph-params", Noop, Edit },
652 /**
653  * \var lyx::kb_action lyx::LFUN_PARAGRAPH_PARAMS_APPLY
654  * \li Action: Change paragraph settings.
655  * \li Notion: Overwrite all nonspecified settings to the default ones.
656                Use paragraph-params lfun if you don't want to overwrite others settings.
657  * \li Syntax: paragraph-params-apply <INDENT> <SPACING> <ALIGN> <OTHERS>
658  * \li Params: For parameters see LFUN_PARAGRAPH_PARAMS
659  * \li Origin: leeming, 30 Mar 2004
660  */
661                 { LFUN_PARAGRAPH_PARAMS_APPLY, "paragraph-params-apply", Noop, Edit },
662                 { LFUN_PARAGRAPH_UPDATE, "", Noop, Hidden },
663
664                 { LFUN_FINISHED_FORWARD, "", ReadOnly, Hidden },
665                 { LFUN_FINISHED_BACKWARD, "", ReadOnly, Hidden },
666                 { LFUN_FINISHED_RIGHT, "", ReadOnly, Hidden },
667                 { LFUN_FINISHED_LEFT, "", ReadOnly, Hidden },
668
669                 { LFUN_LANGUAGE, "language", Noop, Edit },
670
671                 { LFUN_LABEL_GOTO, "label-goto", ReadOnly, Edit },
672                 { LFUN_LABEL_INSERT, "label-insert", Noop, Edit },
673                 { LFUN_REFERENCE_NEXT, "reference-next", ReadOnly, Edit },
674
675 /**
676  * \var lyx::kb_action lyx::LFUN_BOOKMARK_GOTO
677  * \li Action: Goto a bookmark
678  * \li Notion: Moves the cursor to the numbered bookmark, opening the file
679                if necessary. Note that bookmarsk are saved per-session, not
680                per file.
681  * \li Syntax: bookmark-goto <NUMBER>
682  * \li Params: <NUMBER>: the number of the bookmark to restore.
683  * \li Origin: Dekel, 27 January 2001
684  */
685                 { LFUN_BOOKMARK_GOTO, "bookmark-goto", NoBuffer, Edit },
686 /**
687  * \var lyx::kb_action lyx::LFUN_BOOKMARK_SAVE
688  * \li Action: Save a bookmark
689  * \li Notion: Saves a numbered bookmark to the sessions file. The number
690                must be between 1 and 9, inclusive. Note that bookmarks are
691                saved per-session, not per file.
692  * \li Syntax: bookmark-save <NUMBER>
693  * \li Params: <NUMBER>: the number of the bookmark to save.
694  * \li Origin: Dekel, 27 January 2001
695  */
696                 { LFUN_BOOKMARK_SAVE, "bookmark-save", ReadOnly, Edit },
697 /**
698  * \var lyx::kb_action lyx::LFUN_BOOKMARK_CLEAR
699  * \li Action: Clears the list of saved bookmarks
700  * \li Syntax: bookmark-clear
701  * \li Origin: bpeng, 31 October 2006
702  */
703                 { LFUN_BOOKMARK_CLEAR, "bookmark-clear", NoBuffer, Edit },
704
705                 { LFUN_HELP_OPEN, "help-open", NoBuffer | Argument, Buffer },
706 /**
707  * \var lyx::kb_action lyx::LFUN_LYX_QUIT
708  * \li Action: Terminates the current LyX instance
709  * \li Notion: Terminates the current LyX instance, asking whether to save
710                modified documents, etc.
711  * \li Syntax: lyx-quit
712  */
713                 { LFUN_LYX_QUIT, "lyx-quit", NoBuffer, Buffer },
714                 { LFUN_TOOLBAR_TOGGLE, "toolbar-toggle", NoBuffer, Buffer },
715                 { LFUN_MENU_OPEN, "menu-open", NoBuffer, Buffer },
716
717                 { LFUN_WINDOW_NEW, "window-new", NoBuffer, Buffer },
718                 { LFUN_WINDOW_CLOSE, "window-close", NoBuffer, Buffer },
719
720                 { LFUN_DIALOG_SHOW, "dialog-show", NoBuffer, Edit },
721                 { LFUN_DIALOG_SHOW_NEW_INSET, "dialog-show-new-inset", Noop, Edit },
722                 { LFUN_DIALOG_UPDATE, "dialog-update", NoBuffer, Edit },
723                 { LFUN_DIALOG_HIDE, "dialog-hide", NoBuffer, Edit },
724                 { LFUN_DIALOG_TOGGLE, "dialog-toggle", NoBuffer, Edit },
725                 { LFUN_DIALOG_DISCONNECT_INSET, "dialog-disconnect-inset", Noop, Edit },
726
727                 { LFUN_MOUSE_PRESS, "", ReadOnly, Hidden },
728                 { LFUN_MOUSE_MOTION, "", ReadOnly | SingleParUpdate, Hidden },
729                 { LFUN_MOUSE_RELEASE, "", ReadOnly, Hidden },
730                 { LFUN_MOUSE_DOUBLE, "", ReadOnly, Hidden },
731                 { LFUN_MOUSE_TRIPLE, "", ReadOnly, Hidden },
732
733                 { LFUN_KEYMAP_OFF, "keymap-off", ReadOnly, Edit },
734                 { LFUN_KEYMAP_PRIMARY, "keymap-primary", ReadOnly, Edit },
735                 { LFUN_KEYMAP_SECONDARY, "keymap-secondary", ReadOnly, Edit },
736                 { LFUN_KEYMAP_TOGGLE, "keymap-toggle", ReadOnly, Edit },
737
738                 { LFUN_MESSAGE, "message", NoBuffer, System },
739                 { LFUN_FLOAT_LIST, "float-list", Noop, Edit },
740                 { LFUN_ESCAPE, "escape", ReadOnly, Edit },
741
742                 { LFUN_SERVER_CHAR_AFTER, "server-char-after", ReadOnly, System },
743                 { LFUN_SERVER_GET_FONT, "server-get-font", ReadOnly, System },
744                 { LFUN_SERVER_GET_LAYOUT, "server-get-layout", ReadOnly, System },
745                 { LFUN_SERVER_GET_NAME, "server-get-name", ReadOnly, System },
746                 { LFUN_SERVER_GET_XY, "server-get-xy", ReadOnly, System },
747                 { LFUN_SERVER_GOTO_FILE_ROW, "server-goto-file-row", ReadOnly, System },
748                 { LFUN_SERVER_NOTIFY, "server-notify", ReadOnly, System },
749                 { LFUN_SERVER_SET_XY, "server-set-xy", ReadOnly, System },
750
751                 { LFUN_BUILD_PROGRAM, "build-program", ReadOnly, Buffer },
752
753 /**
754  * \var lyx::kb_action lyx::LFUN_BUFFER_AUTO_SAVE
755  * \li Action: Saves the current buffer to a temporary file
756  * \li Notion: Saves the current buffer to a file named "#filename#". This LFUN
757                is called automatically by LyX, to "autosave" the current buffer.
758         * \li Syntax: buffer-auto-save
759  */
760                 { LFUN_BUFFER_AUTO_SAVE, "buffer-auto-save", Noop, Buffer },
761                 { LFUN_BUFFER_CHILD_OPEN, "buffer-child-open", ReadOnly, Buffer },
762                 { LFUN_BUFFER_CHKTEX, "buffer-chktex", ReadOnly, Buffer },
763                 { LFUN_BUFFER_TOGGLE_COMPRESSION, "buffer-toggle-compression", Noop, Buffer },
764                 { LFUN_BUFFER_TOGGLE_EMBEDDING, "buffer-toggle-embedding", Noop, Buffer },
765 /**
766  * \var lyx::kb_action lyx::LFUN_BUFFER_CLOSE
767  * \li Action: Closes the current buffer
768  * \li Notion: Closes the current buffer, asking whether to save it, etc,
769                if the buffer has been modified.
770  * \li Syntax: buffer-close
771  */
772                 { LFUN_BUFFER_CLOSE, "buffer-close", ReadOnly, Buffer },
773                 { LFUN_BUFFER_EXPORT, "buffer-export", ReadOnly, Buffer },
774                 { LFUN_BUFFER_EXPORT_CUSTOM, "buffer-export-custom", ReadOnly, Buffer },
775                 { LFUN_BUFFER_PRINT, "buffer-print", ReadOnly, Buffer },
776                 { LFUN_BUFFER_IMPORT, "buffer-import", NoBuffer, Buffer },
777 /**
778  * \var lyx::kb_action lyx::LFUN_BUFFER_NEW
779  * \li Action: Creates a new buffer (that is, document)
780  * \li Syntax: buffer-new
781  */
782                 { LFUN_BUFFER_NEW, "buffer-new", NoBuffer, Buffer },
783                 { LFUN_BUFFER_NEW_TEMPLATE,"buffer-new-template", NoBuffer, Buffer },
784                 { LFUN_BUFFER_RELOAD, "buffer-reload", ReadOnly, Buffer },
785                 { LFUN_BUFFER_SWITCH, "buffer-switch", NoBuffer | ReadOnly, Buffer },
786                 { LFUN_BUFFER_TOGGLE_READ_ONLY, "buffer-toggle-read-only", ReadOnly, Buffer },
787                 { LFUN_BUFFER_UPDATE, "buffer-update", ReadOnly, Buffer },
788 /**
789  * \var lyx::kb_action lyx::LFUN_BUFFER_VIEW
790  * \li Action: Displays current buffer in chosen format
791  * \li Notion: Displays the contents of the current buffer in the chosen
792                format, for example, PDF or DVI. This runs the necessary
793                converter, calls the defined viewer, and so forth.
794  * \li Syntax: buffer-view <FORMAT>
795  * \li Params: <FORMAT>: The format to display, where this is one of the
796                          formats defined (in the current GUI) in the
797                          Tools>Preferences>File Formats dialog.
798  */
799                 { LFUN_BUFFER_VIEW, "buffer-view", ReadOnly, Buffer },
800 /**
801  * \var lyx::kb_action lyx::LFUN_BUFFER_WRITE
802  * \li Action: Saves the current buffer
803  * \li Notion: Saves the current buffer to disk, using the filename that
804                is already associated with the buffer, asking for one if
805                none is yet assigned.
806  * \li Syntax: buffer-write
807  */
808                 { LFUN_BUFFER_WRITE, "buffer-write", ReadOnly, Buffer },
809 /**
810  * \var lyx::kb_action lyx::LFUN_BUFFER_WRITE_AS
811  * \li Action: Rename and save current buffer.
812  * \li Syntax: buffer-write-as <FILENAME>
813  * \li Params: <FILENAME>: New name of the buffer/file. A relative path
814  *             is with respect to the original location of the buffer/file.
815  */
816                 { LFUN_BUFFER_WRITE_AS, "buffer-write-as", ReadOnly, Buffer },
817                 { LFUN_BUFFER_WRITE_ALL, "buffer-write-all", ReadOnly, Buffer },
818                 { LFUN_BUFFER_NEXT, "buffer-next", ReadOnly, Buffer },
819                 { LFUN_BUFFER_PREVIOUS, "buffer-previous", ReadOnly, Buffer },
820                 { LFUN_MASTER_BUFFER_UPDATE, "master-buffer-update", ReadOnly, Buffer },
821                 { LFUN_MASTER_BUFFER_VIEW, "master-buffer-view", ReadOnly, Buffer },
822                 { LFUN_BUFFER_LANGUAGE, "buffer-language", Noop, Buffer },
823                 { LFUN_BUFFER_SAVE_AS_DEFAULT, "buffer-save-as-default", Noop, Buffer },
824                 { LFUN_BUFFER_PARAMS_APPLY, "buffer-params-apply", Noop, Buffer },
825
826                 { LFUN_FILE_INSERT, "file-insert", Noop, Edit },
827                 { LFUN_FILE_INSERT_PLAINTEXT, "file-insert-plaintext", Noop, Edit },
828                 { LFUN_FILE_INSERT_PLAINTEXT_PARA, "file-insert-plaintext-para", Noop, Edit },
829                 { LFUN_FILE_NEW, "file-new", NoBuffer, Buffer },
830                 { LFUN_FILE_OPEN, "file-open", NoBuffer, Buffer },
831
832                 { LFUN_META_PREFIX, "meta-prefix", NoBuffer, System },
833
834                 { LFUN_CALL, "call", NoBuffer, System },
835                 { LFUN_CANCEL, "cancel", NoBuffer, System },
836
837                 { LFUN_COMMAND_EXECUTE, "command-execute", NoBuffer, Edit },
838                 { LFUN_COMMAND_PREFIX, "command-prefix", NoBuffer, Hidden },
839                 { LFUN_COMMAND_SEQUENCE, "command-sequence", NoBuffer, System },
840
841 /**
842  * \var lyx::kb_action lyx::LFUN_PREFERENCES_SAVE
843  * \li Action: Save user preferences.
844  * \li Syntax: preferences-save
845  * \li Origin: Lgb, 27 Nov 1999
846  */
847                 { LFUN_PREFERENCES_SAVE, "preferences-save", NoBuffer, System },
848 /**
849  * \var lyx::kb_action lyx::LFUN_RECONFIGURE
850  * \li Action: Reconfigure the automatic settings.
851  * \li Syntax: reconfigure
852  * \li Origin: Asger, 14 Feb 1997
853  */
854                 { LFUN_RECONFIGURE, "reconfigure", NoBuffer, System },
855                 { LFUN_LYXRC_APPLY, "lyxrc-apply", NoBuffer, System },
856                 { LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR, "toggle-cursor-follows-scrollbar", ReadOnly, System },
857
858                 { LFUN_SET_COLOR, "set-color", ReadOnly | NoBuffer, Edit },
859                 { LFUN_THESAURUS_ENTRY, "thesaurus-entry", ReadOnly, Edit },
860 /**
861  * \var lyx::kb_action lyx::LFUN_STATISTICS
862  * \li Action: Count the statistics (number of words and characters)
863                in the document or in the given selection.
864  * \li Notion: Note that this function gives the number of words/chars written,
865                not the number of characters which will be typeset.
866  * \li Syntax: statistics
867  * \li Origin: lasgouttes, Jan 27 2004; ps, Jan 8 2008
868  */
869                 { LFUN_STATISTICS, "statistics", ReadOnly, System },
870
871                 { LFUN_NOACTION, "", Noop, Hidden }
872 #ifndef DOXYGEN_SHOULD_SKIP_THIS
873         };
874
875         for (int i = 0; items[i].action != LFUN_NOACTION; ++i) {
876                 newFunc(items[i].action, items[i].name, items[i].attrib, items[i].type);
877         }
878
879         init = true;
880 }
881 #endif
882
883 LyXAction::LyXAction()
884 {
885         init();
886 }
887
888
889 // Returns an action tag from a string.
890 FuncRequest LyXAction::lookupFunc(string const & func) const
891 {
892         string const func2 = trim(func);
893
894         if (func2.empty()) {
895                 return FuncRequest(LFUN_NOACTION);
896         }
897
898         string cmd;
899         string const arg = split(func2, cmd, ' ');
900
901         func_map::const_iterator fit = lyx_func_map.find(cmd);
902
903         return fit != lyx_func_map.end() ? FuncRequest(fit->second, arg) : FuncRequest(LFUN_UNKNOWN_ACTION);
904 }
905
906
907 string const LyXAction::getActionName(kb_action action) const
908 {
909         info_map::const_iterator const it = lyx_info_map.find(action);
910         return it != lyx_info_map.end() ? it->second.name : string();
911 }
912
913
914 LyXAction::func_type const LyXAction::getActionType(kb_action action) const
915 {
916         info_map::const_iterator const it = lyx_info_map.find(action);
917         return it != lyx_info_map.end() ? it->second.type : Hidden;
918 }
919
920
921 bool LyXAction::funcHasFlag(kb_action action,
922                             LyXAction::func_attrib flag) const
923 {
924         info_map::const_iterator ici = lyx_info_map.find(action);
925
926         if (ici == lyx_info_map.end()) {
927                 LYXERR0("action: " << action << " is not known.");
928                 BOOST_ASSERT(false);
929         }
930
931         return ici->second.attrib & flag;
932 }
933
934
935 LyXAction::const_func_iterator LyXAction::func_begin() const
936 {
937         return lyx_func_map.begin();
938 }
939
940
941 LyXAction::const_func_iterator LyXAction::func_end() const
942 {
943         return lyx_func_map.end();
944 }
945
946
947 } // namespace lyx