diff options
author | Stephen Leake <stephen_leake@stephe-leake.org> | 2019-07-30 11:03:15 -0700 |
---|---|---|
committer | Stephen Leake <stephen_leake@stephe-leake.org> | 2019-07-30 11:03:15 -0700 |
commit | 01739625704aaaea6831cef459a4a53171689513 (patch) | |
tree | ef9f324b3fa6696647c6e637e436ee6160155b92 /lisp/emacs-lisp/derived.el | |
parent | 056cbcb7a959463290bc91c19b909cbf3eb47d0a (diff) | |
parent | 9b480db6732c6d2e886838f112d9bd46fc8989bf (diff) | |
download | emacs-01739625704aaaea6831cef459a4a53171689513.tar.gz emacs-01739625704aaaea6831cef459a4a53171689513.tar.bz2 emacs-01739625704aaaea6831cef459a4a53171689513.zip |
Merge commit '9b480db6732c6d2e886838f112d9bd46fc8989bf'
Diffstat (limited to 'lisp/emacs-lisp/derived.el')
-rw-r--r-- | lisp/emacs-lisp/derived.el | 44 |
1 files changed, 25 insertions, 19 deletions
diff --git a/lisp/emacs-lisp/derived.el b/lisp/emacs-lisp/derived.el index 6db0584b987..a6578e33086 100644 --- a/lisp/emacs-lisp/derived.el +++ b/lisp/emacs-lisp/derived.el @@ -113,9 +113,9 @@ ;;;###autoload (defmacro define-derived-mode (child parent name &optional docstring &rest body) - "Create a new mode as a variant of an existing mode. + "Create a new mode CHILD which is a variant of an existing mode PARENT. -The arguments to this command are as follow: +The arguments are as follows: CHILD: the name of the command for the derived mode. PARENT: the name of the command for the parent mode (e.g. `text-mode') @@ -123,24 +123,28 @@ PARENT: the name of the command for the parent mode (e.g. `text-mode') NAME: a string which will appear in the status line (e.g. \"Hypertext\") DOCSTRING: an optional documentation string--if you do not supply one, the function will attempt to invent something useful. +KEYWORD-ARGS: + optional arguments in the form of pairs of keyword and value. + The following keyword arguments are currently supported: + + :group GROUP + Declare the customization group that corresponds + to this mode. The command `customize-mode' uses this. + :syntax-table TABLE + Use TABLE instead of the default (CHILD-syntax-table). + A nil value means to simply use the same syntax-table + as the parent. + :abbrev-table TABLE + Use TABLE instead of the default (CHILD-abbrev-table). + A nil value means to simply use the same abbrev-table + as the parent. + :after-hook FORM + A single lisp form which is evaluated after the mode + hooks have been run. It should not be quoted. + BODY: forms to execute just before running the hooks for the new mode. Do not use `interactive' here. -BODY can start with a bunch of keyword arguments. The following keyword - arguments are currently understood: -:group GROUP - Declare the customization group that corresponds to this mode. - The command `customize-mode' uses this. -:syntax-table TABLE - Use TABLE instead of the default (CHILD-syntax-table). - A nil value means to simply use the same syntax-table as the parent. -:abbrev-table TABLE - Use TABLE instead of the default (CHILD-abbrev-table). - A nil value means to simply use the same abbrev-table as the parent. -:after-hook FORM - A single lisp form which is evaluated after the mode hooks have been - run. It should not be quoted. - Here is how you could define LaTeX-Thesis mode as a variant of LaTeX mode: (define-derived-mode LaTeX-thesis-mode LaTeX-mode \"LaTeX-Thesis\") @@ -149,7 +153,7 @@ You could then make new key bindings for `LaTeX-thesis-mode-map' without changing regular LaTeX mode. In this example, BODY is empty, and DOCSTRING is generated by default. -On a more complicated level, the following command uses `sgml-mode' as +As a more complex example, the following command uses `sgml-mode' as the parent, and then sets the variable `case-fold-search' to nil: (define-derived-mode article-mode sgml-mode \"Article\" @@ -162,7 +166,9 @@ been generated automatically, with a reference to the keymap. The new mode runs the hook constructed by the function `derived-mode-hook-name'. -See Info node `(elisp)Derived Modes' for more details." +See Info node `(elisp)Derived Modes' for more details. + +\(fn CHILD PARENT NAME [DOCSTRING] [KEYWORD-ARGS...] &rest BODY)" (declare (debug (&define name symbolp sexp [&optional stringp] [&rest keywordp sexp] def-body)) (doc-string 4) |