]> git.lyx.org Git - features.git/blob - src/LyXAction.cpp
* 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 "FuncRequest.h"
19
20 #include "support/debug.h"
21 #include "support/lstrings.h"
22
23 #include "support/assert.h"
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  * \var lyx::FuncCode lyx::LFUN_
60  * \li Action: 
61  * \li Notion: 
62  * \li Syntax: 
63  * \li Params: 
64  * \li Sample:
65  * \li Origin: 
66  * \endvar
67  */
68
69 LyXAction lyxaction;
70
71
72 void LyXAction::newFunc(FuncCode action, string const & name,
73                         unsigned int attrib, LyXAction::func_type type)
74 {
75         lyx_func_map[name] = action;
76         FuncInfo tmpinfo;
77         tmpinfo.name = name;
78         tmpinfo.attrib = attrib;
79         tmpinfo.type = type;
80         lyx_info_map[action] = tmpinfo;
81 }
82
83
84 // Needed for LFUNs documentation to be accepted, since doxygen won't take
85 // \var inside functions.
86 #ifndef DOXYGEN_SHOULD_SKIP_THIS
87 void LyXAction::init()
88 {
89         // This function was changed to use the array below in initalization
90         // instead of calling newFunc numerous times because of compilation
91         // times. Since the array is not static we get back the memory it
92         // occupies after the init is completed. It compiles several
93         // magnitudes faster.
94
95         static bool init;
96         if (init) return;
97
98         struct ev_item {
99                 FuncCode action;
100                 char const * name;
101                 unsigned int attrib;
102                 func_type type;
103         };
104
105         ev_item const items[] = {
106 #endif
107 /*!
108  * \var lyx::FuncCode lyx::LFUN_ACCENT_ACUTE
109  * \li Action: Adds an acute accent \htmlonly (&aacute;)\endhtmlonly
110                to the next character typed.
111  * \li Syntax: accent-acute
112  * \endvar
113  */
114                 { LFUN_ACCENT_ACUTE, "accent-acute", Noop, Edit },
115 /*!
116  * \var lyx::FuncCode lyx::LFUN_ACCENT_BREVE
117  * \li Action: Adds a breve accent \htmlonly (&#259;)\endhtmlonly
118                to the next character typed.
119  * \li Syntax: accent-breve
120  * \endvar
121  */
122                 { LFUN_ACCENT_BREVE, "accent-breve", Noop, Edit },
123 /*!
124  * \var lyx::FuncCode lyx::LFUN_ACCENT_CARON
125  * \li Action: Adds a caron \htmlonly (&#462;)\endhtmlonly
126                to the next character typed.
127  * \li Syntax: accent-caron
128  * \endvar
129  */
130                 { LFUN_ACCENT_CARON, "accent-caron", Noop, Edit },
131 /*!
132  * \var lyx::FuncCode lyx::LFUN_ACCENT_CEDILLA
133  * \li Action: Adds a cedilla \htmlonly (&ccedil;)\endhtmlonly
134                to the next character typed.
135  * \li Syntax: accent-cedilla
136  * \endvar
137  */
138                 { LFUN_ACCENT_CEDILLA, "accent-cedilla", Noop, Edit },
139 /*!
140  * \var lyx::FuncCode lyx::LFUN_ACCENT_CIRCLE
141  * \li Action: Adds a circle accent \htmlonly (&aring;)\endhtmlonly
142                to the next character typed.
143  * \li Syntax: accent-circle
144  * \endvar
145  */
146                 { LFUN_ACCENT_CIRCLE, "accent-circle", Noop, Edit },
147 /*!
148  * \var lyx::FuncCode lyx::LFUN_ACCENT_CIRCUMFLEX
149  * \li Action: Adds a circumflex \htmlonly (&ecirc;)\endhtmlonly
150                to the next character typed.
151  * \li Syntax: accent-circumflex
152  * \endvar
153  */
154                 { LFUN_ACCENT_CIRCUMFLEX, "accent-circumflex", Noop, Edit },
155 /*!
156  * \var lyx::FuncCode lyx::LFUN_ACCENT_DOT
157  * \li Action: Adds a dot accent \htmlonly (&#380;)\endhtmlonly
158                to the next character typed.
159  * \li Syntax: accent-dot
160  * \endvar
161  */
162                 { LFUN_ACCENT_DOT, "accent-dot", Noop, Edit },
163 /*!
164  * \var lyx::FuncCode lyx::LFUN_ACCENT_GRAVE
165  * \li Action: Adds a grave accent \htmlonly (&egrave;)\endhtmlonly
166                to the next character typed.
167  * \li Syntax: accent-grave
168  * \endvar
169  */
170                 { LFUN_ACCENT_GRAVE, "accent-grave", Noop, Edit },
171 /*!
172  * \var lyx::FuncCode lyx::LFUN_ACCENT_HUNGARIAN_UMLAUT
173  * \li Action: Adds a Hungarian umlaut \htmlonly (&#337;)\endhtmlonly
174                to the next character typed.
175  * \li Syntax: accent-grave
176  * \endvar
177  */
178                 { LFUN_ACCENT_HUNGARIAN_UMLAUT, "accent-hungarian-umlaut", Noop, Edit },
179 /*!
180  * \var lyx::FuncCode lyx::LFUN_ACCENT_MACRON
181  * \li Action: Adds a macron \htmlonly (&#257;)\endhtmlonly
182                to the next character typed.
183  * \li Syntax: accent-macron
184  * \endvar
185  */
186                 { LFUN_ACCENT_MACRON, "accent-macron", Noop, Edit },
187 /*!
188  * \var lyx::FuncCode lyx::LFUN_ACCENT_OGONEK
189  * \li Action: Adds an ogonek accent \htmlonly (&#261;)\endhtmlonly
190                to the next character typed.
191  * \li Syntax: accent-ogonek
192  * \endvar
193  */
194                 { LFUN_ACCENT_OGONEK, "accent-ogonek", Noop, Edit },
195                 { LFUN_ACCENT_SPECIAL_CARON, "accent-special-caron", Noop, Edit },
196 /*!
197  * \var lyx::FuncCode lyx::LFUN_ACCENT_TIE
198  * \li Action: Adds a tie \htmlonly (a&#865;)\endhtmlonly
199                over the next two character typed.
200  * \li Notion: the following char will finish the tie.
201  * \li Syntax: accent-tie
202  * \endvar
203  */
204                 { LFUN_ACCENT_TIE, "accent-tie", Noop, Edit },
205 /*!
206  * \var lyx::FuncCode lyx::LFUN_ACCENT_TILDE
207  * \li Action: Adds a tilde \htmlonly (&atilde;)\endhtmlonly
208                over the next character typed.
209  * \li Syntax: accent-tilde
210  * \endvar
211  */
212                 { LFUN_ACCENT_TILDE, "accent-tilde", Noop, Edit },
213 /*!
214  * \var lyx::FuncCode lyx::LFUN_ACCENT_UMLAUT
215  * \li Action: Adds an umlaut \htmlonly (&auml;)\endhtmlonly
216                over the next character typed.
217  * \li Syntax: accent-umlaut
218  * \endvar
219  */
220                 { LFUN_ACCENT_UMLAUT, "accent-umlaut", Noop, Edit },
221 /*!
222  * \var lyx::FuncCode lyx::LFUN_ACCENT_UNDERBAR
223  * \li Action: Adds a bar \htmlonly (a&#800;)\endhtmlonly
224                under the next character typed.
225  * \li Syntax: accent-underbar
226  * \endvar
227  */
228                 { LFUN_ACCENT_UNDERBAR, "accent-underbar", Noop, Edit },
229 /*!
230  * \var lyx::FuncCode lyx::LFUN_ACCENT_UNDERDOT
231  * \li Action: Adds a dot \htmlonly (&#7841;)\endhtmlonly
232                under the next character typed.
233  * \li Syntax: accent-underdot
234  * \endvar
235  */
236                 { LFUN_ACCENT_UNDERDOT, "accent-underdot", Noop, Edit },
237
238 /*!
239  * \var lyx::FuncCode lyx::LFUN_CAPTION_INSERT
240  * \li Action: Inserts a caption inset.
241  * \li Syntax: caption-insert
242  * \li Origin: Lgb, 18 Jul 2000
243  * \endvar
244  */
245                 { LFUN_CAPTION_INSERT, "caption-insert", Noop, Edit },
246 /*!
247  * \var lyx::FuncCode lyx::LFUN_DATE_INSERT
248  * \li Action: Inserts the current date.
249  * \li Syntax: date-insert [<ARG>]
250  * \li Params: <ARG>: Format of date. The default value (%x) can be set
251                      in Preferences->Date format. For possible formats
252                      see manual page of strftime function.
253  * \li Origin: jdblair, 31 Jan 2000
254  * \endvar
255  */
256                 { LFUN_DATE_INSERT, "date-insert", Noop, Edit },
257 /*!
258  * \var lyx::FuncCode lyx::LFUN_FOOTNOTE_INSERT
259  * \li Action: Inserts a footnote inset.
260  * \li Syntax: footnote-insert
261  * \li Origin: Jug, 7 Mar 2000
262  * \endvar
263  */
264                 { LFUN_FOOTNOTE_INSERT, "footnote-insert", Noop, Edit },
265 /*!
266  * \var lyx::FuncCode lyx::LFUN_ERT_INSERT
267  * \li Action: Inserts an ERT inset.
268  * \li Syntax: ert-insert
269  * \li Origin: Jug, 18 Feb 2000
270  * \endvar
271  */
272                 { LFUN_ERT_INSERT, "ert-insert", Noop, Edit },
273                 { LFUN_FLOAT_INSERT, "float-insert", Noop, Edit },
274                 { LFUN_FLOAT_WIDE_INSERT, "float-wide-insert", Noop, Edit },
275                 { LFUN_WRAP_INSERT, "wrap-insert", Noop, Edit },
276 /*!
277  * \var lyx::FuncCode lyx::LFUN_OPTIONAL_INSERT
278  * \li Action: Inserts an optional-argument (short title) inset.
279  * \li Syntax: optional-insert
280  * \li Origin: Martin, 12 Aug 2002
281  * \endvar
282  */
283                 { LFUN_OPTIONAL_INSERT, "optional-insert", Noop, Edit },
284 /*!
285  * \var lyx::FuncCode lyx::LFUN_LINE_INSERT
286  * \li Action: Inserts a horizontal line.
287  * \li Syntax: line-insert
288  * \li Origin: poenitz,  Oct 27 2003
289  * \endvar
290  */
291                 { LFUN_LINE_INSERT, "line-insert", Noop, Edit },
292 /*!
293  * \var lyx::FuncCode lyx::LFUN_NEWPAGE_INSERT
294  * \li Action: Inserts a new page.
295  * \li Syntax: newpage-insert<ARG>
296  * \li Params: <ARG>: <newpage|pagebreak|clearpage|cleardoublepage> default: newpage
297  * \li Origin: uwestoehr, 24 Nov 2007
298  * \endvar
299  */
300                 { LFUN_NEWPAGE_INSERT, "newpage-insert", Noop, Edit },
301 /*!
302  * \var lyx::FuncCode lyx::LFUN_MARGINALNOTE_INSERT
303  * \li Action: Inserts a marginal note.
304  * \li Syntax: marginalnote-insert
305  * \li Origin: Lgb, 26 Jun 2000
306  * \endvar
307  */
308                 { LFUN_MARGINALNOTE_INSERT, "marginalnote-insert", Noop, Edit },
309 /*!
310  * \var lyx::FuncCode lyx::LFUN_UNICODE_INSERT
311  * \li Action: Inserts a single unicode character.
312  * \li Syntax: unicode-insert <CHAR>
313  * \li Params: <CHAR>: The character to insert, given as its code
314                        point, in hexadecimal, e.g.: unicode-insert 0x0100.
315  * \li Origin: Lgb, 22 Oct 2006
316  * \endvar
317  */
318                 { LFUN_UNICODE_INSERT, "unicode-insert", Noop, Edit },
319 /*!
320  * \var lyx::FuncCode lyx::LFUN_LISTING_INSERT
321  * \li Action: Inserts a new listings inset.
322  * \li Syntax: listing-insert
323  * \li Origin: Herbert, 10 Nov 2001; bpeng, 2 May 2007
324  * \endvar
325  */
326                 { LFUN_LISTING_INSERT, "listing-insert", Noop, Edit },
327                 { LFUN_QUOTE_INSERT, "quote-insert", Noop, Edit },
328 /*!
329  * \var lyx::FuncCode lyx::LFUN_INFO_INSERT
330  * \li Action: Displays shortcuts, lyxrc, package and textclass availability and menu
331                information in a non-editable boxed InsetText.
332  * \li Notion: 1. input the type and argument of this inset, e.g. "menu paste", in
333                the work area.\n
334                2. select the text and run "info-insert".\n
335                An InsetInfo can have type "shortcut", "lyxrc", "package", "textclass",
336                "menu", or "buffer". Arguments and outputs vary by type. For detailed
337                description see file InsetInfo.h.
338  * \li Syntax: info-insert
339  * \li Origin: bpeng, 7 Oct 2007
340  * \endvar
341  */
342                 { LFUN_INFO_INSERT, "info-insert", Noop, Edit },
343                 { LFUN_BRANCH_INSERT, "branch-insert", Noop, Edit },
344                 { LFUN_BOX_INSERT, "box-insert", Noop, Edit },
345 /*!
346  * \var lyx::FuncCode lyx::LFUN_FLEX_INSERT
347  * \li Action: Inserts CharStyle, Custom inset or XML short element.
348  * \li Notion: Look into the Customization manual for more information about
349                these elements.\n
350                For dissolving the element see #LFUN_INSET_DISSOLVE.
351  * \li Syntax: flex-insert <TYPE:Name>
352  * \li Params: TYPE: CharStyle|Custom|Element|Standard
353                      Identifies whether this is a Character Style, a
354                      Custom Inset or an XML Element, and which dynamical 
355                      sub-menu this flex inset is in on the LyX menu tree. 
356                      If Standard (currently unused): none of these.
357                Name: This name must be defined either in your layout file
358                      or imported by some module. The definition is\n
359                      InsetLayout <TYPE:Name>
360  * \li Sample: flex-insert CharStyle:Code
361  * \endvar
362  */
363                 { LFUN_FLEX_INSERT, "flex-insert", Noop, Edit },
364                 { LFUN_SELF_INSERT, "self-insert", SingleParUpdate, Hidden },
365 /*!
366  * \var lyx::FuncCode lyx::LFUN_SPACE_INSERT
367  * \li Action: Inserts one of horizontal space insets.
368  * \li Syntax: space-insert <NAME> [<LEN>]
369  * \li Params: <NAME>: normal, protected, thin, quad, qquad, enspace, enskip,
370                        negthinspace, hfill, hfill*, dotfill, hrulefill, hspace,
371                        hspace* \n
372                <LEN>: length for custom spaces (hspace, hspace* for protected)
373  * \li Origin: JSpitzm, 20 May 2003, Mar 17 2008
374  * \endvar
375  */
376                 { LFUN_SPACE_INSERT, "space-insert", Noop, Edit },
377                 { LFUN_HYPERLINK_INSERT, "href-insert", Noop, Edit },
378 /*!
379  * \var lyx::FuncCode lyx::LFUN_SPECIALCHAR_INSERT
380  * \li Action: Inserts various characters into the document.
381  * \li Syntax: specialchar-insert <CHAR>
382  * \li Params: <CHAR>: hyphenation, ligature-break, slash, nobreakdash, dots,
383                        end-of-sentence, menu-separator.
384  * \li Origin: JSpitzm, 6 Dec 2007
385  * \endvar
386  */
387                 { LFUN_SPECIALCHAR_INSERT, "specialchar-insert", Noop, Edit },
388                 { LFUN_TOC_INSERT, "toc-insert", Noop, Edit },
389                 { LFUN_APPENDIX, "appendix", Noop, Edit },
390
391 #if 0
392                 { LFUN_LIST_INSERT, "list-insert", Noop, Edit },
393 #endif
394
395                 { LFUN_DELETE_BACKWARD_SKIP, "delete-backward-skip", Noop, Edit },
396                 { LFUN_DELETE_FORWARD_SKIP, "delete-forward-skip", Noop, Edit },
397                 { LFUN_DOWN, "down", ReadOnly | NoUpdate, Edit },
398                 { LFUN_DOWN_SELECT, "down-select", ReadOnly | SingleParUpdate, Edit },
399                 { LFUN_UP, "up", ReadOnly | NoUpdate, Edit },
400                 { LFUN_UP_SELECT, "up-select", ReadOnly | SingleParUpdate, Edit },
401                 { LFUN_SCREEN_DOWN, "screen-down", ReadOnly, Edit },
402                 { LFUN_SCREEN_DOWN_SELECT, "screen-down-select", ReadOnly, Edit },
403 /*!
404  * \var lyx::FuncCode lyx::LFUN_SCROLL
405  * \li Action: Scroll the buffer view.
406  * \li Notion: Only scrolls the screen up or down; does not move the cursor.
407  * \li Syntax: scroll <TYPE> <QUANTITY>
408  * \li Params: <TYPE>:  line|page\n
409                <QUANTITY>: up|down|<number>
410  * \li Origin: Abdelrazak Younes, Dec 27 2007
411  * \endvar
412  */
413                 { LFUN_SCROLL, "scroll", ReadOnly, Edit },
414 /*!
415  * \var lyx::FuncCode lyx::LFUN_SCREEN_RECENTER
416  * \li Action: Recenters the screen on the current cursor position.
417  * \li Syntax: screen-recenter
418  * \endvar
419  */
420                 { LFUN_SCREEN_RECENTER, "screen-recenter", ReadOnly, Edit },
421                 { LFUN_SCREEN_UP, "screen-up", ReadOnly, Edit },
422                 { LFUN_SCREEN_UP_SELECT, "screen-up-select", ReadOnly, Edit },
423
424                 { LFUN_ERROR_NEXT, "error-next", ReadOnly, Edit },
425 /*!
426  * \var lyx::FuncCode lyx::LFUN_CHAR_BACKWARD
427  * \li Action: Moves the cursor one position logically backwards.
428  * \li Notion: This is not the action which should be bound to the arrow keys,
429                because backwards may be left or right, depending on the
430                language. The arrow keys should be bound to #LFUN_CHAR_LEFT or
431                #LFUN_CHAR_RIGHT actions, which in turn may employ this one.
432  * \li Syntax: char-backward
433  * \endvar
434  */
435                 { LFUN_CHAR_BACKWARD, "char-backward", ReadOnly | NoUpdate, Edit },
436 /*!
437  * \var lyx::FuncCode lyx::LFUN_CHAR_BACKWARD_SELECT
438  * \li Action: Moves the cursor one position logically backwards, adding
439                traversed position to the selection.
440  * \li Notion: See also #LFUN_CHAR_BACKWARD.
441  * \li Syntax: char-backward-select
442  * \endvar
443  */
444                 { LFUN_CHAR_BACKWARD_SELECT, "char-backward-select", ReadOnly | SingleParUpdate, Edit },
445                 { LFUN_CHAR_DELETE_BACKWARD, "delete-backward", SingleParUpdate, Edit },
446                 { LFUN_CHAR_DELETE_FORWARD, "delete-forward", SingleParUpdate, Edit },
447 /*!
448  * \var lyx::FuncCode lyx::LFUN_CHAR_FORWARD
449  * \li Action: Moves the cursor one position logically forward.
450  * \li Notion: This is not the action which should be bound to the arrow keys,
451                because forward may be left or right, depending on the language.
452                The arrow keys should be bound to #LFUN_CHAR_LEFT or
453                #LFUN_CHAR_RIGHT actions, which in turn may employ this one.
454  * \li Syntax: char-forward
455  * \endvar
456  */
457                 { LFUN_CHAR_FORWARD, "char-forward", ReadOnly | NoUpdate, Edit },
458 /*!
459  * \var lyx::FuncCode lyx::LFUN_CHAR_FORWARD_SELECT
460  * \li Action: Moves the cursor one position logically forward, adding
461                traversed position to the selection.
462  * \li Notion: See also #LFUN_CHAR_FORWARD.
463  * \li Syntax: char-forward-select
464  * \endvar
465  */
466                 { LFUN_CHAR_FORWARD_SELECT, "char-forward-select", ReadOnly | SingleParUpdate, Edit },
467 /*!
468  * \var lyx::FuncCode lyx::LFUN_CHAR_LEFT
469  * \li Action: Moves the cursor one position "to the left".
470  * \li Notion: This is the action which should be taken when the "left" key
471                is pressed. Generally, it moves the cursor one position to the
472                left. However, in Bidi text this become slightly more
473                complicated, and there are different modes of cursor movement.
474                In "visual mode", this moves left, plain and simple. In "logical
475                mode", movement is logically forward in RTL paragraphs, and
476                logically backwards in LTR paragraphs.
477  * \li Syntax: char-left
478  * \endvar
479  */
480                 { LFUN_CHAR_LEFT, "char-left", ReadOnly | NoUpdate, Edit },
481 /*!
482  * \var lyx::FuncCode lyx::LFUN_CHAR_LEFT_SELECT
483  * \li Action: Moves the cursor one position "to the left", adding 
484                traversed position to the selection.
485  * \li Notion: See also #LFUN_CHAR_LEFT for exact details of the movement.
486  * \li Syntax: char-left-select
487  * \endvar
488  */
489                 { LFUN_CHAR_LEFT_SELECT, "char-left-select", ReadOnly | SingleParUpdate, Edit },
490 /*!
491  * \var lyx::FuncCode lyx::LFUN_CHAR_RIGHT
492  * \li Action: Moves the cursor one position "to the right".
493  * \li Notion: This is the action which should be taken when the "right" key
494                is pressed. Generally, it moves the cursor one position to the
495                right. However, in Bidi text this become slightly more
496                complicated, and there are different modes of cursor movement.
497                In "visual mode", this moves right, plain and simple. In "logical
498                mode", movement is logically forward in LTR paragraphs, and
499                logically backwards in RTL paragraphs.
500  * \li Syntax: char-right
501  * \endvar
502  */
503                 { LFUN_CHAR_RIGHT, "char-right", ReadOnly | NoUpdate, Edit },
504 /*!
505  * \var lyx::FuncCode lyx::LFUN_CHAR_RIGHT_SELECT
506  * \li Action: Moves the cursor one position "to the right", adding
507                traversed position to the selection.
508  * \li Notion: See also #LFUN_CHAR_RIGHT for exact details of the movement.
509  * \li Syntax: char-right-select
510  * \endvar
511  */
512                 { LFUN_CHAR_RIGHT_SELECT, "char-right-select", ReadOnly | SingleParUpdate, Edit },
513
514                 { LFUN_WORD_BACKWARD, "word-backward", ReadOnly | NoUpdate, Edit },
515                 { LFUN_WORD_BACKWARD_SELECT, "word-backward-select", ReadOnly | SingleParUpdate, Edit },
516                 { LFUN_WORD_CAPITALIZE, "word-capitalize", Noop, Edit },
517                 { LFUN_WORD_DELETE_BACKWARD, "word-delete-backward", Noop, Edit },
518                 { LFUN_WORD_DELETE_FORWARD, "word-delete-forward", Noop, Edit },
519 /*!
520  * \var lyx::FuncCode lyx::LFUN_WORD_FIND_FORWARD
521  * \li Action: Search for a given string in forward direction.
522  * \li Notion: Case sensitive, match words. If no argument given, last search repeated.
523  * \li Syntax: word-find-forward [<STRING>]
524  * \li Origin: Etienne, 16 Feb 1998
525  * \endvar
526  */
527                 { LFUN_WORD_FIND_FORWARD, "word-find-forward", ReadOnly, Edit },
528 /*!
529  * \var lyx::FuncCode lyx::LFUN_WORD_FIND_BACKWARD
530  * \li Action: Search for a given string in backward direction.
531  * \li Notion: Case sensitive, match words. If no argument given, last search repeated.
532  * \li Syntax: word-find-backward [<STRING>]
533  * \li Origin: Etienne, 20 Feb 1998
534  * \endvar
535  */
536                 { LFUN_WORD_FIND_BACKWARD, "word-find-backward", ReadOnly, Edit },
537 /*!
538  * \var lyx::FuncCode lyx::LFUN_WORD_FIND
539  * \li Action: Search for next occurence of a string.
540  * \li Syntax: word-find [<DATA>]
541  * \li Params: <DATA>: data encoded from Find dialog (see #lyx::find2string()).
542                        If no parameter is given, search with last find-dialog
543                        data is used for search (i.e. find-next).
544  * \li Origin: poenitz, Jan 7 2004
545  * \endvar
546  */
547                 { LFUN_WORD_FIND, "word-find", ReadOnly, Edit },
548                 { LFUN_WORD_REPLACE, "word-replace", Noop, Edit },
549                 { LFUN_WORD_FORWARD, "word-forward", ReadOnly | NoUpdate, Edit },
550                 { LFUN_WORD_FORWARD_SELECT, "word-forward-select", ReadOnly | SingleParUpdate, Edit },
551                 { LFUN_WORD_LEFT, "word-left", ReadOnly | NoUpdate, Edit },
552                 { LFUN_WORD_LEFT_SELECT, "word-left-select", ReadOnly | SingleParUpdate, Edit },
553                 { LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit },
554                 { LFUN_WORD_RIGHT, "word-right", ReadOnly | NoUpdate, Edit },
555                 { LFUN_WORD_RIGHT_SELECT, "word-right-select", ReadOnly | SingleParUpdate, Edit },
556                 { LFUN_WORD_SELECT, "word-select", ReadOnly, Edit },
557                 { LFUN_WORD_UPCASE, "word-upcase", Noop, Edit },
558 /*!
559  * \var lyx::FuncCode lyx::LFUN_THESAURUS_ENTRY
560  * \li Action: Look up thesaurus entries with respect to the word under the cursor.
561  * \li Syntax: thesaurus-entry
562  * \li Origin: Levon, 20 Jul 2001
563  * \endvar
564  */
565                 { LFUN_THESAURUS_ENTRY, "thesaurus-entry", ReadOnly, Edit },
566                 { LFUN_BUFFER_BEGIN, "buffer-begin", ReadOnly, Edit },
567                 { LFUN_BUFFER_BEGIN_SELECT, "buffer-begin-select", ReadOnly, Edit },
568                 { LFUN_BUFFER_END, "buffer-end", ReadOnly, Edit },
569                 { LFUN_BUFFER_END_SELECT, "buffer-end-select", ReadOnly, Edit },
570
571                 { LFUN_LINE_BEGIN, "line-begin", ReadOnly | NoUpdate, Edit },
572                 { LFUN_LINE_BEGIN_SELECT, "line-begin-select", ReadOnly | SingleParUpdate, Edit },
573                 { LFUN_LINE_DELETE, "line-delete-forward", Noop, Edit }, // there is no line-delete-backward
574                 { LFUN_LINE_END, "line-end", ReadOnly | NoUpdate, Edit },
575                 { LFUN_LINE_END_SELECT, "line-end-select", ReadOnly | SingleParUpdate, Edit },
576 /*!
577  * \var lyx::FuncCode lyx::LFUN_NEWLINE_INSERT
578  * \li Action: Inserts a line break or new line.
579  * \li Syntax: newline-insert <ARG>
580  * \li Params: <ARG>: <newline|linebreak> default: newline
581  * \li Origin: JSpitzm, 25 Mar 2008
582  * \endvar
583  */
584                 { LFUN_NEWLINE_INSERT, "newline-insert", Noop, Edit },
585
586 /*!
587  * \var lyx::FuncCode lyx::LFUN_COPY
588  * \li Action: Copies to the clipboard the last edit.
589  * \li Syntax: copy
590  * \endvar
591  */
592                 { LFUN_COPY, "copy", ReadOnly, Edit },
593 /*!
594  * \var lyx::FuncCode lyx::LFUN_CUT
595  * \li Action: Cuts to the clipboard.
596  * \li Syntax: cut
597  * \endvar
598  */
599                 { LFUN_CUT, "cut", Noop, Edit },
600 /*!
601  * \var lyx::FuncCode lyx::LFUN_PASTE
602  * \li Action: Pastes from the active clipboard.
603  * \li Syntax: paste
604  * \endvar
605  */
606                 { LFUN_PASTE, "paste", Noop, Edit },
607                 { LFUN_CLIPBOARD_PASTE, "clipboard-paste", Noop, Edit },
608 /*!
609  * \var lyx::FuncCode lyx::LFUN_PRIMARY_SELECTION_PASTE
610  * \li Action: Pastes the material currently selected.
611  * \li Syntax: primary-selection-paste
612  * \endvar
613  */
614                 { LFUN_PRIMARY_SELECTION_PASTE, "primary-selection-paste", Noop, Edit },
615 /*!
616  * \var lyx::FuncCode lyx::LFUN_UNDO
617  * \li Action: Undoes the last edit.
618  * \li Syntax: undo
619  * \endvar
620  */
621                 { LFUN_UNDO, "undo", Noop, Edit },
622 /*!
623  * \var lyx::FuncCode lyx::LFUN_REDO
624  * \li Action: Redoes the last thing undone.
625  * \li Syntax: redo
626  * \endvar
627  */
628                 { LFUN_REDO, "redo", Noop, Edit },
629                 { LFUN_REPEAT, "repeat", NoBuffer, Edit },
630                 { LFUN_CHARS_TRANSPOSE, "chars-transpose", Noop, Edit },
631
632                 { LFUN_DEPTH_DECREMENT, "depth-decrement", Noop, Edit },
633                 { LFUN_DEPTH_INCREMENT, "depth-increment", Noop, Edit },
634                 { LFUN_ENVIRONMENT_INSERT, "environment-insert", Noop, Edit },
635
636                 { LFUN_FONT_BOLD, "font-bold", Noop, Layout },
637                 { LFUN_FONT_TYPEWRITER, "font-typewriter", Noop, Layout },
638                 { LFUN_FONT_DEFAULT, "font-default", Noop, Layout },
639                 { LFUN_FONT_EMPH, "font-emph", Noop, Layout },
640                 { LFUN_FONT_FREE_APPLY, "font-free-apply", Noop, Layout },
641                 { LFUN_FONT_FREE_UPDATE, "font-free-update", Noop, Layout },
642                 { LFUN_FONT_NOUN, "font-noun", Noop, Layout },
643                 { LFUN_FONT_ROMAN, "font-roman", Noop, Layout },
644                 { LFUN_FONT_SANS, "font-sans", Noop, Layout },
645                 { LFUN_FONT_FRAK, "font-frak", Noop, Layout },
646                 { LFUN_FONT_ITAL, "font-ital", Noop, Layout },
647                 { LFUN_FONT_SIZE, "font-size", Noop, Layout },
648                 { LFUN_FONT_STATE, "font-state", ReadOnly, Layout },
649                 { LFUN_FONT_UNDERLINE, "font-underline", Noop, Layout },
650                 { LFUN_SCREEN_FONT_UPDATE, "screen-font-update", NoBuffer, Layout },
651
652                 { LFUN_INDEX_INSERT, "index-insert", Noop, Edit },
653                 { LFUN_INDEX_PRINT, "index-print", Noop, Edit },
654
655                 { LFUN_NOMENCL_INSERT, "nomencl-insert", Noop, Edit },
656                 { LFUN_NOMENCL_PRINT, "nomencl-print", Noop, Edit },
657
658                 { LFUN_NOTE_INSERT, "note-insert", Noop, Edit },
659                 { LFUN_NOTE_NEXT, "note-next", ReadOnly, Edit },
660
661                 { LFUN_BIBITEM_INSERT, "bibitem-insert", Noop, Edit },
662                 { LFUN_CITATION_INSERT, "citation-insert", Noop, Edit },
663                 { LFUN_BIBTEX_DATABASE_ADD, "bibtex-database-add", Noop, Edit },
664                 { LFUN_BIBTEX_DATABASE_DEL, "bibtex-database-del", Noop, Edit },
665
666 /*!
667  * \var lyx::FuncCode lyx::LFUN_LAYOUT
668  * \li Action: Sets the layout (that is, environment) for the current paragraph.
669  * \li Syntax: layout <LAYOUT>
670  * \li Params: <LAYOUT>: the layout to use
671  * \endvar
672  */
673                 { LFUN_LAYOUT, "layout", Noop, Layout },
674 /*!
675  * \var lyx::FuncCode lyx::LFUN_LAYOUT_PARAGRAPH
676  * \li Action: Launches the paragraph settings dialog.
677  * \li Syntax: layout-paragraph
678  * \endvar
679  */
680                 { LFUN_LAYOUT_PARAGRAPH, "layout-paragraph", ReadOnly, Layout },
681                 { LFUN_LAYOUT_TABULAR, "layout-tabular", Noop, Layout },
682 /*!
683  * \var lyx::FuncCode lyx::LFUN_DROP_LAYOUTS_CHOICE
684  * \li Action: Displays list of layout choices.
685  * \li Notion: In the current (as of 2007) Qt4 frontend, this LFUN opens the
686                dropbox allowing for choice of layout.
687  * \li Syntax: drop-layouts-choice
688  * \endvar
689  */
690                 { LFUN_DROP_LAYOUTS_CHOICE, "drop-layouts-choice", ReadOnly, Layout },
691 /*!
692  * \var lyx::FuncCode lyx::LFUN_LAYOUT_MODULES_CLEAR
693  * \li Action: Clears the module list.
694  * \li Notion: Clears the list of included modules for the current buffer.
695  * \li Syntax: layout-modules-clear
696  * \li Origin: rgh, 25 August 2007
697  * \endvar
698  */
699                 { LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", Noop, Layout },
700 /*!
701  * \var lyx::FuncCode lyx::LFUN_LAYOUT_MODULE_ADD
702  * \li Action: Adds a module.
703  * \li Notion: Adds a module to the list of included modules for the current buffer.
704  * \li Syntax: layout-module-add <MODULE>
705  * \li Params: <MODULE>: the module to be added
706  * \li Origin: rgh, 25 August 2007
707  * \endvar
708  */
709                 { LFUN_LAYOUT_MODULE_ADD, "layout-module-add", Noop, Layout },
710 /*!
711  * \var lyx::FuncCode lyx::LFUN_LAYOUT_RELOAD
712  * \li Action: Reloads layout information.
713  * \li Notion: Reloads all layout information for the current buffer from disk, thus
714                recognizing any changes that have been made to layout files on the fly.
715                This is intended to be used only by layout developers and should not be
716                used when one is trying to do actual work.
717  * \li Syntax: layout-reload
718  * \li Origin: rgh, 3 September 2007
719  * \endvar
720  */
721                 { LFUN_LAYOUT_RELOAD, "layout-reload", Noop, Layout },
722 /*!
723  * \var lyx::FuncCode lyx::LFUN_TEXTCLASS_APPLY
724  * \li Action: Sets the text class for the current buffer.
725  * \li Syntax: textclass-apply <TEXTCLASS>
726  * \li Params: <TEXTCLASS>: the textclass to set. Note that this must be
727                    the filename, minus the ".layout" extension.
728  * \endvar
729  */
730                 { LFUN_TEXTCLASS_APPLY, "textclass-apply", Noop, Layout },
731 /*!
732  * \var lyx::FuncCode lyx::LFUN_TEXTCLASS_LOAD
733  * \li Action: Loads information for a textclass from disk.
734  * \li Syntax: textclass-load <TEXTCLASS>
735  * \li Params: <TEXTCLASS>: the textclass to load. Note that this must be
736                    the filename, minus the ".layout" extension.
737  * \endvar
738  */
739                 { LFUN_TEXTCLASS_LOAD, "textclass-load", Noop, Layout },
740
741 /*!
742  * \var lyx::FuncCode lyx::LFUN_MARK_OFF
743  * \li Action: Disable selecting of text-region.
744  * \li Syntax: mark-off
745  * \endvar
746  */
747                 { LFUN_MARK_OFF, "mark-off", ReadOnly, Edit },
748 /*!
749  * \var lyx::FuncCode lyx::LFUN_MARK_ON
750  * \li Action: Enable selecting of text-region.
751  * \li Notion: After enabling you can simply move arrow keys to get selected region.
752  * \li Syntax: mark-on
753  * \endvar
754  */
755                 { LFUN_MARK_ON, "mark-on", ReadOnly, Edit },
756 /*!
757  * \var lyx::FuncCode lyx::LFUN_MARK_TOGGLE
758  * \li Action: Toggle between #LFUN_MARK_ON and #LFUN_MARK_OFF .
759  * \li Syntax: mark-toggle
760  * \li Origin: poenitz, May 5 2006
761  * \endvar
762  */
763                 { LFUN_MARK_TOGGLE, "mark-toggle", ReadOnly, Edit },
764                 
765                 { LFUN_MATH_DELIM, "math-delim", Noop, Math },
766                 { LFUN_MATH_BIGDELIM, "math-bigdelim", Noop, Math },
767                 { LFUN_MATH_DISPLAY, "math-display", Noop, Math },
768                 { LFUN_MATH_INSERT, "math-insert", Noop, Math },
769                 { LFUN_MATH_SUBSCRIPT, "math-subscript", Noop, Math },
770                 { LFUN_MATH_SUPERSCRIPT, "math-superscript", Noop, Math },
771                 { LFUN_MATH_LIMITS, "math-limits", Noop, Math },
772                 { LFUN_MATH_MACRO, "math-macro", Noop, Math },
773                 { LFUN_MATH_MUTATE, "math-mutate", Noop, Math },
774                 { LFUN_MATH_SPACE, "math-space", Noop, Math },
775                 { LFUN_MATH_IMPORT_SELECTION, "math-import-selection", Noop, Math },
776                 { LFUN_MATH_MATRIX, "math-matrix", Noop, Math },
777                 { LFUN_MATH_MODE, "math-mode", Noop, Math },
778 /*!
779  * \var lyx::FuncCode lyx::LFUN_MATH_NUMBER_LINE_TOGGLE
780  * \li Action: Toggles numbering of the current formula line.
781  * \li Notion: Must be in display formula mode.
782  * \li Syntax: math-number-line-toggle
783  * \li Origin: Alejandro 18 Jun 1996
784  * \endvar
785  */
786                 { LFUN_MATH_NUMBER_LINE_TOGGLE, "math-number-line-toggle", Noop, Math },
787 /*!
788  * \var lyx::FuncCode lyx::LFUN_MATH_NUMBER_TOGGLE
789  * \li Action: Toggles numbering/labeling of the current formula.
790  * \li Notion: Must be in display formula mode.
791  * \li Syntax: math-number-toggle
792  * \li Origin: Alejandro 4 Jun 1996
793  * \endvar
794  */
795                 { LFUN_MATH_NUMBER_TOGGLE, "math-number-toggle", Noop, Math },
796                 { LFUN_MATH_EXTERN, "math-extern", Noop, Math },
797                 { LFUN_MATH_SIZE, "math-size", Noop, Math },
798 /*!
799  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_UNFOLD
800  * \li Action: Unfold a Math Macro.
801  * \li Notion: Unfold the Math Macro the cursor is in, i.e.
802                display it as \foo.
803  * \li Syntax: math-macro-unfold
804  * \li Origin: sts, 06 January 2008
805  * \endvar
806  */
807                 { LFUN_MATH_MACRO_UNFOLD, "math-macro-unfold", ReadOnly | SingleParUpdate, Math },
808 /*!
809  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_FOLD
810  * \li Action: Fold a Math Macro.
811  * \li Notion: Fold the Math Macro the cursor is in if it was
812                unfolded, i.e. displayed as \foo before.
813  * \li Syntax: math-macro-fold
814  * \li Origin: sts, 06 January 2008
815  * \endvar
816  */
817                 { LFUN_MATH_MACRO_FOLD, "math-macro-fold", ReadOnly | SingleParUpdate, Math },
818 /*!
819  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_ADD_PARAM
820  * \li Action: Add a parameter.
821  * \li Notion: Add a parameter to a Math Macro.
822  * \li Params: <NUM>: The number of the parameter behind which the new one
823                will be added (1 for the first, i.e. use 0 for add a
824                parameter at the left), defaults to the last one.
825  * \li Syntax: math-macro-add-param <NUM>
826  * \li Origin: sts, 06 January 2008
827  * \endvar
828  */
829                 { LFUN_MATH_MACRO_ADD_PARAM, "math-macro-add-param", Noop, Math },
830 /*!
831  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_REMOVE_PARAM
832  * \li Action: Remove the last parameter.
833  * \li Notion: Remove the last parameter of a Math Macro and
834                remove its value in all instances of the macro
835                in the buffer.
836  * \li Params: <NUM>: The number of the parameter to be deleted (1 for
837                the first), defaults to the last one.
838  * \li Syntax: math-macro-remove-param <NUM>
839  * \li Origin: sts, 06 January 2008
840  * \endvar
841  */
842                 { LFUN_MATH_MACRO_REMOVE_PARAM, "math-macro-remove-param", Noop, Math },
843 /*!
844  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_APPEND_GREEDY_PARAM
845  * \li Action: Append a greedy parameter.
846  * \li Notion: Append a greedy parameter to a Math Macro which
847                eats the following mathed cell in every instance of
848                the macro in the buffer.
849  * \li Syntax: math-macro-append-greedy-param
850  * \li Origin: sts, 06 January 2008
851  * \endvar
852  */
853                 { LFUN_MATH_MACRO_APPEND_GREEDY_PARAM, "math-macro-append-greedy-param", Noop, Math },
854 /*!
855  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM
856  * \li Action: Remove a greedy parameter.
857  * \li Notion: Remove a greedy parameter of a Math Macro and spit
858                out the values of it in every instance of the macro
859                in the buffer. If it is an optional parameter the [valud]
860                format is used.
861  * \li Syntax: math-macro-remove-greedy-param
862  * \li Origin: sts, 06 January 2008
863  * \endvar
864  */
865                 { LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM, "math-macro-remove-greedy-param", Noop, Math },
866 /*!
867  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_MAKE_OPTIONAL
868  * \li Action: Make a parameter optional.
869  * \li Notion: Turn the first non-optional parameter of a Math Macro
870                into an optional parameter with a default value.
871  * \li Syntax: math-macro-make-optional
872  * \li Origin: sts, 06 January 2008
873  * \endvar
874  */
875                 { LFUN_MATH_MACRO_MAKE_OPTIONAL, "math-macro-make-optional", Noop, Math },
876 /*!
877  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_MAKE_NONOPTIONAL
878  * \li Action: Make a parameter non-optional.
879  * \li Notion: Turn the last optional parameter of a Math Macro
880                into a non-optional parameter. The default value is
881                remembered to be reused later if the user changes his mind.
882  * \li Syntax: math-macro-make-nonoptional
883  * \li Origin: sts, 06 January 2008
884  * \endvar
885  */
886                 { LFUN_MATH_MACRO_MAKE_NONOPTIONAL, "math-macro-make-nonoptional", Noop, Math },
887 /*!
888  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM
889  * \li Action: Add an optional parameter.
890  * \li Notion: Insert an optional parameter just behind the
891                already existing optional parameters.
892  * \li Syntax: math-macro-add-optional-param
893  * \li Origin: sts, 06 January 2008
894  * \endvar
895  */
896                 { LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM, "math-macro-add-optional-param", Noop, Math },
897 /*!
898  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM
899  * \li Action: Remove the last optional parameter.
900  * \li Notion: Remove the last optional parameter of a Math Macro and
901                remove it in all the instances of the macro in the buffer.
902  * \li Syntax: math-macro-remove-optional-param
903  * \li Origin: sts, 06 January 2008
904  * \endvar
905  */
906                 { LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM, "math-macro-remove-optional-param", Noop, Math },
907 /*!
908  * \var lyx::FuncCode lyx::LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM
909  * \li Action: Add a greedy optional parameter.
910  * \li Notion: Add a greedy optional parameter which eats the value
911                from the following cells in mathed which are in the [value]
912                format.
913  * \li Syntax: math-macro-add-greedy-optional-param
914  * \li Origin: sts, 06 January 2008
915  * \endvar
916  */
917                 { LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM, "math-macro-add-greedy-optional-param", Noop, Math },
918 /*!
919  * \var lyx::FuncCode lyx::LFUN_IN_MATHMACROTEMPLATE
920  * \li Action: Only active in Math Macro definition.
921  * \li Notion: Dummy function which is only active in a Math Macro definition.
922                It's used to toggle the Math Macro toolbar if the cursor moves
923                into a Math Macro definition.
924  * \li Syntax: in-mathmacrotemplate
925  * \li Origin: sts, 06 January 2008
926  * \endvar
927  */
928                 { LFUN_IN_MATHMACROTEMPLATE, "in-mathmacrotemplate", Noop, Math },
929
930 /*!
931  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_MOVE_DOWN
932  * \li Action: Moves the current paragraph downwards in the document.
933  * \li Syntax: paragraph-move-down
934  * \li Origin: Edwin, 8 Apr 2006
935  * \endvar
936  */
937                 { LFUN_PARAGRAPH_MOVE_DOWN, "paragraph-move-down", Noop, Edit },
938 /*!
939  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_MOVE_UP
940  * \li Action: Moves the current paragraph upwards in the document.
941  * \li Syntax: paragraph-move-up
942  * \li Origin: Edwin, 8 Apr 2006
943  * \endvar
944  */
945                 { LFUN_PARAGRAPH_MOVE_UP, "paragraph-move-up", Noop, Edit },
946
947 /*!
948  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_UP
949  * \li Action: Move the cursor to the next paragraph (or begining of the current one)
950                in upward direction.
951  * \li Syntax: paragraph-up
952  * \li Origin: Asger, 1 Oct 1996
953  * \endvar
954  */
955                 { LFUN_PARAGRAPH_UP, "paragraph-up", ReadOnly | NoUpdate, Edit },
956 /*!
957  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_UP_SELECT
958  * \li Action: Move the cursor and select the text to the next paragraph (or
959                begining of the current one) in upward direction.
960  * \li Syntax: paragraph-up-select
961  * \li Origin: Asger, 1 Oct 1996
962  * \endvar
963  */
964                 { LFUN_PARAGRAPH_UP_SELECT, "paragraph-up-select", ReadOnly, Edit },
965 /*!
966  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_DOWN
967  * \li Action: Move the cursor to the next paragraph (or begining of the current one)
968                in downward direction.
969  * \li Syntax: paragraph-down
970  * \li Origin: Asger, 1 Oct 1996
971  * \endvar
972  */
973                 { LFUN_PARAGRAPH_DOWN, "paragraph-down", ReadOnly | NoUpdate, Edit },
974 /*!
975  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_DOWN_SELECT
976  * \li Action: Move the cursor and select the text to the next paragraph (or
977                begining of the current one) in downward direction.
978  * \li Syntax: paragraph-down-select
979  * \li Origin: Asger, 1 Oct 1996
980  * \endvar
981  */
982                 { LFUN_PARAGRAPH_DOWN_SELECT, "paragraph-down-select", ReadOnly, Edit },
983 /*!
984  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_GOTO
985  * \li Action: Jump to a paragraph given by its id number.
986  * \li Notion: Note that id number of paragraph is not the sequential number of paragraph
987                seen on the screen. Moreover the id is unique for all opened buffers (documents).
988  * \li Syntax: paragraph-goto <PAR_ID_NUMBER>
989  * \li Origin: Dekel, 26 Aug 2000
990  * \endvar
991  */
992                 { LFUN_PARAGRAPH_GOTO, "paragraph-goto", ReadOnly, Edit },
993 /*!
994  * \var lyx::FuncCode lyx::LFUN_BREAK_PARAGRAPH
995  * \li Action: Breaks the current paragraph at the current location.
996  * \li Syntax: break-paragraph
997  * \endvar
998  */
999                 { LFUN_PARAGRAPH_SPACING, "paragraph-spacing", Noop, Edit },
1000                 { LFUN_BREAK_PARAGRAPH, "break-paragraph", Noop, Edit },
1001 /*!
1002  * \var lyx::FuncCode lyx::LFUN_BREAK_PARAGRAPH_SKIP
1003  * \li Action: Breaks the current paragraph at the current location,
1004                unless used at the beginning of a line, where it sets
1005                the label width string to empty.
1006  * \li Syntax: break-paragraph-skip
1007  * \endvar
1008  */
1009                 { LFUN_BREAK_PARAGRAPH_SKIP, "break-paragraph-skip", Noop, Edit },
1010 /*!
1011  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_PARAMS
1012  * \li Action: Change paragraph settings.
1013  * \li Notion: Modifies the current paragraph, or currently selected paragraphs.
1014                This function only modifies, and does not override, existing settings.
1015                Note that the "leftindent" indent setting is deprecated.
1016  * \li Syntax: paragraph-params [<INDENT>] [<SPACING>] [<ALIGN>] [<OTHERS>]
1017  * \li Params: <INDENT>:  \\noindent|\\indent|\\indent-toggle|\\leftindent LENGTH\n
1018                <SPACING>: \\paragraph_spacing default|single|onehalf|double|other\n
1019                <ALIGN>:   \\align block|left|right|center|default\n
1020                <OTHERS>:  \\labelwidthstring WIDTH|\\start_of_appendix\n
1021  * \li Origin: rgh, Aug 15 2007
1022  * \endvar
1023  */
1024                 { LFUN_PARAGRAPH_PARAMS, "paragraph-params", Noop, Edit },
1025 /*!
1026  * \var lyx::FuncCode lyx::LFUN_PARAGRAPH_PARAMS_APPLY
1027  * \li Action: Change paragraph settings.
1028  * \li Notion: Overwrite all nonspecified settings to the default ones.
1029                Use paragraph-params lfun if you don't want to overwrite others settings.
1030  * \li Syntax: paragraph-params-apply <INDENT> <SPACING> <ALIGN> <OTHERS>
1031  * \li Params: For parameters see #LFUN_PARAGRAPH_PARAMS
1032  * \li Origin: leeming, 30 Mar 2004
1033  * \endvar
1034  */
1035                 { LFUN_PARAGRAPH_PARAMS_APPLY, "paragraph-params-apply", Noop, Edit },
1036                 { LFUN_PARAGRAPH_UPDATE, "", Noop, Hidden },
1037
1038 /*!
1039  * \var lyx::FuncCode lyx::LFUN_OUTLINE_UP
1040  * \li Action: Move the current group in the upward direction in the
1041                structure of the document.
1042  * \li Notion: The "group" can be Part/Chapter/Section/etc. It moves
1043                the whole substructure of the group.
1044  * \li Syntax: outline-up
1045  * \li Origin: Vermeer, 23 Mar 2006
1046  * \endvar
1047  */
1048                 { LFUN_OUTLINE_UP, "outline-up", Noop, Edit },
1049 /*!
1050  * \var lyx::FuncCode lyx::LFUN_OUTLINE_DOWN
1051  * \li Action: Move the current group in the downward direction in the
1052                structure of the document.
1053  * \li Notion: The "group" can be Part/Chapter/Section/etc. It moves
1054                the whole substructure of the group.
1055  * \li Syntax: outline-down
1056  * \li Origin: Vermeer, 23 Mar 2006
1057  * \endvar
1058  */
1059                 { LFUN_OUTLINE_DOWN, "outline-down", Noop, Edit },
1060 /*!
1061  * \var lyx::FuncCode lyx::LFUN_OUTLINE_IN
1062  * \li Action: Moves the current group in the downward direction in the
1063                hierarchy of the document structure.
1064  * \li Notion: Part -> Chapter -> Section -> etc.
1065  * \li Syntax: outline-in
1066  * \li Origin: Vermeer, 23 Mar 2006
1067  * \endvar
1068  */
1069                 { LFUN_OUTLINE_IN, "outline-in", Noop, Edit },
1070 /*!
1071  * \var lyx::FuncCode lyx::LFUN_OUTLINE_OUT
1072  * \li Action: Moves the current group in the upward direction in the
1073                hierarchy of the document structure.
1074  * \li Notion: Part <- Chapter <- Section <- etc.
1075  * \li Syntax: outline-out
1076  * \li Origin: Vermeer, 23 Mar 2006
1077  * \endvar
1078  */
1079                 { LFUN_OUTLINE_OUT, "outline-out", Noop, Edit },
1080
1081                 { LFUN_EXTERNAL_EDIT, "external-edit", Noop, Edit },
1082                 { LFUN_GRAPHICS_EDIT, "graphics-edit", Noop, Edit },
1083
1084                 { LFUN_CELL_BACKWARD, "cell-backward", Noop, Edit },
1085                 { LFUN_CELL_FORWARD, "cell-forward", Noop, Edit },
1086                 { LFUN_CELL_SPLIT, "cell-split", Noop, Edit },
1087                 { LFUN_TABULAR_INSERT, "tabular-insert", Noop, Edit },
1088                 { LFUN_TABULAR_FEATURE, "tabular-feature", Noop, Edit },
1089
1090                 { LFUN_VC_CHECK_IN, "vc-check-in", ReadOnly, System },
1091                 { LFUN_VC_CHECK_OUT, "vc-check-out", ReadOnly, System },
1092                 { LFUN_VC_REGISTER, "vc-register", ReadOnly, System },
1093                 { LFUN_VC_REVERT, "vc-revert", ReadOnly, System },
1094                 { LFUN_VC_UNDO_LAST, "vc-undo-last", ReadOnly, System },
1095
1096                 { LFUN_CHANGES_TRACK, "changes-track", Noop, Edit },
1097                 { LFUN_CHANGES_OUTPUT, "changes-output", Noop, Edit },
1098                 { LFUN_CHANGE_NEXT, "change-next", ReadOnly, Edit },
1099                 { LFUN_CHANGES_MERGE, "changes-merge", Noop, Edit },
1100                 { LFUN_CHANGE_ACCEPT, "change-accept", Noop, Edit },
1101                 { LFUN_CHANGE_REJECT, "change-reject", Noop, Edit },
1102                 { LFUN_ALL_CHANGES_ACCEPT, "all-changes-accept", Noop, Edit },
1103                 { LFUN_ALL_CHANGES_REJECT, "all-changes-reject", Noop, Edit },
1104
1105 /*!
1106  * \var lyx::FuncCode lyx::LFUN_INSET_APPLY
1107  * \li Action: Apply data for an inset.
1108  * \li Notion: LFUN_INSET_APPLY is sent from the dialogs when the data should
1109                be applied. This is either changed to #LFUN_INSET_MODIFY or
1110                #LFUN_INSET_INSERT depending on the context where it is called.
1111  * \li Syntax: inset-apply <ARGS>
1112  * \li Params: See #LFUN_INSET_INSERT .
1113  * \endvar
1114  */
1115                 { LFUN_INSET_APPLY, "inset-apply", Noop, Edit },
1116 /*!
1117  * \var lyx::FuncCode lyx::LFUN_INSET_DISSOLVE
1118  * \li Action: Dissolve the current inset into text.
1119  * \li Syntax: inset-dissolve [<INSET>]
1120  * \li Params: <INSET>: this can be used to make sure the right kind of inset
1121                         is dissolved. For example "dissolve" entry in the charstyles
1122                         sub-menu should only dissolve the charstyle inset, even if the
1123                         cursor is inside several nested insets of different type.\n
1124                         For values see #lyx::InsetLayout::lyxtype_ .
1125  * \li Author: JSpitz, 7 Aug 2006
1126  * \endvar
1127  */
1128                 { LFUN_INSET_DISSOLVE, "inset-dissolve", Noop, Edit },
1129 /*!
1130  * \var lyx::FuncCode lyx::LFUN_INSET_INSERT
1131  * \li Action: Insert new inset (type given by the parameters).
1132  * \li Syntax: inset-insert <INSET> <ARGS>
1133  * \li Params: <INSET>: <bibitem|bibtex|cite|ert|listings|external|graphics|
1134                          hyperlink|include|index|label|nomencl|vspace|ref|toc>\n
1135                <ARGS>: depends on the given inset. Use "lyx -dbg action" to
1136                        explore.
1137  * \li Sample: inset-insert ref LatexCommand <Format> reference "<label name>"\end_inset \n
1138                where <label name> is the name of the referenced label and
1139                <Format> is one of the following: \n
1140                ref -- <reference> \n
1141                eqref -- (<reference>) \n
1142                pageref -- <page> \n
1143                vpageref -- on <page> \n
1144                vref -- <reference> on <page> \n
1145                prettyref -- Formatted reference
1146  * \endvar
1147  */
1148                 { LFUN_INSET_INSERT, "inset-insert", Noop, Edit },
1149 /*!
1150  * \var lyx::FuncCode lyx::LFUN_INSET_MODIFY
1151  * \li Action: Modify existing inset.
1152  * \li Notion: Used for label, floats, listings, box, branch, external, wrap
1153                bibtex, ert, command, graphics, note, space, vspace, tabular,
1154                bibitem, inlude, ref insets.
1155  * \li Syntax: inset-modify <INSET> <ARGS>
1156  * \li Params: See #LFUN_INSET_INSERT for further details.
1157  * \endvar
1158  */
1159                 { LFUN_INSET_MODIFY, "", Noop, Hidden },
1160 /*!
1161  * \var lyx::FuncCode lyx::LFUN_NEXT_INSET_MODIFY
1162  * \li Action: Modify the inset at cursor position, if there is one.
1163  * \li Notion: Used for label, floats, listings, box, branch, external, wrap
1164                bibtex, ert, command, graphics, note, space, vspace, tabular,
1165                bibitem, inlude, ref insets.
1166  * \li Syntax: next-inset-modify <INSET> <ARGS> or next-inset-modify changetype <TYPE>
1167  * \li Params: See #LFUN_INSET_INSERT for further details.
1168  * \li Origin: JSpitzm, 23 Mar 2008
1169  * \endvar
1170  */
1171                 { LFUN_NEXT_INSET_MODIFY, "next-inset-modify", ReadOnly, Edit },
1172                 { LFUN_INSET_DIALOG_UPDATE, "", Noop, Hidden },
1173 /*!
1174  * \var lyx::FuncCode lyx::LFUN_INSET_SETTINGS
1175  * \li Action: Open the inset's properties dialog.
1176  * \li Notion: Used for box, branch, ert, float, listings, note, tabular, wrap insets.
1177  * \li Syntax: inset-settings <INSET>
1178  * \li Params: <INSET>: <box|branch|ert|float|listings|note|tabular|wrap>
1179  * \endvar
1180  */
1181                 { LFUN_INSET_SETTINGS, "inset-settings", ReadOnly, Edit },
1182 /*!
1183  * \var lyx::FuncCode lyx::LFUN_NEXT_INSET_TOGGLE
1184  * \li Action: Toggles the inset at cursor position. For collapsables, this means it will
1185                be (un-)collapsed, in case of other insets, the editing widget (dialog) will
1186                be entered. Also cf. #LFUN_INSET_SETTINGS.
1187  * \li Notion: Used for label, floats, listings, box, branch, external, wrap
1188                bibtex, ert, command, graphics, note, space, vspace, tabular,
1189                bibitem, inlude, ref insets.
1190  * \li Syntax: next-inset-toggle <ARG>
1191  * \li Params: <ARG>: these are passed as arguments to #LFUN_INSET_TOGGLE .
1192  * \li Origin: leeming, 30 Mar 2004
1193  * \endvar
1194  */
1195                 { LFUN_NEXT_INSET_TOGGLE, "next-inset-toggle", ReadOnly, Edit },
1196 /*!
1197  * \var lyx::FuncCode lyx::LFUN_INSET_TOGGLE
1198  * \li Action: Toggles the collapsable inset we are currently in.
1199  * \li Syntax: inset-toggle [<ARG>]
1200  * \li Params: <ARG>: <open|close|toggle|assign>. \n
1201                open/close/toggle are for collapsable insets. close can be currently used
1202                by #LFUN_NEXT_INSET_TOGGLE. toggle is used when no argument is given.\n
1203                assign is for branch inset.
1204  * \li Origin: lasgouttes, 19 Jul 2001
1205  * \endvar
1206  */
1207                 { LFUN_INSET_TOGGLE, "inset-toggle", ReadOnly, Hidden },
1208 /*!
1209  * \var lyx::FuncCode lyx::LFUN_ALL_INSETS_TOGGLE
1210  * \li Action: Toggles (open/closes) all collapsable insets (of a given type) in the document.
1211  * \li Notion: Used for box, branch, ert, float, listings, note, tabular, wrap insets.
1212  * \li Syntax: all-insets-toggle <STATE> <INSET>
1213  * \li Params: <STATE>: <toggle|open|close> default: toggle \n
1214                <INSET>: <box|branch|ert|float|listings|note|tabular|wrap> default: all insets \n
1215  * \li Origin: leeming, 30 Mar 2004
1216  * \endvar
1217  */
1218                 { LFUN_ALL_INSETS_TOGGLE, "all-insets-toggle", ReadOnly, Edit },
1219
1220 /*!
1221  * \var lyx::FuncCode lyx::LFUN_FINISHED_FORWARD
1222  * \li Action: Moves the cursor out of the current slice, going forward.
1223  * \li Notion: Cursor movement within an inset may be different than cursor
1224                movement in the surrounding text. This action should be called
1225                automatically by the cursor movement within the inset, when
1226                movement within the inset has ceased (reached the end of the
1227                last paragraph, for example), in order to move correctly
1228                back into the surrounding text.
1229  * \endvar
1230  */
1231                 { LFUN_FINISHED_FORWARD, "", ReadOnly, Hidden },
1232 /*!
1233  * \var lyx::FuncCode lyx::LFUN_FINISHED_BACKWARD
1234  * \li Action: Moves the cursor out of the current slice, going backwards.
1235  * \li Notion: See also #LFUN_FINISHED_FORWARD.
1236  * \endvar
1237  */
1238                 { LFUN_FINISHED_BACKWARD, "", ReadOnly, Hidden },
1239 /*!
1240  * \var lyx::FuncCode lyx::LFUN_FINISHED_RIGHT
1241  * \li Action: Moves the cursor out of the current slice, going right.
1242  * \li Notion: See also #LFUN_FINISHED_FORWARD
1243  * \endvar
1244  */
1245                 { LFUN_FINISHED_RIGHT, "", ReadOnly, Hidden },
1246 /*!
1247  * \var lyx::FuncCode lyx::LFUN_FINISHED_LEFT
1248  * \li Action: Moves the cursor out of the current slice, going left.
1249  * \li Notion: See also #LFUN_FINISHED_FORWARD.
1250  * \endvar
1251  */
1252                 { LFUN_FINISHED_LEFT, "", ReadOnly, Hidden },
1253
1254                 { LFUN_LANGUAGE, "language", Noop, Edit },
1255
1256 /*!
1257  * \var lyx::FuncCode lyx::LFUN_LABEL_GOTO
1258  * \li Action: Goto a label.
1259  * \li Syntax: label-goto [<LABEL>]
1260  * \li Params: <LABEL>: Requested label. If no label is given and refernce
1261                         is on cursor position, Bookmark 0 is saved and
1262                         cursor moves to the position of referenced label.
1263  * \li Origin: Ale, 6 Aug 1997
1264  * \endvar
1265  */
1266                 { LFUN_LABEL_GOTO, "label-goto", ReadOnly, Edit },
1267                 { LFUN_LABEL_INSERT, "label-insert", Noop, Edit },
1268 /*!
1269  * \var lyx::FuncCode lyx::LFUN_REFERENCE_NEXT
1270  * \li Action: Go to the next label or cross-reference.
1271  * \li Syntax: reference-next
1272  * \li Origin: Dekel, 14 Jan 2001
1273  * \endvar
1274  */
1275                 { LFUN_REFERENCE_NEXT, "reference-next", ReadOnly, Edit },
1276
1277 /*!
1278  * \var lyx::FuncCode lyx::LFUN_BOOKMARK_GOTO
1279  * \li Action: Goto a bookmark.
1280  * \li Notion: Moves the cursor to the numbered bookmark, opening the file
1281                if necessary. Note that bookmarsk are saved per-session, not
1282                per file.
1283  * \li Syntax: bookmark-goto <NUMBER>
1284  * \li Params: <NUMBER>: the number of the bookmark to restore.
1285  * \li Origin: Dekel, 27 January 2001
1286  * \endvar
1287  */
1288                 { LFUN_BOOKMARK_GOTO, "bookmark-goto", NoBuffer, Edit },
1289 /*!
1290  * \var lyx::FuncCode lyx::LFUN_BOOKMARK_SAVE
1291  * \li Action: Save a bookmark.
1292  * \li Notion: Saves a numbered bookmark to the sessions file. The number
1293                must be between 1 and 9, inclusive. Note that bookmarks are
1294                saved per-session, not per file.
1295  * \li Syntax: bookmark-save <NUMBER>
1296  * \li Params: <NUMBER>: the number of the bookmark to save.
1297  * \li Origin: Dekel, 27 January 2001
1298  * \endvar
1299  */
1300                 { LFUN_BOOKMARK_SAVE, "bookmark-save", ReadOnly, Edit },
1301 /*!
1302  * \var lyx::FuncCode lyx::LFUN_BOOKMARK_CLEAR
1303  * \li Action: Clears the list of saved bookmarks.
1304  * \li Syntax: bookmark-clear
1305  * \li Origin: bpeng, 31 October 2006
1306  * \endvar
1307  */
1308                 { LFUN_BOOKMARK_CLEAR, "bookmark-clear", NoBuffer, Edit },
1309
1310 /*!
1311  * \var lyx::FuncCode lyx::LFUN_HELP_OPEN
1312  * \li Action: Open the given help file according to the language setting.
1313  * \li Syntax: help-open <FILE>[.lyx]
1314  * \li Params: <FILE>: any document from (/usr/share/)doc directory.
1315  * \li Author: Jug, 27 Jun 1999
1316  * \endvar
1317  */
1318                 { LFUN_HELP_OPEN, "help-open", NoBuffer | Argument, Buffer },
1319 /*!
1320  * \var lyx::FuncCode lyx::LFUN_LYX_QUIT
1321  * \li Action: Terminates the current LyX instance.
1322  * \li Notion: Terminates the current LyX instance, asking whether to save
1323                modified documents, etc.
1324  * \li Syntax: lyx-quit
1325  * \endvar
1326  */
1327                 { LFUN_LYX_QUIT, "lyx-quit", NoBuffer, Buffer },
1328 /*!
1329  * \var lyx::FuncCode lyx::LFUN_TOOLBAR_TOGGLE
1330  * \li Action: Toggles visibility of a given toolbar between on/off/auto.
1331  * \li Notion: Skiping "auto" when allowauto is false.
1332  * \li Syntax: toolbar-toggle <NAME> [allowauto]
1333  * \li Params: <NAME>: standard|extra|table|math|mathmacrotemplate|
1334                        minibuffer|review|view/update|math_panels
1335  * \li Origin: Edwin, 21 May 2007
1336  * \endvar
1337  */
1338                 { LFUN_TOOLBAR_TOGGLE, "toolbar-toggle", NoBuffer, Buffer },
1339 /*!
1340  * \var lyx::FuncCode lyx::LFUN_MENU_OPEN
1341  * \li Action: Opens the menu given by its name.
1342  * \li Syntax: menu-open <NAME>
1343  * \li Params: <NAME>: menu name. See various .inc files in lib/ui for candidates.
1344  * \endvar
1345  */
1346                 { LFUN_MENU_OPEN, "menu-open", NoBuffer, Buffer },
1347 /*!
1348  * \var lyx::FuncCode lyx::LFUN_UI_TOGGLE
1349  * \li Action: Various UI visibility-toggling actions.
1350  * \li Syntax: ui-toggle <statusbar|menubar|frame|fullscreen>
1351  * \li Params: statusbar  : Toggle visibility of the statusbar.\n
1352                menubar    : Toggle visibility of the menubar.\n
1353                scrollbar  : Toggle visibility of the scrollbar.\n
1354                frame      : Toggle visibility of the frames around editing window.\n
1355                fullscreen : Toggle fullscreen mode. This also covers calling the
1356                             previous functions. However #LFUN_TOOLBAR_TOGGLE for the
1357                             custom tweaks of the toolbars should be used.
1358  * \li Origin: ps, 9 Feb 2007
1359  * \endvar
1360  */
1361                 { LFUN_UI_TOGGLE, "ui-toggle", NoBuffer, Buffer },
1362
1363 /*!
1364  * \var lyx::FuncCode lyx::WINDOW_NEW
1365  * \li Action: Creates new empty LyX window.
1366  * \li Notion: Already opened documents from the previous window can be found under View menu.
1367  * \li Syntax: window-new [<GEOMETRY>]
1368  * \li Params: <GEOMETRY>: pass the geometry of the window. This parameter is currently 
1369                            accepted only on Windows platform.
1370  * \li Origin: Abdel, 21 Oct 2006
1371  * \endvar
1372  */
1373                 { LFUN_WINDOW_NEW, "window-new", NoBuffer, Buffer },
1374 /*!
1375  * \var lyx::FuncCode lyx::LFUN_WINDOW_CLOSE
1376  * \li Action: Closes the current LyX window.
1377  * \li Syntax: window-close
1378  * \li Origin: Abdel, 23 Oct 2006
1379  * \endvar
1380  */
1381                 { LFUN_WINDOW_CLOSE, "window-close", NoBuffer, Buffer },
1382
1383 /*!
1384  * \var lyx::FuncCode lyx::LFUN_SPLIT_VIEW
1385  * \li Action: Creates another split view of current buffer.
1386  * \li Notion: All split views act in the same way indpendently.
1387  * \li Syntax: split-view <vertical|horizontal>
1388  * \li Params: horizontal : The work areas are laid out side by side.\n
1389                vertical   : The work areas laid out vertically.\n
1390  * \li Origin: abdel, 20 Feb 2008
1391  * \endvar
1392  */
1393                 { LFUN_SPLIT_VIEW, "split-view", ReadOnly, Buffer },
1394
1395 /*!
1396  * \var lyx::FuncCode lyx::LFUN_CLOSE_TAB_GROUP
1397  * \li Action: Close the current tab group.
1398  * \li Notion: This only closes the work areas, not the buffer themselves.
1399                The still opened buffers can be visualized in another tab group.
1400  * \li Syntax: close-tab-group
1401  * \li Origin: abdel, 21 Feb 2008
1402  * \endvar
1403  */
1404                 { LFUN_CLOSE_TAB_GROUP, "close-tab-group", ReadOnly, Buffer },
1405                 { LFUN_DIALOG_SHOW, "dialog-show", NoBuffer, Edit },
1406                 { LFUN_DIALOG_SHOW_NEW_INSET, "dialog-show-new-inset", Noop, Edit },
1407                 { LFUN_DIALOG_UPDATE, "dialog-update", NoBuffer, Edit },
1408                 { LFUN_DIALOG_HIDE, "dialog-hide", NoBuffer, Edit },
1409                 { LFUN_DIALOG_TOGGLE, "dialog-toggle", NoBuffer, Edit },
1410                 { LFUN_DIALOG_DISCONNECT_INSET, "dialog-disconnect-inset", Noop, Edit },
1411
1412                 { LFUN_MOUSE_PRESS, "", ReadOnly, Hidden },
1413                 { LFUN_MOUSE_MOTION, "", ReadOnly | SingleParUpdate, Hidden },
1414                 { LFUN_MOUSE_RELEASE, "", ReadOnly, Hidden },
1415                 { LFUN_MOUSE_DOUBLE, "", ReadOnly, Hidden },
1416                 { LFUN_MOUSE_TRIPLE, "", ReadOnly, Hidden },
1417
1418                 { LFUN_KEYMAP_OFF, "keymap-off", ReadOnly, Edit },
1419                 { LFUN_KEYMAP_PRIMARY, "keymap-primary", ReadOnly, Edit },
1420                 { LFUN_KEYMAP_SECONDARY, "keymap-secondary", ReadOnly, Edit },
1421                 { LFUN_KEYMAP_TOGGLE, "keymap-toggle", ReadOnly, Edit },
1422
1423                 { LFUN_MESSAGE, "message", NoBuffer, System },
1424                 { LFUN_FLOAT_LIST, "float-list", Noop, Edit },
1425                 { LFUN_ESCAPE, "escape", ReadOnly, Edit },
1426
1427                 { LFUN_SERVER_CHAR_AFTER, "server-char-after", ReadOnly, System },
1428                 { LFUN_SERVER_GET_FONT, "server-get-font", ReadOnly, System },
1429                 { LFUN_SERVER_GET_LAYOUT, "server-get-layout", ReadOnly, System },
1430                 { LFUN_SERVER_GET_NAME, "server-get-name", ReadOnly, System },
1431                 { LFUN_SERVER_GET_XY, "server-get-xy", ReadOnly, System },
1432 /*!
1433  * \var lyx::FuncCode lyx::LFUN_SERVER_GOTO_FILE_ROW
1434  * \li Action: Sets the cursor position based on the row number of generated TeX file.
1435  * \li Syntax: server-goto-file-row <LYX_FILE_NAME> <ROW_NUMBER>
1436  * \li Origin: Edmar, 23 Dec 1998
1437  * \endvar
1438  */
1439                 { LFUN_SERVER_GOTO_FILE_ROW, "server-goto-file-row", ReadOnly, System },
1440                 { LFUN_SERVER_NOTIFY, "server-notify", ReadOnly, System },
1441                 { LFUN_SERVER_SET_XY, "server-set-xy", ReadOnly, System },
1442
1443                 { LFUN_BUILD_PROGRAM, "build-program", ReadOnly, Buffer },
1444
1445 /*!
1446  * \var lyx::FuncCode lyx::LFUN_BUFFER_AUTO_SAVE
1447  * \li Action: Saves the current buffer to a temporary file.
1448  * \li Notion: Saves the current buffer to a file named "#filename#". This LFUN
1449                is called automatically by LyX, to "autosave" the current buffer.
1450  * \li Syntax: buffer-auto-save
1451  * \endvar
1452  */
1453                 { LFUN_BUFFER_AUTO_SAVE, "buffer-auto-save", Noop, Buffer },
1454 /*!
1455  * \var lyx::FuncCode lyx::LFUN_BUFFER_CHILD_OPEN
1456  * \li Action: Loads the given child document.
1457  * \li Notion: The current document is treated as a parent.
1458  * \li Syntax: buffer-child-open <FILE>
1459  * \li Params: <FILE>: Filename of the child. The directory of the parent is assumed by default.
1460  * \li Origin: Ale, 28 May 1997
1461  * \endvar
1462  */
1463                 { LFUN_BUFFER_CHILD_OPEN, "buffer-child-open", ReadOnly, Buffer },
1464 /*!
1465  * \var lyx::FuncCode lyx::LFUN_BUFFER_CHKTEX
1466  * \li Action: Runs chktex for the current document.
1467  * \li Syntax: buffer-chktex
1468  * \li Origin: Asger, 30 Oct 1997
1469  * \endvar
1470  */
1471                 { LFUN_BUFFER_CHKTEX, "buffer-chktex", ReadOnly, Buffer },
1472 /*!
1473  * \var lyx::FuncCode lyx::LFUN_BUFFER_TOGGLE_COMPRESSION
1474  * \li Action: Toggles compression of the current document on/off.
1475  * \li Syntax: buffer-toggle-compression
1476  * \li Origin: bpeng, 27 Apr 2006
1477  * \endvar
1478  */
1479                 { LFUN_BUFFER_TOGGLE_COMPRESSION, "buffer-toggle-compression", Noop, Buffer },
1480 /*!
1481  * \var lyx::FuncCode lyx::LFUN_BUFFER_TOGGLE_EMBEDDING
1482  * \li Action: Toggles the embeddding feature on/off.
1483  * \li Syntax: buffer-toggle-embedding
1484  * \li Origin: bpeng, 21 Oct 2007
1485  * \endvar
1486  */
1487                 { LFUN_BUFFER_TOGGLE_EMBEDDING, "buffer-toggle-embedding", Noop, Buffer },
1488 /*!
1489  * \var lyx::FuncCode lyx::LFUN_BUFFER_CLOSE
1490  * \li Action: Closes the current buffer.
1491  * \li Notion: Closes the current buffer, asking whether to save it, etc,
1492                if the buffer has been modified.
1493  * \li Syntax: buffer-close
1494  * \endvar
1495  */
1496                 { LFUN_BUFFER_CLOSE, "buffer-close", ReadOnly, Buffer },
1497 /*!
1498  * \var lyx::FuncCode lyx::LFUN_BUFFER_EXPORT
1499  * \li Action: Exports the current buffer (document) to the given format.
1500  * \li Syntax: buffer-export <FORMAT>
1501  * \li Params: <FORMAT> is either "custom" or one of the formats which you
1502                         can find in Tools->Preferences->File formats->Format.
1503                         Usual format you will enter is "pdf2" (pdflatex),
1504                         "pdflatex" (plain tex for pdflatex) or "ps" for postscript.\n
1505                         In case of "custom" you will be asked for a format you
1506                         want to start from and for the command that you want to
1507                         apply to this format. Internally the control is then passed
1508                         to #LFUN_BUFFER_EXPORT_CUSTOM.
1509  * \li Origin: Lgb, 29 Jul 1997
1510  * \endvar
1511  */
1512                 { LFUN_BUFFER_EXPORT, "buffer-export", ReadOnly, Buffer },
1513 /*!
1514  * \var lyx::FuncCode lyx::LFUN_BUFFER_EXPORT_CUSTOM
1515  * \li Action: Exports the current buffer (document) from the given format using
1516                the given command on it.
1517  * \li Syntax: buffer-export-custom <FORMAT> <COMMAND>
1518  * \li Params: <FORMAT> format to start from (LyX will care to produce such
1519                         intermediate file).\n
1520                <COMMAND> this command will be launched on the file. Note that you can
1521                use "$$FName" string to qualify the intermediate file.
1522  * \li Sample: buffer-export-custom dvi dvips -f $$FName -o myfile.ps
1523  * \li Origin: leeming, 27 Mar 2004
1524  * \endvar
1525  */
1526                 { LFUN_BUFFER_EXPORT_CUSTOM, "buffer-export-custom", ReadOnly, Buffer },
1527 /*!
1528  * \var lyx::FuncCode lyx::LFUN_BUFFER_PRINT
1529  * \li Action: Prints the current document.
1530  * \li Notion: Many settings can be given via the preferences dialog.
1531  * \li Syntax: buffer-print <TARGET> <TARGET-NAME> <COMMAND>
1532  * \li Params: <TARGET> is either "printer" or "file".\n
1533                <TARGER-NAME> is either "default" or file name or printer name.\n
1534                <COMMAND> command ensuring the printing job.
1535  * \li Sample: buffer-print file "/trash/newfile1.ps" "dvips"
1536  * \li Origin: leeming, 28 Mar 2004
1537  * \endvar
1538  */
1539                 { LFUN_BUFFER_PRINT, "buffer-print", ReadOnly, Buffer },
1540 /*!
1541  * \var lyx::FuncCode lyx::LFUN_BUFFER_IMPORT
1542  * \li Action: Import a given file as a lyx document.
1543  * \li Notion: File can be imported iff lyx file format is (transitively) reachable via
1544                defined convertors in preferences. Look into File->Import menu to get
1545                an idea of the currently active import formats.
1546  * \li Syntax: buffer-import <FORMAT> [<FILE>]
1547  * \li Origin: Asger, 24 Jul 1998
1548  * \endvar
1549  */
1550                 { LFUN_BUFFER_IMPORT, "buffer-import", NoBuffer, Buffer },
1551 /*!
1552  * \var lyx::FuncCode lyx::LFUN_BUFFER_NEW
1553  * \li Action: Creates a new buffer (that is, document).
1554  * \li Notion: Implicit path can be set in Preferences dialog.
1555  * \li Syntax: buffer-new [<FILE>]
1556  * \li Params: <FILE>: filename of created file with absolute path.
1557  * \endvar
1558  */
1559                 { LFUN_BUFFER_NEW, "buffer-new", NoBuffer, Buffer },
1560 /*!
1561  * \var lyx::FuncCode lyx::LFUN_BUFFER_NEW_TEMPLATE
1562  * \li Action: Creates a new buffer (that is, document) from a template.
1563  * \li Notion: Path for new files and templates can be set in Preferences dialog.
1564                Template will be asked for via Open-dialog.
1565  * \li Syntax: buffer-new-template [<FILE>]
1566  * \li Params: <FILE>: filename of created file with absolute path.
1567  * \endvar
1568  */
1569                 { LFUN_BUFFER_NEW_TEMPLATE,"buffer-new-template", NoBuffer, Buffer },
1570 /*!
1571  * \var lyx::FuncCode lyx::LFUN_BUFFER_RELOAD
1572  * \li Action: Reverts opened document.
1573  * \li Syntax: buffer-reload
1574  * \li Origin: Asger, 2 Feb 1997
1575  * \endvar
1576  */
1577                 { LFUN_BUFFER_RELOAD, "buffer-reload", ReadOnly, Buffer },
1578 /*!
1579  * \var lyx::FuncCode lyx::LFUN_BUFFER_SWITCH
1580  * \li Action: Switch to the given buffer.
1581  * \li Notion: This is useful also in case you need simultaneously more views of the edited
1582                document in different LyX windows.
1583  * \li Syntax: buffer-new-template <BUFFER>
1584  * \li Params: <BUFFER>: already opened document which is to be shown.
1585  * \endvar
1586  */
1587                 { LFUN_BUFFER_SWITCH, "buffer-switch", NoBuffer | ReadOnly, Buffer },
1588 /*!
1589  * \var lyx::FuncCode lyx::LFUN_BUFFER_TOGGLE_READ_ONLY
1590  * \li Action: Toggle editing mode of the current document between read/write and read-only.
1591  * \li Syntax: buffer-toggle-read-only
1592  * \li Origin: Lgb, 27 May 1997
1593  * \endvar
1594  */
1595                 { LFUN_BUFFER_TOGGLE_READ_ONLY, "buffer-toggle-read-only", ReadOnly, Buffer },
1596 /*!
1597  * \var lyx::FuncCode lyx::LFUN_BUFFER_VIEW
1598  * \li Action: Displays current buffer in chosen format.
1599  * \li Notion: Displays the contents of the current buffer in the chosen
1600                format, for example, PDF or DVI. This runs the necessary
1601                converter, calls the defined viewer, and so forth.
1602  * \li Syntax: buffer-view <FORMAT>
1603  * \li Params: <FORMAT>: The format to display, where this is one of the
1604                          formats defined (in the current GUI) in the
1605                          Tools>Preferences>File Formats dialog.
1606  * \endvar
1607  */
1608                 { LFUN_BUFFER_VIEW, "buffer-view", ReadOnly, Buffer },
1609 /*!
1610  * \var lyx::FuncCode lyx::LFUN_BUFFER_UPDATE
1611  * \li Action: Exports the current document and put the result into the
1612                temporary directory.
1613  * \li Notion: In case you are already viewing the exported document (see #LFUN_BUFFER_VIEW)
1614                the output will be rewriten - updated. This is useful in case your viewer
1615                is able to detect such changes (e.g. ghostview for postscript).
1616  * \li Syntax: buffer-update <FORMAT>
1617  * \li Params: <FORMAT>: The format to display, where this is one of the
1618                          formats defined (in the current GUI) in the
1619                          Tools>Preferences>File Formats dialog.
1620  * \li Origin: Dekel, 5 Aug 2000
1621  * \endvar
1622  */
1623                 { LFUN_BUFFER_UPDATE, "buffer-update", ReadOnly, Buffer },
1624
1625 /*!
1626  * \var lyx::FuncCode lyx::LFUN_BUFFER_WRITE
1627  * \li Action: Saves the current buffer.
1628  * \li Notion: Saves the current buffer to disk, using the filename that
1629                is already associated with the buffer, asking for one if
1630                none is yet assigned.
1631  * \li Syntax: buffer-write
1632  * \endvar
1633  */
1634                 { LFUN_BUFFER_WRITE, "buffer-write", ReadOnly, Buffer },
1635 /*!
1636  * \var lyx::FuncCode lyx::LFUN_BUFFER_WRITE_AS
1637  * \li Action: Rename and save current buffer.
1638  * \li Syntax: buffer-write-as <FILENAME>
1639  * \li Params: <FILENAME>: New name of the buffer/file. A relative path
1640                is with respect to the original location of the buffer/file.
1641  * \endvar
1642  */
1643                 { LFUN_BUFFER_WRITE_AS, "buffer-write-as", ReadOnly, Buffer },
1644 /*!
1645  * \var lyx::FuncCode lyx::LFUN_BUFFER_WRITE_ALL
1646  * \li Action: Save all changed documents.
1647  * \li Syntax: buffer-write-all
1648  * \li Origin: rgh, gpothier 6 Aug 2007
1649  * \endvar
1650  */
1651                 { LFUN_BUFFER_WRITE_ALL, "buffer-write-all", ReadOnly, Buffer },
1652 /*!
1653  * \var lyx::FuncCode lyx::LFUN_BUFFER_NEXT
1654  * \li Action: Switch to the next opened document.
1655  * \li Notion: Note that this does not necessarily mean next in tabbar
1656                (for full list see View menu).
1657  * \li Syntax: buffer-next
1658  * \endvar
1659  */
1660                 { LFUN_BUFFER_NEXT, "buffer-next", ReadOnly, Buffer },
1661 /*!
1662  * \var lyx::FuncCode lyx::LFUN_BUFFER_PREVIOUS
1663  * \li Action: Switch to the previous opened document.
1664  * \li Syntax: buffer-previous
1665  * \endvar
1666  */
1667                 { LFUN_BUFFER_PREVIOUS, "buffer-previous", ReadOnly, Buffer },
1668 /*!
1669  * \var lyx::FuncCode lyx::LFUN_MASTER_BUFFER_UPDATE
1670  * \li Action: When run from a child document, this updates (exports) document built
1671                 from the master buffer. If a master is not found, it updates the
1672                 current buffer.
1673  * \li Syntax: master-buffer-update
1674  * \li Author: Tommaso, 20 Sep 2007
1675  * \endvar
1676  */
1677                 { LFUN_MASTER_BUFFER_UPDATE, "master-buffer-update", ReadOnly, Buffer },
1678 /*!
1679  * \var lyx::FuncCode lyx::LFUN_MASTER_BUFFER_VIEW
1680  * \li Action: When run from a child document, this command shows a preview built
1681                from the master buffer. If a master is not found, it previews the
1682                current buffer.
1683  * \li Syntax: master-buffer-view
1684  * \li Author: Tommaso, 20 Sep 2007
1685  * \endvar
1686  */
1687                 { LFUN_MASTER_BUFFER_VIEW, "master-buffer-view", ReadOnly, Buffer },
1688 /*!
1689  * \var lyx::FuncCode lyx::LFUN_BUFFER_LANGUAGE
1690  * \li Action: Set language of the current document.
1691  * \li Syntax: buffer-language <LANG>
1692  * \li Params: <LANG>: language name. See lib/languages for list.
1693  * \li Author: leeming, 30 Mar 2004
1694  * \endvar
1695  */
1696                 { LFUN_BUFFER_LANGUAGE, "buffer-language", Noop, Buffer },
1697 /*!
1698  * \var lyx::FuncCode lyx::LFUN_BUFFER_SAVE_AS_DEFAULT
1699  * \li Action: Save the current document settings as default.
1700  * \li Notion: The file will will be saved into ~/.lyx/templates/defaults.lyx .
1701  * \li Syntax: buffer-save-as-default [<ARGS>]
1702  * \li Params: <ARGS>: contains the particular settings to be saved. They obey the syntax
1703                        you can find in document header of usual .lyx file.
1704  * \li Author: leeming, 30 Mar 2004
1705  * \endvar
1706  */
1707                 { LFUN_BUFFER_SAVE_AS_DEFAULT, "buffer-save-as-default", Noop, Buffer },
1708 /*!
1709  * \var lyx::FuncCode lyx::LFUN_BUFFER_PARAMS_APPLY
1710  * \li Action: Apply the given settings to the current document.
1711  * \li Syntax: buffer-params-apply [<ARGS>]
1712  * \li Params: <ARGS>: contains the particular settings to be saved. They obey the syntax
1713                        you can find in document header of usual .lyx file.
1714  * \li Author: leeming, 30 Mar 2004
1715  * \endvar
1716  */
1717                 { LFUN_BUFFER_PARAMS_APPLY, "buffer-params-apply", Noop, Buffer },
1718
1719 /*!
1720  * \var lyx::FuncCode lyx::LFUN_FILE_INSERT
1721  * \li Action: Inserts another LyX file.
1722  * \li Syntax: file-insert [<FILE>]
1723  * \li Params: <FILE>: Filename to be inserted.
1724  * \endvar
1725  */
1726                 { LFUN_FILE_INSERT, "file-insert", Noop, Edit },
1727 /*!
1728  * \var lyx::FuncCode lyx::LFUN_FILE_INSERT_PLAINTEXT
1729  * \li Action: Inserts plain text file.
1730  * \li Syntax: file-insert-plaintext [<FILE>]
1731  * \li Params: <FILE>: Filename to be inserted.
1732  * \li Origin: CFO-G, 19 Nov 1997
1733  * \endvar
1734  */
1735                 { LFUN_FILE_INSERT_PLAINTEXT, "file-insert-plaintext", Noop, Edit },
1736 /*!
1737  * \var lyx::FuncCode lyx::LFUN_FILE_INSERT_PLAINTEXT_PARA
1738  * \li Action: Inserts plain text file as paragraph (i.e. join lines).
1739  * \li Syntax: file-insert-plaintext-para [<FILE>]
1740  * \li Params: <FILE>: Filename to be inserted.
1741  * \li Origin: Levon, 14 Feb 2001
1742  * \endvar
1743  */
1744                 { LFUN_FILE_INSERT_PLAINTEXT_PARA, "file-insert-plaintext-para", Noop, Edit },
1745 /*!
1746  * \var lyx::FuncCode lyx::LFUN_FILE_OPEN
1747  * \li Action: Open LyX document.
1748  * \li Syntax: file-open [<FILE>]
1749  * \li Params: <FILE>: Filename to be opened.
1750  * \endvar
1751  */
1752                 { LFUN_FILE_OPEN, "file-open", NoBuffer, Buffer },
1753
1754 /*!
1755  * \var lyx::FuncCode lyx::LFUN_CALL
1756  * \li Action: Executes a command defined in a .def file.
1757  * \li Notion: The definitions are by default read from lib/commands/default.def.\n
1758                A .def file allows to define a command with \\define "<NAME>" "<LFUN>"
1759                where <NAME> is the name of the new command and <LFUN> is the lfun code
1760                to be executed (see e.g. #LFUN_COMMAND_SEQUENCE).
1761                \\def_file "FileName" allows to include another .def file. \n
1762                This is particularly useful in connection with toolbar buttons:
1763                Since the name of the button image for this lfun is 
1764                lib/images/commands/<NAME>.png this is the way to assign an image
1765                to a complex command-sequence.
1766  * \li Syntax: call <NAME>
1767  * \li Params: <NAME>: Name of the command that must be called.
1768  * \li Origin: broider, 2 Oct 2007
1769  * \endvar
1770  */
1771                 { LFUN_CALL, "call", NoBuffer, System },
1772 /*!
1773  * \var lyx::FuncCode lyx::LFUN_META_PREFIX
1774  * \li Action: Simulate halting Meta key (Alt key on PCs).
1775  * \li Notion: Used for buffer editation not for GUI control.
1776  * \li Syntax: meta-prefix
1777  * \endvar
1778  */
1779                 { LFUN_META_PREFIX, "meta-prefix", NoBuffer, System },
1780 /*!
1781  * \var lyx::FuncCode lyx::LFUN_CANCEL
1782  * \li Action: Cancels sequence prepared by #LFUN_META_PREFIX .
1783  * \li Syntax: cancel
1784  * \endvar
1785  */
1786                 { LFUN_CANCEL, "cancel", NoBuffer, System },
1787
1788 /*!
1789  * \var lyx::FuncCode lyx::LFUN_COMMAND_EXECUTE
1790  * \li Action: Opens the minibuffer toolbar so that the user can type in there.
1791  * \li Notion: Usually bound to M-x shortcut.
1792  * \li Syntax: command-execute
1793  * \endvar
1794  */
1795                 { LFUN_COMMAND_EXECUTE, "command-execute", NoBuffer, Edit },
1796                 { LFUN_COMMAND_PREFIX, "command-prefix", NoBuffer, Hidden },
1797 /*!
1798  * \var lyx::FuncCode lyx::LFUN_COMMAND_SEQUENCE
1799  * \li Action: Run more commands (LFUN and its parameters) in a sequence.
1800  * \li Syntax: command-sequence <CMDS>
1801  * \li Params: <CMDS>: Sequence of commands separated by semicolons.
1802  * \li Sample: command-sequence cut; ert-insert; self-insert \; paste; self-insert {}; inset-toggle;
1803  * \li Origin: Andre', 11 Nov 1999
1804  * \endvar
1805  */
1806                 { LFUN_COMMAND_SEQUENCE, "command-sequence", NoBuffer, System },
1807
1808 /*!
1809  * \var lyx::FuncCode lyx::LFUN_PREFERENCES_SAVE
1810  * \li Action: Save user preferences.
1811  * \li Syntax: preferences-save
1812  * \li Origin: Lgb, 27 Nov 1999
1813  * \endvar
1814  */
1815                 { LFUN_PREFERENCES_SAVE, "preferences-save", NoBuffer, System },
1816 /*!
1817  * \var lyx::FuncCode lyx::LFUN_RECONFIGURE
1818  * \li Action: Reconfigure the automatic settings.
1819  * \li Syntax: reconfigure
1820  * \li Origin: Asger, 14 Feb 1997
1821  * \endvar
1822  */
1823                 { LFUN_RECONFIGURE, "reconfigure", NoBuffer, System },
1824 /*!
1825  * \var lyx::FuncCode lyx::LFUN_LYXRC_APPLY
1826  * \li Action: Apply the given settings to user preferences.
1827  * \li Syntax: lyxrc-apply <SETTINGS>
1828  * \li Params: <SETTINGS>: settings which are to be set. Take a look into ~/.lyx/preferences
1829                            to get an idea which commands to use and their syntax.
1830                            #lyx::LyXRC::LyXRCTags has the list of possible commands.
1831  * \endvar
1832  */
1833                 { LFUN_LYXRC_APPLY, "lyxrc-apply", NoBuffer, System },
1834 /*!
1835  * \var lyx::FuncCode lyx::LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE
1836  * \li Action: Determine whether keep cursor inside the editing window regardless
1837                the scrollbar movement.
1838  * \li Syntax: toggle-cursor-follows-scrollbar
1839  * \li Origin: ARRae, 2 Dec 1997
1840  * \endvar
1841  */
1842                 { LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE, "cursor-follows-scrollbar-toggle", ReadOnly, System },
1843 /*!
1844  * \var lyx::FuncCode lyx::LFUN_SET_COLOR
1845  * \li Action: Set the given LyX color to the color defined by the X11 name given.
1846  * \li Notion: A new color entry is created if the color is unknown.
1847                Color names can be stored as a part of user settings.
1848  * \li Syntax: set-color <LYX_NAME> <X11_NAME>
1849  * \li Origin: SLior, 11 Jun 2000
1850  * \endvar
1851  */
1852                 { LFUN_SET_COLOR, "set-color", ReadOnly | NoBuffer, System },
1853 /*!
1854  * \var lyx::FuncCode lyx::LFUN_STATISTICS
1855  * \li Action: Count the statistics (number of words and characters)
1856                in the document or in the given selection.
1857  * \li Notion: Note that this function gives the number of words/chars written,
1858                not the number of characters which will be typeset.
1859  * \li Syntax: statistics
1860  * \li Origin: lasgouttes, Jan 27 2004; ps, Jan 8 2008
1861  * \endvar
1862  */
1863                 { LFUN_STATISTICS, "statistics", ReadOnly, System },
1864 /*!
1865  * \var lyx::FuncCode lyx::LFUN_COMPLETION_INLINE
1866  * \li Action: Show the inline completion at the cursor position.
1867  * \li Syntax: completion-inline
1868  * \li Origin: sts, Feb 19 2008
1869  * \endvar
1870  */
1871                 { LFUN_COMPLETION_INLINE, "completion-inline", ReadOnly | NoUpdate, Edit },
1872 /*!
1873  * \var lyx::FuncCode lyx::LFUN_COMPLETION_POPUP
1874  * \li Action: Show the completion popup at the cursor position.
1875  * \li Syntax: completion-popup
1876  * \li Origin: sts, Feb 19 2008
1877  * \endvar
1878  */
1879                 { LFUN_COMPLETION_POPUP, "completion-popup", ReadOnly | NoUpdate, Edit },
1880 /*!
1881  * \var lyx::FuncCode lyx::LFUN_COMPLETION_COMPLETE
1882  * \li Action: Try to complete the word or command at the cursor position.
1883  * \li Syntax: completion-complete
1884  * \li Origin: sts, Feb 19 2008
1885  * \endvar
1886  */
1887                 { LFUN_COMPLETION_COMPLETE, "complete", SingleParUpdate, Edit },
1888
1889                 { LFUN_NOACTION, "", Noop, Hidden }
1890 #ifndef DOXYGEN_SHOULD_SKIP_THIS
1891         };
1892
1893         for (int i = 0; items[i].action != LFUN_NOACTION; ++i) {
1894                 newFunc(items[i].action, items[i].name, items[i].attrib, items[i].type);
1895         }
1896
1897         init = true;
1898 }
1899 #endif
1900
1901 LyXAction::LyXAction()
1902 {
1903         init();
1904 }
1905
1906
1907 // Returns an action tag from a string.
1908 FuncRequest LyXAction::lookupFunc(string const & func) const
1909 {
1910         string const func2 = trim(func);
1911
1912         if (func2.empty()) {
1913                 return FuncRequest(LFUN_NOACTION);
1914         }
1915
1916         string cmd;
1917         string const arg = split(func2, cmd, ' ');
1918
1919         func_map::const_iterator fit = lyx_func_map.find(cmd);
1920
1921         return fit != lyx_func_map.end() ? FuncRequest(fit->second, arg) : FuncRequest(LFUN_UNKNOWN_ACTION);
1922 }
1923
1924
1925 string const LyXAction::getActionName(FuncCode action) const
1926 {
1927         info_map::const_iterator const it = lyx_info_map.find(action);
1928         return it != lyx_info_map.end() ? it->second.name : string();
1929 }
1930
1931
1932 LyXAction::func_type const LyXAction::getActionType(FuncCode action) const
1933 {
1934         info_map::const_iterator const it = lyx_info_map.find(action);
1935         return it != lyx_info_map.end() ? it->second.type : Hidden;
1936 }
1937
1938
1939 bool LyXAction::funcHasFlag(FuncCode action,
1940                             LyXAction::func_attrib flag) const
1941 {
1942         info_map::const_iterator ici = lyx_info_map.find(action);
1943
1944         if (ici == lyx_info_map.end()) {
1945                 LYXERR0("action: " << action << " is not known.");
1946                 LASSERT(false, /**/);
1947         }
1948
1949         return ici->second.attrib & flag;
1950 }
1951
1952
1953 LyXAction::const_func_iterator LyXAction::func_begin() const
1954 {
1955         return lyx_func_map.begin();
1956 }
1957
1958
1959 LyXAction::const_func_iterator LyXAction::func_end() const
1960 {
1961         return lyx_func_map.end();
1962 }
1963
1964
1965 } // namespace lyx