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