/*! * \file LyXAction.cpp * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * * \author Lars Gullik Bjønnes * \author Jean-Marc Lasgouttes * \author John Levon * \author André Pönitz * \author Pavel Sanda * * Full author contact details are available in file CREDITS. */ #include #include "LyXAction.h" #include "FuncRequest.h" #include "support/debug.h" #include "support/lstrings.h" #include "support/lassert.h" #include using namespace std; using namespace lyx::support; namespace lyx { /* NAMING RULES FOR USER-COMMANDS Here's the set of rules to apply when a new command name is introduced: 1) Use the object.event order. That is, use `word-forward' instead of `forward-word'. 2) Don't introduce an alias for an already named object. Same for events. 3) Forward movement or focus is called `forward' (not `right'). 4) Backward movement or focus is called `backward' (not `left'). 5) Upward movement of focus is called `up'. 6) Downward movement is called `down'. 7) The begin of an object is called `begin' (not `start'). 8) The end of an object is called `end'. (May 19 1996, 12:04, RvdK) */ /* LFUN documentation * * The documentation below primarily describes the purpose and syntax * of the various LFUNs. * * The list is alphabetized. Try to keep it that way, and don't forget to add * doxygen commentary. This allows the file LFUNs.lyx to be auto-generated. * (If you should want to do that, see the gen_lfuns.py script, which is in * the development/tools/ directory.) * * Doxygen template below. Some notes: Parameters should be set in uppercase * and put in , [] means optional one. * * Use spaces for indentation (doxy -> .lyx generator is tab-sensitive). */ /*! * \var lyx::FuncCode lyx::LFUN_ * \li Action: * \li Notion: * \li Syntax: * \li Params: * \li Sample: * \li Origin: * \endvar */ LyXAction lyxaction; void LyXAction::newFunc(FuncCode action, string const & name, unsigned int attrib, LyXAction::FuncType type) { lyx_func_map[name] = action; FuncInfo tmpinfo; tmpinfo.name = name; tmpinfo.attrib = attrib; tmpinfo.type = type; lyx_info_map[action] = tmpinfo; } // Needed for LFUNs documentation to be accepted, since doxygen won't take // \var inside functions. #ifndef DOXYGEN_SHOULD_SKIP_THIS void LyXAction::init() { // This function was changed to use the array below in initalization // instead of calling newFunc numerous times because of compilation // times. Since the array is not static we get back the memory it // occupies after the init is completed. It compiles several // magnitudes faster. static bool init; if (init) return; struct ev_item { FuncCode action; char const * name; unsigned int attrib; FuncType type; }; ev_item const items[] = { #endif /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_ACUTE * \li Action: Adds an acute accent \htmlonly (á)\endhtmlonly to the next character typed. * \li Syntax: accent-acute * \endvar */ { LFUN_ACCENT_ACUTE, "accent-acute", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_BREVE * \li Action: Adds a breve accent \htmlonly (ă)\endhtmlonly to the next character typed. * \li Syntax: accent-breve * \endvar */ { LFUN_ACCENT_BREVE, "accent-breve", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_CARON * \li Action: Adds a caron \htmlonly (ǎ)\endhtmlonly to the next character typed. * \li Syntax: accent-caron * \endvar */ { LFUN_ACCENT_CARON, "accent-caron", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_CEDILLA * \li Action: Adds a cedilla \htmlonly (ç)\endhtmlonly to the next character typed. * \li Syntax: accent-cedilla * \endvar */ { LFUN_ACCENT_CEDILLA, "accent-cedilla", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_CIRCLE * \li Action: Adds a circle accent \htmlonly (å)\endhtmlonly to the next character typed. * \li Syntax: accent-circle * \endvar */ { LFUN_ACCENT_CIRCLE, "accent-circle", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_CIRCUMFLEX * \li Action: Adds a circumflex \htmlonly (ê)\endhtmlonly to the next character typed. * \li Syntax: accent-circumflex * \endvar */ { LFUN_ACCENT_CIRCUMFLEX, "accent-circumflex", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_DOT * \li Action: Adds a dot accent \htmlonly (ż)\endhtmlonly to the next character typed. * \li Syntax: accent-dot * \endvar */ { LFUN_ACCENT_DOT, "accent-dot", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_GRAVE * \li Action: Adds a grave accent \htmlonly (è)\endhtmlonly to the next character typed. * \li Syntax: accent-grave * \endvar */ { LFUN_ACCENT_GRAVE, "accent-grave", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_HUNGARIAN_UMLAUT * \li Action: Adds a Hungarian umlaut \htmlonly (ő)\endhtmlonly to the next character typed. * \li Syntax: accent-grave * \endvar */ { LFUN_ACCENT_HUNGARIAN_UMLAUT, "accent-hungarian-umlaut", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_MACRON * \li Action: Adds a macron \htmlonly (ā)\endhtmlonly to the next character typed. * \li Syntax: accent-macron * \endvar */ { LFUN_ACCENT_MACRON, "accent-macron", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_OGONEK * \li Action: Adds an ogonek accent \htmlonly (ą)\endhtmlonly to the next character typed. * \li Syntax: accent-ogonek * \endvar */ { LFUN_ACCENT_OGONEK, "accent-ogonek", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_PERISPOMENI * \li Action: Adds a perispomeni (Greek circumflex) over the next character typed. * \li Syntax: accent-perispomeni * \endvar */ { LFUN_ACCENT_PERISPOMENI, "accent-perispomeni", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_TIE * \li Action: Adds a tie \htmlonly (a͡)\endhtmlonly over the next two character typed. * \li Notion: The following char will finish the tie. * \li Syntax: accent-tie * \endvar */ { LFUN_ACCENT_TIE, "accent-tie", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_TILDE * \li Action: Adds a tilde \htmlonly (ã)\endhtmlonly over the next character typed. * \li Syntax: accent-tilde * \endvar */ { LFUN_ACCENT_TILDE, "accent-tilde", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_UMLAUT * \li Action: Adds an umlaut \htmlonly (ä)\endhtmlonly over the next character typed. * \li Syntax: accent-umlaut * \endvar */ { LFUN_ACCENT_UMLAUT, "accent-umlaut", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_UNDERBAR * \li Action: Adds a bar \htmlonly (a̠)\endhtmlonly under the next character typed. * \li Syntax: accent-underbar * \endvar */ { LFUN_ACCENT_UNDERBAR, "accent-underbar", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ACCENT_UNDERDOT * \li Action: Adds a dot \htmlonly (ạ)\endhtmlonly under the next character typed. * \li Syntax: accent-underdot * \endvar */ { LFUN_ACCENT_UNDERDOT, "accent-underdot", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ALL_CHANGES_ACCEPT * \li Action: Accepts all tracked changes in the document. * \li Syntax: all-changes-accept * \li Origin: Levon, 16 Oct 2002 * \endvar */ { LFUN_ALL_CHANGES_ACCEPT, "all-changes-accept", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ALL_CHANGES_REJECT * \li Action: Rejects all tracked changes in the document. * \li Notion: Reject does not work recursively; the user may have to repeat the operation. * \li Syntax: all-changes-reject * \li Origin: Levon, 16 Oct 2002 * \endvar */ { LFUN_ALL_CHANGES_REJECT, "all-changes-reject", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_APPENDIX * \li Action: Start (or remove) Appendix on the given cursor position. * \li Syntax: appendix * \li Origin: ettrich, 5 May 1998 * \endvar */ { LFUN_APPENDIX, "appendix", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_ARGUMENT_INSERT * \li Action: Inserts an argument (short title) inset. * \li Syntax: argument-insert * \li Params: : see layout declarations * \li Origin: vermeer, 12 Aug 2002 * \endvar */ { LFUN_ARGUMENT_INSERT, "argument-insert", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BIBTEX_DATABASE_ADD * \li Action: Adds database, which will be used for bibtex citations. * \li Notion: Databases are added to the first BibTeX inset (Inset->List/TOC->BibTeX bibliography) found from the cursor position. * \li Syntax: bibtex-database-add * \li Origin: Ale, 30 May 1997 * \endvar */ { LFUN_BIBTEX_DATABASE_ADD, "bibtex-database-add", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BIBTEX_DATABASE_DEL * \li Action: Adds database, which will be used for bibtex citations. * \li Notion: Databases are deleted from the first BibTeX inset (Inset->List/TOC->BibTeX bibliography) found from the cursor position. * \li Syntax: bibtex-database-del * \li Origin: Ale, 30 May 1997 * \endvar */ { LFUN_BIBTEX_DATABASE_DEL, "bibtex-database-del", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BOOKMARK_CLEAR * \li Action: Clears the list of saved bookmarks. * \li Syntax: bookmark-clear * \li Origin: bpeng, 31 October 2006 * \endvar */ { LFUN_BOOKMARK_CLEAR, "bookmark-clear", NoBuffer, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BOOKMARK_GOTO * \li Action: Moves the cursor to the numbered bookmark, opening the file if necessary. Note that bookmarks are saved per-session, not per file. * \li Notion: Bookmark 0 has a special purpose. It is automatically set \n 1. to the paragraph you are currently editing \n 2. to the paragraph from where you are jumping to the last-edited position (jump-back feature) \n 3. when jumping from crossreference to the requested label by #LFUN_LABEL_GOTO. * \li Syntax: bookmark-goto * \li Params: : the number of the bookmark to restore. * \li Origin: Dekel, 27 January 2001 * \endvar */ { LFUN_BOOKMARK_GOTO, "bookmark-goto", NoBuffer, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BOOKMARK_SAVE * \li Action: Save a bookmark. * \li Notion: Saves a numbered bookmark to the sessions file. The number must be between 1 and 9, inclusive. Note that bookmarks are saved per-session, not per file. * \li Syntax: bookmark-save * \li Params: : the number of the bookmark to save. * \li Origin: Dekel, 27 January 2001 * \endvar */ { LFUN_BOOKMARK_SAVE, "bookmark-save", ReadOnly, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BOX_INSERT * \li Action: Inserts Box inset. * \li Syntax: box-insert [] * \li Params: : Boxed|Frameless|Framed|ovalbox|Ovalbox|Shadowbox|Shaded|Doublebox \n Framed is the default one. * \li Origin: vermeer, 7 Oct 2003 * \endvar */ { LFUN_BOX_INSERT, "box-insert", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCHES_RENAME * \li Action: Rename all branches of a given name in a document. * \li Syntax: branches-rename * \li Params: : Current name of the branch to be renamed * : New name of the branch * \li Origin: spitz, 9 Jul 2009 * \endvar */ { LFUN_BRANCHES_RENAME, "branches-rename", Noop, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_ACTIVATE * \li Action: Activate the branch. * \li Syntax: branch-activate * \li Params: : The branch to activate * \li Sample: lyx -x "branch-activate answers" -e pdf2 finalexam.lyx \n could be used to export a pdf with the answers branch included without one's having to open LyX and activate the branch manually. * \li Origin: rgh, 27 May 2008 * \endvar */ { LFUN_BRANCH_ACTIVATE, "branch-activate", AtPoint, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_ADD * \li Action: Add a branch to the buffer's BranchList. * \li Syntax: branch-add * \li Params: : Name of the branch to add * \li Origin: spitz, 7 Jul 2009 * \endvar */ { LFUN_BRANCH_ADD, "branch-add", AtPoint, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_ADD_INSERT * \li Action: Create new branch and directly put the branch inset into the document. * \li Syntax: branch-add-insert [] * \li Params: : Branch name. If it is not specified, you will be asked. * \li Origin: sanda, 10 Jul 2009 * \endvar */ { LFUN_BRANCH_ADD_INSERT, "branch-add-insert", Noop, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_DEACTIVATE * \li Action: De-activate the branch. * \li Syntax: branch-deactivate * \li Params: : The branch to deactivate * \li Origin: rgh, 27 May 2008 * \endvar */ { LFUN_BRANCH_DEACTIVATE, "branch-deactivate", AtPoint, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_INSERT * \li Action: Inserts branch inset. * \li Syntax: branch-insert * \li Origin: vermeer, 17 Aug 2003 * \endvar */ { LFUN_BRANCH_INSERT, "branch-insert", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_INVERT * \li Action: Toggles inversion status of branch inset. * \li Syntax: branch-invert * \li Origin: rgheck, 12 July 2016 * \endvar */ { LFUN_BRANCH_INVERT, "branch-invert", AtPoint, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_MASTER_ACTIVATE * \li Action: Activate the branch in the master buffer. * \li Syntax: branch-master-activate * \li Params: : The branch to activate * \li Sample: lyx -x "branch-activate answers" -e pdf2 finalexam.lyx \n could be used to export a pdf with the answers branch included without one's having to open LyX and activate the branch manually. * \li Origin: spitz, 30 Sep 2012 * \endvar */ { LFUN_BRANCH_MASTER_ACTIVATE, "branch-master-activate", AtPoint, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BRANCH_MASTER_DEACTIVATE * \li Action: De-activate the branch in the master buffer. * \li Syntax: branch-master-deactivate * \li Params: : The branch to deactivate * \li Origin: spitz, 30 Sep 2012 * \endvar */ { LFUN_BRANCH_MASTER_DEACTIVATE, "branch-master-deactivate", AtPoint, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_ANONYMIZE * \li Action: For debug purposes only. Convert all [a-zA-Z0-1] characters to single character. Useful when submitting docs to list or bugzilla. * \li Syntax: buffer-anonymize * \li Origin: sanda, Feb 1 2018 * \endvar */ { LFUN_BUFFER_ANONYMIZE, "buffer-anonymize", Noop, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_AUTO_SAVE * \li Action: Saves the current buffer to a temporary file. * \li Notion: Saves the current buffer to a file named "#filename#". This LFUN is called automatically by LyX, to "autosave" the current buffer. * \li Syntax: buffer-auto-save * \endvar */ { LFUN_BUFFER_AUTO_SAVE, "buffer-auto-save", Noop, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_BEGIN * \li Action: Move the cursor to the beginning of the document. * \li Syntax: buffer-begin * \endvar */ { LFUN_BUFFER_BEGIN, "buffer-begin", ReadOnly, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_BEGIN_SELECT * \li Action: Move the cursor to the beginning of the document adding the traversed text to the selection. * \li Syntax: buffer-begin-select * \endvar */ { LFUN_BUFFER_BEGIN_SELECT, "buffer-begin-select", ReadOnly, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_CHILD_OPEN * \li Action: Loads the given child document. * \li Notion: The current document is treated as a parent. * \li Syntax: buffer-child-open * \li Params: : Filename of the child. The directory of the parent is assumed by default. * \li Origin: Ale, 28 May 1997 * \endvar */ { LFUN_BUFFER_CHILD_OPEN, "buffer-child-open", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_CHKTEX * \li Action: Runs chktex for the current document. * \li Syntax: buffer-chktex * \li Origin: Asger, 30 Oct 1997 * \endvar */ { LFUN_BUFFER_CHKTEX, "buffer-chktex", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_CLOSE * \li Action: Closes the current buffer. * \li Notion: Closes the current buffer, asking whether to save it, etc, if the buffer has been modified. * \li Syntax: buffer-close * \endvar */ { LFUN_BUFFER_CLOSE, "buffer-close", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_CLOSE_ALL * \li Action: Closes all buffers. * \li Notion: Closes all buffers, asking whether to save it, etc, if a buffer has been modified. * \li Syntax: buffer-close-all * \endvar */ { LFUN_BUFFER_CLOSE_ALL, "buffer-close-all", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_END * \li Action: Move the cursor to the end of the document. * \li Syntax: buffer-end * \endvar */ { LFUN_BUFFER_END, "buffer-end", ReadOnly, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_END_SELECT * \li Action: Move the cursor to the end of the document adding the traversed text to the selection. * \li Syntax: buffer-end-select * \endvar */ { LFUN_BUFFER_END_SELECT, "buffer-end-select", ReadOnly, Edit }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_EXPORT * \li Action: Exports the current buffer (document) to the given format. * \li Syntax: buffer-export [] [] * \li Params: is either "custom" or one of the formats which you can find in Tools->Preferences->File formats->Format. Usual format you will enter is "pdf2" (pdflatex), "pdflatex" (plain tex for pdflatex) or "ps" for postscript.\n In case of "custom" you will be asked for a format you want to start from and for the command that you want to apply to this format. Internally the control is then passed to #LFUN_BUFFER_EXPORT_CUSTOM.\n If absent or "default", then the default output format of the document is used.\n If present, this argument provides the export destination filename. Its containing folder will also be the destination folder, where all the needed external files will be copied. * \li Origin: Lgb, 29 Jul 1997 * \endvar */ { LFUN_BUFFER_EXPORT, "buffer-export", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_EXPORT_AS * \li Action: Opens a dialog for exporting the current buffer. * \li Syntax: buffer-export-as [] * \li Params: is the export format initially selected in the dialog. * You can pass any of the formats which you can find in * Tools->Preferences->File formats->Format, provided it * has the "document" flag set. If no format is specified * the dialog will start with the default output format of * the current document. * \li Sample: buffer-export-as pdf2 * \li Origin: tommaso, 6 Oct 2011 * \endvar */ { LFUN_BUFFER_EXPORT_AS, "buffer-export-as", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_EXPORT_CUSTOM * \li Action: Exports the current buffer (document) from the given format using the given command on it. * \li Syntax: buffer-export-custom * \li Params: format to start from (LyX will care to produce such intermediate file).\n this command will be launched on the file. Note that you can use "$$FName" string to qualify the intermediate file. * \li Sample: buffer-export-custom dvi dvips -f $$FName -o myfile.ps * \li Origin: leeming, 27 Mar 2004 * \endvar */ { LFUN_BUFFER_EXPORT_CUSTOM, "buffer-export-custom", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_FORALL * \li Action: Applies a command to all non-hidden buffers. * \li Notion: a buffer is `hidden' if it is internally open in LyX, but not visible in any window. * \li Syntax: buffer-forall * \li Params: : The command to be applied to the buffers. * \li Sample: Close all Notes in buffers: \n buffer-forall inset-forall Note inset-toggle close \n Toggle change tracking on buffers: \n buffer-forall changes-track \n Toggle read-only for buffers: \n buffer-forall buffer-toggle-read-only \n Show statistics for individual buffers: \n buffer-forall statistics \n Activate the branch named "Solutions" in buffers: \n buffer-forall branch-activate Solutions \n Export buffers to PDF (pdflatex): \n buffer-forall buffer-export pdf2 \n * \li Origin: skostysh, 20 Jul 2012 * \endvar */ { LFUN_BUFFER_FORALL, "buffer-forall", ReadOnly | Argument, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_IMPORT * \li Action: Import a given file as a lyx document. * \li Notion: File can be imported iff lyx file format is (transitively) reachable via defined converters in preferences. Look in the File->Import menu to get an idea of the currently active import formats. * \li Syntax: buffer-import [] * \li Origin: Asger, 24 Jul 1998 * \endvar */ { LFUN_BUFFER_IMPORT, "buffer-import", NoBuffer, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_LANGUAGE * \li Action: Set language of the current document. * \li Syntax: buffer-language * \li Params: : language name. See lib/languages for list. * \li Origin: leeming, 30 Mar 2004 * \endvar */ { LFUN_BUFFER_LANGUAGE, "buffer-language", Noop, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_MOVE_NEXT * \li Action: Moves the current tab one spot to the right. * \li Syntax: buffer-move-next * \li Origin: skostysh, 7 Apr 2015 * \endvar */ { LFUN_BUFFER_MOVE_NEXT, "buffer-move-next", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_MOVE_PREVIOUS * \li Action: Moves the current tab one spot to the left. * \li Syntax: buffer-move-previous * \li Origin: skostysh, 7 Apr 2015 * \endvar */ { LFUN_BUFFER_MOVE_PREVIOUS, "buffer-move-previous", ReadOnly, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_NEW * \li Action: Creates a new buffer (that is, document) and switches to it. * \li Notion: Implicit path can be set in Preferences dialog. * \li Syntax: buffer-new [] * \li Params: : filename of created file with absolute path. * \endvar */ { LFUN_BUFFER_NEW, "buffer-new", NoBuffer, Buffer }, /*! * \var lyx::FuncCode lyx::LFUN_BUFFER_NEW_TEMPLATE * \li Action: Creates a new buffer (that is, document) from a template. * \li Notion: Path for new files and templates can be set in Preferences dialog. Template will be asked for via Open-dialog. * \li Syntax: buffer-new-template [] [