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