void LyXAction::newFunc(FuncCode action, string const & name,
- unsigned int attrib, LyXAction::func_type type)
+ unsigned int attrib, LyXAction::FuncType type)
{
lyx_func_map[name] = action;
FuncInfo tmpinfo;
// magnitudes faster.
static bool init;
- if (init) return;
+ if (init)
+ return;
struct ev_item {
FuncCode action;
char const * name;
unsigned int attrib;
- func_type type;
+ FuncType type;
};
ev_item const items[] = {
textclass: name of textclass (e.g. article) \n
menu: name of lfun used in menu \n
icon: name of lfun used in toolbar \n
- buffer: "name"|"path"|"class"
+ buffer: "name"|"path"|"class"|"vcs-revision"
* \li Sample: command-sequence info-insert buffer path; info-insert buffer name
* \li Origin: bpeng, 7 Oct 2007
* \endvar
* \endvar
*/
{ LFUN_NOTE_NEXT, "note-next", ReadOnly, Edit },
-/*!
- * \var lyx::FuncCode lyx::LFUN_NOTES_MUTATE
- * \li Action: Changes all Note insets of a particular type (source)
- to a different type (target) fot the current document.
- * \li Syntax: notes-mutate <SOURCE> <TARGET>
- * \li Params: <SOURCE/TARGET>: Note|Comment|Greyedout
- * \li Origin: sanda, 18 Jun 2008
- * \endvar
- */
- { LFUN_NOTES_MUTATE, "notes-mutate", Argument, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_PHANTOM_INSERT
* \li Action: Inserts phantom on the current cursor postion,
* \li Origin: Tommaso, Nov 15 2007
* \endvar
*/
- { LFUN_WORD_FINDADV, "word-findadv", ReadOnly, Edit },
+ { LFUN_WORD_FINDADV, "word-findadv", ReadOnly | NoBuffer, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_WORD_FORWARD
* \li Action: Moves the cursor to the logically next beginning of a word.
* \endvar
*/
{ LFUN_WORD_LOWCASE, "word-lowcase", Noop, Edit },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_SPELLING_ADD
+ * \li Action: Add the word under the cursor to the respective
+ * spell checker dictionary.
+ * \li Syntax: spelling-add [<STRING>] [<LANG>]
+ * \li Params: <WORD>: word to add
+ <LANG>: language name (see file languages)
+ * \li Origin: JSpitzm, 18 Jan 2010
+ * \endvar
+ */
+ { LFUN_SPELLING_ADD, "spelling-add", ReadOnly, Edit },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_SPELLING_IGNORE
+ * \li Action: Let the spell checker ignore the word under the cursor
+ * in the current session for the given language.
+ * \li Syntax: spelling-ignore [<WORD>] [<LANG>]
+ * \li Params: <WORD>: word to ignore
+ <LANG>: language name (see file languages)
+ * \li Origin: JSpitzm, 18 Jan 2010
+ * \endvar
+ */
+ { LFUN_SPELLING_IGNORE, "spelling-ignore", ReadOnly, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_THESAURUS_ENTRY
* \li Action: Look up thesaurus entries with respect to the word under the cursor.
*/
{ LFUN_INSET_SELECT_ALL, "inset-select-all", ReadOnly, Edit },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_SECTION_SELECT
+ * \li Action: Selects the whole section.
+ * \li Notion: The cursor should be in a section heading
+ before calling this lfun.
+ * \li Syntax: section-select
+ * \li Origin: vfr, 05 May 2009
+ * \endvar
+ */
+ { LFUN_SECTION_SELECT, "section-select", ReadOnly, Edit },
+
/*!
* \var lyx::FuncCode lyx::LFUN_LINE_BEGIN
* \li Action: Move the cursor to the begining of the (screen) line.
* \li Origin: rgh, 25 August 2007
* \endvar
*/
- { LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", Noop, Layout },
+ { LFUN_LAYOUT_MODULES_CLEAR, "layout-modules-clear", NoInternal, Layout },
/*!
* \var lyx::FuncCode lyx::LFUN_LAYOUT_MODULE_ADD
* \li Action: Adds a module.
* \li Origin: rgh, 25 August 2007
* \endvar
*/
- { LFUN_LAYOUT_MODULE_ADD, "layout-module-add", Noop, Layout },
+ { LFUN_LAYOUT_MODULE_ADD, "layout-module-add", NoInternal, Layout },
/*!
* \var lyx::FuncCode lyx::LFUN_LAYOUT_RELOAD
* \li Action: Reloads layout information.
* \li Origin: rgh, 3 September 2007
* \endvar
*/
- { LFUN_LAYOUT_RELOAD, "layout-reload", Noop, Layout },
+ { LFUN_LAYOUT_RELOAD, "layout-reload", NoInternal, Layout },
/*!
* \var lyx::FuncCode lyx::LFUN_TEXTCLASS_APPLY
* \li Action: Sets the text class for the current buffer.
the filename, minus the ".layout" extension.
* \endvar
*/
- { LFUN_TEXTCLASS_APPLY, "textclass-apply", Noop, Layout },
+ { LFUN_TEXTCLASS_APPLY, "textclass-apply", NoInternal, Layout },
/*!
* \var lyx::FuncCode lyx::LFUN_TEXTCLASS_LOAD
* \li Action: Loads information for a textclass from disk.
the filename, minus the ".layout" extension.
* \endvar
*/
- { LFUN_TEXTCLASS_LOAD, "textclass-load", Noop, Layout },
+ { LFUN_TEXTCLASS_LOAD, "textclass-load", NoInternal, Layout },
/*!
* \var lyx::FuncCode lyx::LFUN_MARK_OFF
* \li Origin: Dekel, 26 Aug 2000
* \endvar
*/
- { LFUN_PARAGRAPH_GOTO, "paragraph-goto", ReadOnly, Edit },
+ { LFUN_PARAGRAPH_GOTO, "paragraph-goto", ReadOnly | NoInternal, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_BREAK_PARAGRAPH
* \li Action: Breaks the current paragraph at the current location.
* \endvar
*/
{ LFUN_OUTLINE_OUT, "outline-out", Noop, Edit },
-
-/*!
- * \var lyx::FuncCode lyx::LFUN_OUTLINE_DRAGMOVE
- * \li Action: Moves the document section associated with the specified
- heading to a specified location. Both the heading and the
- target paragraph are specified by the paragraph ID numbers.
- * \li Notion: The heading is a paragraph with style Part/Chapter/Section/
- etc. Id number of the paragraph is not the sequential number
- seen on the screen, but an internal number that is unique
- for all opened buffers (documents).
- * \li Syntax: outline-dragmove <PAR_ID_SECTION> <PAR_ID_DROP_POSITION>
- * \li Params: <PAR_ID_SECTION>: paragraph id of the section heading which
- is to be moved. \n
- <PAR_ID_DROP_POSITION>: the paragraph id where the section
- will be moved to.
- * \li Origin: Rob Oakes, 22 June 2009
- * \endvar
- */
- { LFUN_OUTLINE_DRAGMOVE, "outline-dragmove", Noop, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_INSET_EDIT
* \li Origin: JSpitzm, 27 Apr 2006
* \endvar
*/
-
{ LFUN_INSET_EDIT, "inset-edit", ReadOnly, Edit },
/*!
set-rotate-cell|unset-rotate-cell|toggle-rotate-cell|set-usebox|set-lthead|
unset-lthead|set-ltfirsthead|unset-ltfirsthead|set-ltfoot|unset-ltfoot|
set-ltlastfoot|unset-ltlastfoot|set-ltnewpage|toggle-ltcaption|
- set-special-column|set-special-multi|set-booktabs|unset-booktabs|
- set-top-space|set-bottom-space|set-interline-space|set-border-lines|
- tabular-valign-top|tabular-valign-middle|tabular-valign-bottom \n
+ set-special-column|set-special-multicolumn|set-special-multirow|
+ set-booktabs|unset-booktabs|set-top-space|set-bottom-space|
+ set-interline-space|set-border-lines|tabular-valign-top|
+ tabular-valign-middle|tabular-valign-bottom \n
<ARG>: additional argument for some commands, use debug mode to explore its values.
* \li Origin: Jug, 28 Jul 2000
* \endvar
R - Reload - ensure that the document is saved and reload it after command execution \n
M - Message - ask for input string (commit message)\n
<PATH>: path where to start. $$p will be replaced by the current document path.\n
- <COMMAND>: command to execute. $$i/$$p/$$m will be replaced by the current document/path/message.
+ <COMMAND>: command to execute. $$i/$$p/$$m will be replaced by the current
+ document(with absolute path)/path/message.
* \li Sample: vc-command DR $$p "svn up"
* \li Origin: sanda, 13 Jan 2009
* \endvar
* \endvar
*/
{ LFUN_VC_LOCKING_TOGGLE, "vc-locking-toggle", ReadOnly, System },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_VC_REPO_UPDATE
+ * \li Action: Update the local archive directory in which resides
+ the current document with the remote repository.
+ * \li Notion: This is currently implemented only for SVN.
+ * \li Syntax: vc-repo-update
+ * \li Origin: sanda, 16 Oct 2009
+ * \endvar
+ */
+ { LFUN_VC_REPO_UPDATE, "vc-repo-update", ReadOnly, System },
/*!
* \var lyx::FuncCode lyx::LFUN_CHANGES_TRACK
* \li Origin: JSpitz, 7 Aug 2006
* \endvar
*/
- { LFUN_INSET_DISSOLVE, "inset-dissolve", Noop, Edit },
+ { LFUN_INSET_DISSOLVE, "inset-dissolve", AtPoint, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_INSET_INSERT
* \li Action: Insert new inset (type given by the parameters).
{ LFUN_INSET_INSERT, "inset-insert", Noop, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_INSET_MODIFY
- * \li Action: Modify existing inset.
+ * \li Action: Modify some properties of an inset.
* \li Notion: Used for bibitem, bibtex, box, branch, command, ert, external,
- floats, graphics, include, label, listings, note,
- phantom, ref, space, tabular, vspace, wrap insets.
+ floats, graphics, include, index, info, label,
+ listings, newline, newpage, nomencl, note, phantom,
+ ref, space, tabular, vspace, wrap insets.
* \li Syntax: inset-modify <INSET> <ARGS>
+ * \li Syntax: inset-modify changetype <TYPE>
+ * \li Sample: inset-modify note Note Comment
+ * \li Sample: inset-modify changetype Ovalbox
* \li Params: See #LFUN_INSET_INSERT for further details.
* \endvar
*/
- { LFUN_INSET_MODIFY, "", Noop, Hidden },
-/*!
- * \var lyx::FuncCode lyx::LFUN_NEXT_INSET_MODIFY
- * \li Action: Modify the inset at cursor position, if there is one.
- * \li Notion: Used for bibitem, bibtex, box, branch, command, ert, external,
- floats, graphics, include, label, listings, note,
- phantom, ref, space, tabular, vspace, wrap insets.
- * \li Syntax: next-inset-modify <INSET> <ARGS>
- * \li Syntax: next-inset-modify changetype <TYPE>
- * \li Params: See #LFUN_INSET_INSERT for further details.
- * \li Origin: JSpitzm, 23 Mar 2008
- * \endvar
- */
- { LFUN_NEXT_INSET_MODIFY, "next-inset-modify", Noop, Edit },
+ { LFUN_INSET_MODIFY, "inset-modify", AtPoint, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_INSET_DIALOG_UPDATE
* \li Action: Updates the values inside the dialog from the inset.
* \endvar
*/
{ LFUN_ALL_INSETS_TOGGLE, "all-insets-toggle", ReadOnly, Edit },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_INSET_FORALL
+ * \li Action: Apply the given commands on insets of a given name.
+ * \li Notion: WARNING: use at your own risks; this function gives
+ you too many ways of shooting yourself in the foot.
+ A typical example is
+ inset-forall Note note-insert
+ which starts an infinite loop. This is mitigated by the fact
+ that the number of actions is arbitrarily limited to 10000.
+ * \li Syntax: inset-forall <NAME> <LFUN-COMMAND> \n
+ <NAME>: Type of Inset. If <NAME> is *, all insets are matched.
+ The name is used like for InsetLayout in layout files: "Note"
+ matches all note insets, while "Note:Note" only matches LyX
+ yellow note insets.
+ * \li Sample: Remove all index insets: \n
+ inset-forall Index delete-char-forward \n
+ Close all Notes (also works for a particular branch, for example): \n
+ inset-forall Note inset-toggle close \n
+ Transform all yellow notes to comments \n
+ inset-forall Note:Note inset-modify note Note Comment \n
+ Try to put LyX in an infinite loop if there is at least a Note: \n
+ inset-forall Note char-backward
+ * \li Origin: lasgouttes, 27 Nov 2009
+ * \endvar
+ */
+ { LFUN_INSET_FORALL, "inset-forall", ReadOnly, Edit },
+
+/*!
+ * \var lyx::FuncCode lyx::LFUN_GRAPHICS_RELOAD
+ * \li Action: Reloads the image if necessary.
+ * \li Syntax: graphics-reload
+ * \li Origin: vfr, 10 Aug 2009
+ * \endvar
+ */
+ { LFUN_GRAPHICS_RELOAD, "graphics-reload", ReadOnly | AtPoint, Edit },
/*!
* \var lyx::FuncCode lyx::LFUN_SET_GRAPHICS_GROUP
* \li Action: Set the group for the graphics inset on the cursor position.
/*!
* \var lyx::FuncCode lyx::LFUN_TOOLBAR_TOGGLE
* \li Action: Toggles visibility of a given toolbar between on/off/auto.
- * \li Notion: Skiping "auto" when allowauto is false.
+ * \li Notion: Skipping "auto" when allowauto is false.
* \li Syntax: toolbar-toggle <NAME> [allowauto]
* \li Params: <NAME>: standard|extra|table|math|mathmacrotemplate|
minibuffer|review|view/update|math_panels|vcs
* \li Action: Shows hidden dialog or create new one for a given function/inset settings etc.
* \li Syntax: dialog-show <NAME> [<DATA>]
* \li Params: <NAME>: aboutlyx|bibitem|bibtex|box|branch|changes|character|citation|\n
- document|errorlist|ert|external|file|findreplace|findreplaceadv|float|graphics|\n
- href|include|index|index_print|info|label|listings|log|mathdelimiter|\n
+ compare|document|errorlist|ert|external|file|findreplace|findreplaceadv|float|\n
+ graphics|href|include|index|index_print|info|label|listings|log|mathdelimiter|\n
mathmatrix|mathspace|nomenclature|nomencl_print|note|paragraph|phantom|prefs|\n
print|ref|sendto|space|spellchecker|symbols|tabular|tabularcreate|\n
thesaurus|texinfo|toc|view-source|vspace|wrap|<SPECIAL> \n
* \li Origin: Edmar, 23 Dec 1998
* \endvar
*/
- { LFUN_SERVER_GOTO_FILE_ROW, "server-goto-file-row", ReadOnly, System },
+ { LFUN_SERVER_GOTO_FILE_ROW, "server-goto-file-row", ReadOnly | NoBuffer, System },
/*!
* \var lyx::FuncCode lyx::LFUN_SERVER_NOTIFY
* \li Action: Sends notify message about the last key-sequence to client.
{ LFUN_BUFFER_RELOAD, "buffer-reload", ReadOnly, Buffer },
/*!
* \var lyx::FuncCode lyx::LFUN_BUFFER_SWITCH
- * \li Action: Switch to the given buffer.
- * \li Notion: This is useful also in case you need simultaneously more views of the edited
- document in different LyX windows.
- * \li Syntax: buffer-new-template <BUFFER>
- * \li Params: <BUFFER>: already opened document which is to be shown.
+ * \li Action: Display/switch to the given buffer.
+ * \li Syntax: buffer-switch <BUFFER>
+ * \li Params: <BUFFER>: path and filename of already opened (but possibly hidden)
+ document which is to be shown.
* \endvar
*/
{ LFUN_BUFFER_SWITCH, "buffer-switch", NoBuffer | ReadOnly, Buffer },
/*!
* \var lyx::FuncCode lyx::LFUN_BUFFER_TOGGLE_READ_ONLY
* \li Action: Toggle editing mode of the current document between read/write and read-only.
- * \li Notion: In the ->Readonly mode checks-in/commits the data if the file is under version control.
- In the Readonly-> mode checkouts the data from repository. \n
- If these operations fail, buffer won't be toggled.
+ * \li Notion: This function is not allowed if the file is under version control, since
+ read-only flag is often used in version control file locking.
* \li Syntax: buffer-toggle-read-only
* \li Origin: Lgb, 27 May 1997
* \endvar
* \li Origin: leeming, 30 Mar 2004
* \endvar
*/
- { LFUN_BUFFER_PARAMS_APPLY, "buffer-params-apply", Noop, Buffer },
+ { LFUN_BUFFER_PARAMS_APPLY, "buffer-params-apply", NoInternal, Buffer },
/*!
* \var lyx::FuncCode lyx::LFUN_FILE_INSERT
/*!
* \var lyx::FuncCode lyx::LFUN_COMMAND_EXECUTE
- * \li Action: Opens the minibuffer toolbar so that the user can type in there.
+ * \li Action: Switches the focus to the minibuffer so that the user can type
+ in there. If necessary, it opens the minibuffer toolbar.
* \li Notion: Usually bound to M-x shortcut.
* \li Syntax: command-execute
* \endvar
*/
{ LFUN_COMMAND_EXECUTE, "command-execute", NoBuffer, Edit },
+
/*!
* \var lyx::FuncCode lyx::LFUN_COMMAND_PREFIX
* \li Action: Return the current key sequence and available options as a string.
* \endvar
*/
{ LFUN_MESSAGE, "message", NoBuffer, System },
+/*!
+ * \var lyx::FuncCode lyx::LFUN_DEBUG_LEVEL_SET
+ * \li Action: Set debug output level.
+ * \li Syntax: debug-level-set <LEVEL>
+ * \li Params: <LEVEL>: comma separated list of levels or the correspondent number
+ of their combination. 0 is equivalent to disabling all debug
+ events. See lyx -dbg for the current list of debug levels
+ and their numbers.
+ * \li Origin: sanda, 28 Dec 2009
+ * \endvar
+ */
+ { LFUN_DEBUG_LEVEL_SET, "debug-level-set", NoBuffer, System },
+
/*!
* \var lyx::FuncCode lyx::LFUN_PREFERENCES_SAVE
* \li Action: Save user preferences.
*/
{ LFUN_BUFFER_ZOOM_OUT, "buffer-zoom-out", ReadOnly, Buffer },
-/*!
- * \var lyx::FuncCode lyx::LFUN_SECTION_SELECT
- * \li Action: Selects the whole section.
- * \li Notion: The cursor should be in a section heading
- before calling this lfun.
- * \li Syntax: section-select
- * \li Origin: vfr, 05 May 2009
- * \endvar
- */
- { LFUN_SECTION_SELECT, "section-select", ReadOnly, Edit },
-
-/*!
- * \var lyx::FuncCode lyx::LFUN_GRAPHICS_RELOAD
- * \li Action: Reloads the image if necessary.
- * \li Syntax: graphics-reload
- * \li Origin: vfr, 10 Aug 2009
- * \endvar
- */
- { LFUN_GRAPHICS_RELOAD, "graphics-reload", ReadOnly | AtPoint, Edit },
{ LFUN_NOACTION, "", Noop, Hidden }
#ifndef DOXYGEN_SHOULD_SKIP_THIS
};
- for (int i = 0; items[i].action != LFUN_NOACTION; ++i) {
+ for (int i = 0; items[i].action != LFUN_NOACTION; ++i)
newFunc(items[i].action, items[i].name, items[i].attrib, items[i].type);
- }
init = true;
}
}
-// Returns an action tag from a string.
FuncRequest LyXAction::lookupFunc(string const & func) const
{
string const func2 = trim(func);
- if (func2.empty()) {
+ if (func2.empty())
return FuncRequest(LFUN_NOACTION);
- }
string cmd;
string const arg = split(func2, cmd, ' ');
- func_map::const_iterator fit = lyx_func_map.find(cmd);
+ FuncMap::const_iterator const fit = lyx_func_map.find(cmd);
- return fit != lyx_func_map.end() ? FuncRequest(fit->second, arg) : FuncRequest(LFUN_UNKNOWN_ACTION);
+ return fit != lyx_func_map.end()
+ ? FuncRequest(fit->second, arg)
+ : FuncRequest(LFUN_UNKNOWN_ACTION);
}
string const LyXAction::getActionName(FuncCode action) const
{
- info_map::const_iterator const it = lyx_info_map.find(action);
+ InfoMap::const_iterator const it = lyx_info_map.find(action);
return it != lyx_info_map.end() ? it->second.name : string();
}
-LyXAction::func_type LyXAction::getActionType(FuncCode action) const
+LyXAction::FuncType LyXAction::getActionType(FuncCode action) const
{
- info_map::const_iterator const it = lyx_info_map.find(action);
+ InfoMap::const_iterator const it = lyx_info_map.find(action);
return it != lyx_info_map.end() ? it->second.type : Hidden;
}
bool LyXAction::funcHasFlag(FuncCode action,
- LyXAction::func_attrib flag) const
+ LyXAction::FuncAttribs flag) const
{
- info_map::const_iterator ici = lyx_info_map.find(action);
+ InfoMap::const_iterator ici = lyx_info_map.find(action);
if (ici == lyx_info_map.end()) {
LYXERR0("action: " << action << " is not known.");
}
-LyXAction::const_func_iterator LyXAction::func_begin() const
+LyXAction::const_iterator LyXAction::func_begin() const
{
return lyx_func_map.begin();
}
-LyXAction::const_func_iterator LyXAction::func_end() const
+LyXAction::const_iterator LyXAction::func_end() const
{
return lyx_func_map.end();
}