summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/derived.el
diff options
context:
space:
mode:
authorStephen Leake <stephen_leake@stephe-leake.org>2019-07-30 11:03:15 -0700
committerStephen Leake <stephen_leake@stephe-leake.org>2019-07-30 11:03:15 -0700
commit01739625704aaaea6831cef459a4a53171689513 (patch)
treeef9f324b3fa6696647c6e637e436ee6160155b92 /lisp/emacs-lisp/derived.el
parent056cbcb7a959463290bc91c19b909cbf3eb47d0a (diff)
parent9b480db6732c6d2e886838f112d9bd46fc8989bf (diff)
downloademacs-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.el44
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)