]> git.lyx.org Git - features.git/blob - src/lfuns.h
Introduce LFUN_SCROLL.
[features.git] / src / lfuns.h
1 // -*- C++ -*-
2 /**
3  * \file lfuns.h
4  * This file is part of LyX, the document processor.
5  * Licence details can be found in the file COPYING.
6  *
7  * Full author contact details are available in file CREDITS.
8  *
9  * To add a new function:
10  * - add a new enum constant and doc immediately before LFUN_LASTACTION
11  * - add an appropriate line in LyXAction.cpp
12  * - add a branch to a suitable ::doDispatch() method
13  * - add correct test to the corresponding ::getStatus() method
14  */
15
16 #ifndef LFUNS_H
17 #define LFUNS_H
18
19 #include "support/strfwd.h"
20
21
22 namespace lyx {
23
24 /** These are all the lyx functions, the main mechanism
25  * through which the frontends communicate with the core.
26  *
27  * They are managed in LyXAction.cpp and handled in various
28  * ::dispatch() functions, starting with LyXFunc.C:dispatch(),
29  * BufferView::dispatch(), Cursor::dispatch() and
30  * Inset*::doDispatch();
31  */
32
33 /* LFUN documentation (a start at least, Chr 2007-08-12)
34  *
35  * The documentation below is primarily notes about restrictions and
36  * oddities relating to the different LFUNs.
37  *
38  * Doxygen template below.
39  */
40
41 /**
42  * 
43  * \li Action: 
44  * \li Notion: 
45  * \li Syntax: 
46  * \li Params: 
47  * \li Origin: 
48  */
49
50 enum kb_action {
51         LFUN_UNKNOWN_ACTION = -1,
52         // 0
53         LFUN_NOACTION = 0,
54         LFUN_COMMAND_PREFIX,
55         LFUN_SCREEN_RECENTER,
56         LFUN_BUFFER_NEW,
57         LFUN_BUFFER_WRITE,
58         // 5
59 /**
60  * LFUN_BUFFER_WRITE_AS
61  * \li Action: Rename and save current buffer.
62  * \li Syntax: buffer-write-as <filename>
63  * \li Params: <filename> = New name of the buffer/file. A relative path
64  *             is with respect to the original location of the buffer/file.
65  */
66         LFUN_BUFFER_WRITE_AS,
67         LFUN_BUILD_PROGRAM,
68         LFUN_BUFFER_VIEW,
69         LFUN_BUFFER_CLOSE,
70         LFUN_LYX_QUIT,
71         // 10
72         LFUN_BUFFER_AUTO_SAVE,
73         LFUN_UNDO,
74         LFUN_REDO,
75         LFUN_PASTE,
76         LFUN_PRIMARY_SELECTION_PASTE,
77         // 15
78         LFUN_CUT,
79         LFUN_COPY,
80         LFUN_ERROR_NEXT,
81         LFUN_NOTE_NEXT,
82         LFUN_INSET_TOGGLE,
83         // 20
84         LFUN_HFILL_INSERT,
85         LFUN_FONT_FREE_APPLY,
86         LFUN_FONT_FREE_UPDATE,
87         LFUN_FONT_EMPH,
88         LFUN_FONT_BOLD,
89         // 25
90         LFUN_FONT_ROMAN,
91         LFUN_FONT_NOUN,
92         LFUN_FONT_ITAL,
93         LFUN_FONT_FRAK,
94         LFUN_CHAR_FORWARD,
95         // 30
96         LFUN_CHAR_BACKWARD,
97         LFUN_UP,
98         LFUN_DOWN,
99         LFUN_SCREEN_UP,
100         LFUN_SCREEN_DOWN,
101         // 35
102         LFUN_LINE_BEGIN,
103         LFUN_LINE_END,
104         LFUN_CELL_FORWARD,
105         LFUN_CELL_BACKWARD,
106         LFUN_WORD_FORWARD,
107         // 40
108         LFUN_WORD_BACKWARD,
109         LFUN_BUFFER_BEGIN,
110         LFUN_BUFFER_END,
111         LFUN_CHAR_FORWARD_SELECT,
112         LFUN_CHAR_BACKWARD_SELECT,
113         // 45
114         LFUN_UP_SELECT,
115         LFUN_DOWN_SELECT,
116         LFUN_SCREEN_UP_SELECT,
117         LFUN_SCREEN_DOWN_SELECT,
118         LFUN_LINE_BEGIN_SELECT,
119         // 50
120         LFUN_LINE_END_SELECT,
121         LFUN_WORD_FORWARD_SELECT,
122         LFUN_WORD_BACKWARD_SELECT,
123         LFUN_WORD_SELECT,
124         LFUN_BUFFER_BEGIN_SELECT,
125         // 55
126         LFUN_BUFFER_END_SELECT,
127         LFUN_SPACE_INSERT,              // JSpitzm 20030520
128         LFUN_SPECIALCHAR_INSERT,        // JSpitzm, 20071206
129 /**
130  * LFUN_MARK_TOGGLE
131  * \li Action: Toggle between MARK_ON and MARK_OFF
132  * \li Syntax: mark-toggle
133  * \li Origin: poenitz, May 5 2006
134  */
135         LFUN_MARK_TOGGLE,
136         LFUN_CHAR_DELETE_FORWARD,
137         // 60
138         LFUN_CHAR_DELETE_BACKWARD,
139         LFUN_NEW_LINE,
140         LFUN_LINE_BREAK,                // uwestoehr 20071125
141         LFUN_BREAK_PARAGRAPH,
142         LFUN_QUOTE_INSERT,
143         // 65
144         LFUN_ACCENT_CIRCUMFLEX,
145         LFUN_MATH_SUBSCRIPT,
146         LFUN_MATH_SUPERSCRIPT,
147         LFUN_ACCENT_GRAVE,
148         LFUN_ACCENT_ACUTE,
149         // 70
150         LFUN_ACCENT_TILDE,
151         LFUN_ACCENT_CEDILLA,
152         LFUN_ACCENT_MACRON,
153         LFUN_ACCENT_UNDERBAR,
154         LFUN_ACCENT_UNDERDOT,
155         // 75
156         LFUN_ACCENT_CIRCLE,
157         LFUN_ACCENT_TIE,
158         LFUN_ACCENT_BREVE,
159         LFUN_ACCENT_CARON,
160         LFUN_ACCENT_SPECIAL_CARON,
161         // 80
162         LFUN_ACCENT_HUNGARIAN_UMLAUT,
163         LFUN_ACCENT_UMLAUT,
164         LFUN_ACCENT_DOT,
165         LFUN_ACCENT_OGONEK,
166         LFUN_SELF_INSERT,
167         // 85
168         LFUN_GETBUFNAME,
169         LFUN_SERVER_GET_XY,
170         LFUN_SERVER_SET_XY,
171         LFUN_SERVER_CHAR_AFTER,
172         LFUN_LINEATCURSOR,
173         // 90
174         LFUN_SERVER_GET_LAYOUT,
175         LFUN_SERVER_GET_FONT,
176         LFUN_SERVER_GET_NAME,
177         LFUN_SERVER_NOTIFY,
178         LFUN_SERVER_GOTO_FILE_ROW,
179         // 95
180         LFUN_NOTE_INSERT,
181         LFUN_ENVIRONMENT_INSERT,        // unused as of 20060905
182         LFUN_KEYMAP_OFF,
183         LFUN_KEYMAP_PRIMARY,
184         LFUN_KEYMAP_SECONDARY,
185         // 100
186         LFUN_KEYMAP_TOGGLE,
187         LFUN_MATH_INSERT,
188         LFUN_MATH_MATRIX,
189         LFUN_MATH_LIMITS,
190         LFUN_MATH_DELIM,                // Alejandro 180696
191         // 105
192         LFUN_MATH_DISPLAY,              // Alejandro 180696
193         LFUN_MATH_MODE,                 // Alejandro 040696
194         LFUN_MATH_NUMBER,               // Alejandro 040696
195         LFUN_MATH_NONUMBER,             // Alejandro 180696
196         LFUN_MATH_SIZE,                 // Alejandro 150896
197         // 110
198         LFUN_MATH_MACRO,                // ale970510
199         LFUN_MATH_EXTERN,               // Andre' 20010424
200         LFUN_MATH_MUTATE,               // Andre' 20010523
201         LFUN_MATH_IMPORT_SELECTION,     // Andre' 20010704
202         LFUN_MATH_SPACE,                // Andre' 20010725
203         // 115
204         LFUN_WORD_DELETE_FORWARD,
205         LFUN_WORD_DELETE_BACKWARD,
206         LFUN_LINE_DELETE,
207 /**
208  * LFUN_MARK_OFF
209  * \li Action: Disable selecting of text-region.
210  * \li Syntax: mark-off
211  */
212         LFUN_MARK_OFF,
213 /**
214  * LFUN_MARK_ON
215  * \li Action: Enable selecting of text-region.
216  * \li Notion: After enabling you can simply move arrow keys to get selected region.
217  * \li Syntax: mark-on
218  */
219         LFUN_MARK_ON,
220         // 120
221         LFUN_LAYOUT,
222         LFUN_LAYOUT_PARAGRAPH,
223         LFUN_DROP_LAYOUTS_CHOICE,       // used in bindings as of 20060905
224         LFUN_FONT_TYPEWRITER,           // changed from FONT_CODE 20070920
225         LFUN_FONT_SANS,
226         // 125
227         LFUN_FONT_DEFAULT,
228         LFUN_FONT_UNDERLINE,
229         LFUN_FONT_SIZE,
230         LFUN_FONT_STATE,
231         LFUN_WORD_UPCASE,
232         // 130
233         LFUN_WORD_LOWCASE,
234         LFUN_WORD_CAPITALIZE,
235         LFUN_LABEL_INSERT,
236         LFUN_DEPTH_DECREMENT,
237         LFUN_DEPTH_INCREMENT,
238         // 135
239         LFUN_MENU_OPEN,                 // used in bindings as of 20060905
240         LFUN_CANCEL,
241         LFUN_META_PREFIX,
242         LFUN_COMMAND_EXECUTE,
243         LFUN_FILE_INSERT,
244         // 140
245         LFUN_FILE_INSERT_PLAINTEXT,     // CFO-G 1997-11-19
246         LFUN_FILE_INSERT_PLAINTEXT_PARA,// Levon 2001-02-14
247         LFUN_FILE_NEW,                  // for scripting purposes
248         LFUN_FILE_OPEN,
249         LFUN_PARAGRAPH_UP,              // Asger 1996-10-01
250         // 145
251         LFUN_PARAGRAPH_UP_SELECT,       // Asger 1996-10-01
252         LFUN_PARAGRAPH_DOWN,            // Asger 1996-10-01
253         LFUN_PARAGRAPH_DOWN_SELECT,     // Asger 1996-10-01
254         LFUN_BREAK_PARAGRAPH_SKIP,
255         LFUN_DELETE_BACKWARD_SKIP,
256         // 150
257         LFUN_DELETE_FORWARD_SKIP,
258         LFUN_BUFFER_NEW_TEMPLATE,       // Asger 1997-02-02
259         LFUN_BUFFER_RELOAD,             // Asger 1997-02-02
260         LFUN_RECONFIGURE,               // Asger 1997-02-14
261         LFUN_INDEX_PRINT,               // Lgb 97-02-27
262         // 155
263         LFUN_CELL_SPLIT,
264         LFUN_BUFFER_CHILD_OPEN,         // Ale 970528
265         LFUN_TOC_INSERT,                // Lgb 97-05-27
266         LFUN_FLOAT_LIST,                // Lgb 20010503
267         LFUN_BUFFER_TOGGLE_READ_ONLY,   // Lgb 97-05-27
268         // 160
269         LFUN_VC_REGISTER,               // Lgb 97-07-01
270         LFUN_VC_CHECK_IN,               // Lgb 97-07-01
271         LFUN_VC_CHECK_OUT,              // Lgb 97-07-01
272         LFUN_VC_REVERT,                 // Lgb 97-07-01
273         LFUN_VC_UNDO_LAST,              // Lgb 97-07-01
274         // 165
275         LFUN_BUFFER_EXPORT,             // Lgb 97-07-29
276         LFUN_LABEL_GOTO,                // Ale 970806
277         LFUN_TOGGLE_CURSOR_FOLLOWS_SCROLLBAR, // ARRae 971202
278         LFUN_BUFFER_CHKTEX,             // Asger 971030
279         LFUN_HYPERLINK_INSERT,          // CFO-G 971121
280         // 170
281         LFUN_WORD_FIND_FORWARD,         // Etienne 980216
282         LFUN_WORD_FIND_BACKWARD,        // Etienne 980220
283         LFUN_APPENDIX,                  // ettrich 980505
284         LFUN_BUFFER_IMPORT,             // Asger 980724
285         LFUN_COMMAND_SEQUENCE,          // Andre' 991111
286         // 175
287         LFUN_PREFERENCES_SAVE,          // Lgb 991127
288         LFUN_HELP_OPEN,                 // Jug 990627
289         LFUN_DATE_INSERT,               // jdblair 20000131
290         LFUN_LANGUAGE,                  // Dekel 20000203
291         LFUN_ERT_INSERT,                // Jug 20000218
292         // 180
293         LFUN_FOOTNOTE_INSERT,           // Jug 20000307
294         LFUN_PARAGRAPH_SPACING,         // Lgb 20000411
295         LFUN_TABULAR_INSERT,            // Jug 20000412
296         LFUN_LOFVIEW,                   // Dekel 20000519
297         LFUN_LOTVIEW,                   // Dekel 20000519
298         // 185
299         LFUN_LOAVIEW,                   // Dekel 20000519
300         LFUN_SET_COLOR,                 // SLior 20000611
301         LFUN_MARGINALNOTE_INSERT,       // Lgb 20000626
302         LFUN_FLOAT_INSERT,              // Lgb 20000627
303         LFUN_FLOAT_WIDE_INSERT,         // Lgb 20010531
304         // 190
305         LFUN_CAPTION_INSERT,            // Lgb 20000718; inactive as of 20060905
306         LFUN_BUFFER_SWITCH,
307         LFUN_TABULAR_FEATURE,           // Jug 20000728
308         LFUN_LAYOUT_TABULAR,            // Jug 20000731
309         LFUN_BUFFER_UPDATE,             // Dekel 20000805
310         // 195
311         LFUN_INDEX_INSERT,              // Angus 20000803
312         LFUN_SCREEN_FONT_UPDATE,        // ARRae 20000813
313         LFUN_PARAGRAPH_GOTO,            // Dekel 20000826
314         LFUN_REFERENCE_NEXT,            // Dekel 20010114
315         LFUN_BOOKMARK_SAVE,             // Dekel 20010127
316         // 200
317         LFUN_BOOKMARK_GOTO,             // Dekel 20010127
318         LFUN_SELECT_FILE_SYNC,          // Levon 20010214
319         LFUN_MESSAGE,                   // Lgb 20010408; for scripting purposes, output in minibuffer
320         LFUN_CHARS_TRANSPOSE,           // Lgb 20010425
321         LFUN_ESCAPE,                    // Lgb 20010517
322         // 205
323         LFUN_THESAURUS_ENTRY,           // Levon 20010720
324         LFUN_OPTIONAL_INSERT,           // Martin 12 Aug 2002
325         LFUN_MOUSE_PRESS,               // André 9 Aug 2002
326         LFUN_MOUSE_MOTION,              // André 9 Aug 2002
327         LFUN_MOUSE_RELEASE,             // André 9 Aug 2002
328         // 210
329         LFUN_MOUSE_DOUBLE,              // André 9 Aug 2002
330         LFUN_MOUSE_TRIPLE,              // André 9 Aug 2002
331         LFUN_WRAP_INSERT,               // Dekel 7 Apr 2002
332         LFUN_CHANGES_TRACK,             // Levon 20021001 (cool date !)
333         LFUN_CHANGES_MERGE,             // Levon 20021016
334         // 215
335         LFUN_CHANGE_ACCEPT,             // Levon 20021016
336         LFUN_CHANGE_REJECT,             // Levon 20021016
337         LFUN_ALL_CHANGES_ACCEPT,        // Levon 20021016
338         LFUN_ALL_CHANGES_REJECT,        // Levon 20021016
339         LFUN_BIBITEM_INSERT,            // André 14 Feb 2003
340         // 220
341         LFUN_DIALOG_SHOW,
342         LFUN_DIALOG_SHOW_NEW_INSET,
343         LFUN_DIALOG_UPDATE,
344         LFUN_DIALOG_HIDE,
345         LFUN_DIALOG_TOGGLE,             // JSpitzm 20070430
346         // 225
347         LFUN_DIALOG_DISCONNECT_INSET,
348         LFUN_INSET_APPLY,
349         LFUN_INSET_INSERT,
350         LFUN_INSET_MODIFY,
351         LFUN_INSET_DIALOG_UPDATE,
352         // 230
353         LFUN_INSET_SETTINGS,
354         LFUN_PARAGRAPH_PARAMS_APPLY,
355 /**
356  * LFUN_PARAGRAPH_PARAMS_APPLY
357  * \li Action: Change paragraph settings.
358  * \li Notion: Overwrite all nonspecified settings to the default ones. 
359                Use paragraph-params lfun if you don't want to overwrite others settings.
360  * \li Syntax: lfun-paragraph-params-apply [INDENT] [SPACING] [ALIGN] [OTHERS]
361  * \li Params: For parameters see lfun-paragraph-params lfun.
362  * \li Origin: leeming, 30 Mar 2004
363  */
364         LFUN_PARAGRAPH_UPDATE,
365         LFUN_EXTERNAL_EDIT,
366         LFUN_BRANCH_INSERT,
367         // 235
368         LFUN_BOX_INSERT,
369         LFUN_LINE_INSERT,
370         LFUN_NEWPAGE_INSERT,            // uwestoehr 20071124
371         LFUN_PAGEBREAK_INSERT,
372         LFUN_REPEAT,
373         // 240
374         LFUN_FINISHED_LEFT,
375         LFUN_FINISHED_RIGHT,
376         LFUN_FLEX_INSERT,
377         LFUN_WORD_FIND,
378         LFUN_WORD_REPLACE,
379         // 245
380         LFUN_BUFFER_EXPORT_CUSTOM,
381         LFUN_BUFFER_PRINT,
382         LFUN_NEXT_INSET_TOGGLE,
383         LFUN_ALL_INSETS_TOGGLE,
384         LFUN_BUFFER_LANGUAGE,
385         // 250
386         LFUN_TEXTCLASS_APPLY,
387         LFUN_TEXTCLASS_LOAD,
388         LFUN_BUFFER_SAVE_AS_DEFAULT,
389         LFUN_BUFFER_PARAMS_APPLY,
390         LFUN_LYXRC_APPLY,
391         // 255
392         LFUN_GRAPHICS_EDIT,
393         LFUN_INSET_REFRESH,
394         LFUN_BUFFER_NEXT,
395         LFUN_BUFFER_PREVIOUS,
396         LFUN_WORDS_COUNT,
397         // 260
398         LFUN_CHANGES_OUTPUT,             // jspitzm 20050121
399         LFUN_BIBTEX_DATABASE_ADD,
400         LFUN_BIBTEX_DATABASE_DEL,
401         LFUN_CITATION_INSERT,
402         LFUN_OUTLINE_UP,                 // Vermeer 20060323
403         // 265
404         LFUN_OUTLINE_DOWN,
405         LFUN_OUTLINE_IN,
406         LFUN_OUTLINE_OUT,
407         LFUN_PARAGRAPH_MOVE_DOWN,        // Edwin 20060408
408         LFUN_PARAGRAPH_MOVE_UP,          // Edwin 20060408
409         // 270
410         LFUN_BUFFER_TOGGLE_COMPRESSION,  // bpeng 20060427
411         LFUN_MATH_BIGDELIM,
412         LFUN_CLIPBOARD_PASTE,
413         LFUN_INSET_DISSOLVE,             // jspitzm 20060807
414         LFUN_CHANGE_NEXT,
415         // 275
416         LFUN_WINDOW_NEW,                 // Abdel 20061021
417         LFUN_WINDOW_CLOSE,               // Abdel 20061023
418         LFUN_UNICODE_INSERT,             // Lgb 20061022
419         LFUN_BOOKMARK_CLEAR,             // bpeng 20061031
420         LFUN_NOMENCL_INSERT,             // Ugras
421         // 280
422         LFUN_NOMENCL_PRINT,              // Ugras
423         LFUN_CLEARPAGE_INSERT,           // Ugras 20061125
424         LFUN_CLEARDOUBLEPAGE_INSERT,     // Ugras 20061125
425         LFUN_LISTING_INSERT,             // Herbert 20011110, bpeng 20070502
426         LFUN_TOOLBAR_TOGGLE,             // Edwin 20070521
427         // 285
428         LFUN_BUFFER_WRITE_ALL,           // rgh, gpothier 200707XX
429         LFUN_PARAGRAPH_PARAMS,
430 /**
431  * LFUN_PARAGRAPH_PARAMS
432  * \li Action: Change paragraph settings
433  * \li Notion: Modifies the current paragraph, or currently selected paragraphs. 
434                This function only modifies, and does not override, existing settings.
435  * \li Syntax: lfun_paragraph-params [INDENT] [SPACING] [ALIGN] [OTHERS]
436  * \li Params: INDENT:  \\noindent|\\indent|\\indent-toggle|\\leftindent LENGTH\n
437                SPACING: \\paragraph_spacing default|single|onehalf|double|other\n
438                ALIGN:   \\align block|left|right|center|default\n
439                OTHERS:  \\labelwidthstring WIDTH|\\start_of_appendix\n
440  * \li Origin: rgh, Aug 15 2007
441  */
442         LFUN_LAYOUT_MODULES_CLEAR,       // rgh, 20070825
443         LFUN_LAYOUT_MODULE_ADD,          // rgh, 20070825
444         LFUN_LAYOUT_RELOAD,              // rgh, 20070903
445         // 290
446         LFUN_MASTER_BUFFER_VIEW,         // Tommaso, 20070920
447         LFUN_MASTER_BUFFER_UPDATE,       // Tommaso, 20070920
448         LFUN_INFO_INSERT,                // bpeng, 20071007
449         LFUN_CALL,                       // broider, 20071002
450         LFUN_BUFFER_TOGGLE_EMBEDDING,    // bpeng, 20071021
451         // 295
452         LFUN_CHAR_LEFT,                  // dov, 20071022
453         LFUN_CHAR_LEFT_SELECT,           // dov, 20071022
454         LFUN_CHAR_RIGHT,                 // dov, 20071022
455         LFUN_CHAR_RIGHT_SELECT,          // dov, 20071022
456         LFUN_FINISHED_BACKWARD,          // dov, 20071022
457         // 300
458         LFUN_FINISHED_FORWARD,           // dov, 20071022
459         LFUN_WORD_LEFT,                  // dov, 20071028
460         LFUN_WORD_LEFT_SELECT,           // dov, 20071028
461         LFUN_WORD_RIGHT,                 // dov, 20071028
462         LFUN_WORD_RIGHT_SELECT,          // dov, 20071028
463         // 305
464         LFUN_MATH_MACRO_FOLD,
465         LFUN_MATH_MACRO_UNFOLD,
466         LFUN_MATH_MACRO_ADD_PARAM,
467         LFUN_MATH_MACRO_REMOVE_PARAM,
468         LFUN_MATH_MACRO_APPEND_GREEDY_PARAM,
469         // 310
470         LFUN_MATH_MACRO_REMOVE_GREEDY_PARAM,
471         LFUN_MATH_MACRO_MAKE_OPTIONAL,
472         LFUN_MATH_MACRO_MAKE_NONOPTIONAL,
473         LFUN_MATH_MACRO_ADD_OPTIONAL_PARAM,
474         LFUN_MATH_MACRO_REMOVE_OPTIONAL_PARAM,
475
476         // 315
477         LFUN_MATH_MACRO_ADD_GREEDY_OPTIONAL_PARAM,
478         LFUN_IN_MATHMACROTEMPLATE,
479 /** LFUN_SCROLL
480  * \li Action: scroll the buffer view.
481  * \li Notion: Only about scrolling up or down; do not modify the cursor.
482  * \li Syntax: scroll [TYPE] [QUANTITY]
483  * \li Params: TYPE:  line|page\n
484                QUANTITY: up|down|<number>\n
485  * \li Origin: Abdelrazak Younes, Dec 27 2007
486 */
487         LFUN_SCROLL,
488         LFUN_LASTACTION                  // end of the table
489 };
490
491
492 } // namespace lyx
493
494 #endif // LFUNS_H