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