| Server IP : 217.160.0.212 / Your IP : 216.73.217.5 Web Server : Apache System : Linux www 6.18.52-i1-ampere #1203 SMP Mon Sep 14 18:29:59 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /usr/share/emacs/28.2/lisp/emacs-lisp/ |
Upload File : |
;ELC
;;; Compiled
;;; in Emacs version 28.2
;;; with all optimizations.
#@65 Construct a mode-hook name based on the symbol MODE.
(fn MODE)
(defalias 'derived-mode-hook-name #[257 "\300\301!\302P!\207" [intern symbol-name "-hook"] 4 (#$ . 84)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put derived-mode-hook-name speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@59 Construct a map name based on the symbol MODE.
(fn MODE)
(defalias 'derived-mode-map-name #[257 "\300\301!\302P!\207" [intern symbol-name "-map"] 4 (#$ . 408)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put derived-mode-map-name speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@68 Construct a syntax-table name based on the symbol MODE.
(fn MODE)
(defalias 'derived-mode-syntax-table-name #[257 "\300\301!\302P!\207" [intern symbol-name "-syntax-table"] 4 (#$ . 724)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put derived-mode-syntax-table-name speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@69 Construct an abbrev-table name based on the symbol MODE.
(fn MODE)
(defalias 'derived-mode-abbrev-table-name #[257 "\300\301!\302P!\207" [intern symbol-name "-abbrev-table"] 4 (#$ . 1076)])
(byte-code "\300\301\302\303#\304\301\305\306#\207" [function-put derived-mode-abbrev-table-name speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@2609 Create a new mode CHILD which is a variant of an existing mode PARENT.
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')
or nil if there is no parent.
NAME: a string that will appear in the mode line (e.g. "HTML")
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.
:interactive BOOLEAN
Whether the derived mode should be `interactive' or not.
The default is t.
BODY: forms to execute just before running the
hooks for the new mode. Do not use `interactive' here.
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")
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.
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"
"Major mode for editing technical articles."
(setq case-fold-search nil))
Note that if the documentation string had been left out, it would have
been generated automatically, with a reference to the keymap.
The new mode runs the hook named MODE-hook. For `foo-mode',
the hook will be named `foo-mode-hook'.
See Info node `(elisp)Derived Modes' for more details.
(fn CHILD PARENT NAME [DOCSTRING] [KEYWORD-ARGS...] &rest BODY)
(defalias 'define-derived-mode '(macro . #[1155 "\203 ;\204 B\262\300\262\301=\203 \300\262\302\303!\304P!\262\302\303!\305P!\262\302\303!\306P!\262\307\211 \302\303!\310P!\262\300\307\300\311\n@!\203\255 \211A\262\242\211\312\267\202\244 \n\211A\262\f\242\262\210\202I \n\211A\262\f\242\262\300\262\210\202I \n\211A\262\f\242\262 \300\262\210\202I \n\211A\262\f\242\266\202\202I \n\211A\262\f\242\262\210\202I \nA\262\210\202I \313
%\262\314\315\316BB\317\320\321D\322BB\323\321 D\324\325\326\"FE\317\327\321DD\323\321D\330\321DFE\331\315\332BBD\317\320\321D\333BB\323\321D\334\335\325\336\"DFE\n\205F\314\315D\317\327\321DD\323\321D\337\321DF\315\340BBF\317\320\321D\341BB\323\321D\342\335\325\343\"DFEF\f\205\214\314\315D\317\327\321DD\323\321D\344\321DF\315\314\345\321D\346BBEEF\317\320\321D\347BB\323\321D\350\335\325\351\"DFEF\323\321D\352\321DF\205\245\323\321D\353F\354\300\205\261\355\356\206\270\357C\360\361\321!DE\360\362E\2052\314\363\320\321#D\364BB\323\321%D\365\320\321'D\366BBFE\317\367D\370 \371BBE\205\372\373\374 DDC\317\375\376\"\377BBEE\2050\317\201@ \201A \201B BB\201C !\201D BBE\201E \201F BBE\257\201G D\205C\201H D\205O\360\201I E BBBBBBBB\201J \205q\201K \201L \300E\201M BBC\201N \321DDC\"BBBBBB\257\207" [nil fundamental-mode intern symbol-name "-map" "-syntax-table" "-abbrev-table" t "-hook" keywordp #s(hash-table size 5 test eq rehash-size 1.5 rehash-threshold 0.8125 purecopy t data (:group 94 :abbrev-table 107 :syntax-table 123 :after-hook 139 :interactive 151)) derived-mode-make-docstring progn defvar (nil) unless get quote ('variable-documentation) put 'variable-documentation format "Hook run after entering %s mode.\nNo problems result if this variable is not bound.\n`add-hook' automatically binds it. (This is true for all hook variables.)" boundp 'definition-name with-no-warnings ((make-sparse-keymap)) ('variable-documentation) 'variable-documentation purecopy "Keymap for `%s'." 'definition-name ((make-syntax-table)) ('variable-documentation) 'variable-documentation "Syntax table for `%s'." 'definition-name define-abbrev-table (nil) ('variable-documentation) 'variable-documentation "Abbrev table for `%s'." 'derived-mode-parent 'custom-mode-group defun (interactive) delay-mode-hooks kill-all-local-variables setq major-mode mode-name if ('mode-class) 'mode-class ('mode-class) keymap-parent set-keymap-parent ((current-local-map)) let parent char-table-parent (and parent (not (eq parent (standard-syntax-table)))) set-char-table-parent ((syntax-table)) or abbrev-table-get (:parents) eq (local-abbrev-table) abbrev-table-put (:parents (list local-abbrev-table)) use-local-map set-syntax-table local-abbrev-table append push lambda (delayed-after-hook-functions) run-mode-hooks] 43 (#$ . 1432)]))
(byte-code "\300\301\302\303#\210\304\301\305\306#\300\207" [put define-derived-mode edebug-form-spec (&define name symbolp sexp [&optional stringp] [&rest keywordp sexp] def-body) function-put doc-string-elt 4] 4)
#@112 Construct a docstring for a new mode if none is provided.
(fn PARENT CHILD &optional DOCSTRING SYNTAX ABBREV)
(defalias 'derived-mode-make-docstring #[1282 "\300\301!\302P!\262\300\301!\303P!\262;\204\305 \204M \304\305\306\2039 \307\310 \2032 \311\2023 \312 #\202: \313\203G \307\314\n\"\202H \313$P\202\303 \307\315\203^ \203^ \316\202p \203f \317\202p \203o \320\202p \313\305\321 \203\210 \n\203\210 \307\322
#\202\240 \204\222 \n\203\237 \307\323\206\233 \f\"\202\240 \313#\204\253 \203\257 \313\202\260 \324\f \204\274 \n\203\300 \324\202\301 \313&\262\325\326\301!!\"\204\327\305\330\n\204\336 \331\202\367 \332\325\307\333\326\301!!\"\"?\205\365 \307\334
\"\335Q\307\336\"\337$Q\262\325\340\"\204\341\301!\342R\262\207" [intern symbol-name "-map" "-hook" "Major-mode.\n" internal--format-docstring-line "Uses keymap `%s'%s%s." format "%s abbrev table `%s'" "," " and" "" " and syntax-table `%s'" "Major mode derived from `%s' by `define-derived-mode'.\nIt inherits all of the parent's attributes, but has its own keymap%s:\n\n%s\n\nwhich more-or-less shadow%s %s's corresponding table%s." ",\nabbrev table and syntax table" "\nand abbrev table" "\nand syntax table" " `%s'%s" ", `%s' and `%s'" " and `%s'" "s" string-match regexp-quote "\n\n" "%s%s%s" "This mode " "In addition to any hooks its parent mode " "[`‘]%s['’]" "`%s' " "might have run, this mode " "runs the hook `%s'" ", as the final or penultimate step during initialization." "\\\\[{[]" "\n\n\\{" "}"] 18 (#$ . 7194)])
#@66 Construct a setup-function name based on a MODE name.
(fn MODE)
(defalias 'derived-mode-setup-function-name #[257 "\300\301!\302P!\207" [intern symbol-name "-setup"] 4 (#$ . 8767)])
(byte-code "\300\301\302\303#\210\304\301\305\306#\307\301\310\311#\207" [make-obsolete derived-mode-setup-function-name nil "28.1" function-put speed -1 put byte-optimizer byte-compile-inline-expand] 5)
#@218 Initialize variables for a new MODE.
Right now, if they don't already exist, set up a blank keymap, an
empty syntax table, and an empty abbrev table -- these will be merged
the first time the mode is used.
(fn MODE)
(defalias 'derived-mode-init-mode-variables #[257 "\300\301\302!\303P!\262!\2043 \304\305\301\302!\303P!\262\306\307\310\"F!\210\311\301\302!\303P!\262\312\313#\210\300\301\302!\314P!\262!\204f \304\305\301\302!\314P!\262\315\307\316\"F!\210\311\301\302!\314P!\262\312\313#\210\300\301\302!\317P!\262!\203w \313\207\304\305\301\302!\317P!\262\320\321\322\323DD\324BB\325BB\307\326\"F!\207" [boundp intern symbol-name "-map" eval defvar (make-sparse-keymap) format "Keymap for %s." put derived-mode-unmerged t "-syntax-table" (make-char-table 'syntax-table nil) "Syntax table for %s." "-abbrev-table" progn define-abbrev-table derived-mode-abbrev-table-name quote (nil) ((make-abbrev-table)) "Abbrev table for %s."] 9 (#$ . 9162)])
#@75 Set the keymap of the new MODE, maybe merging with the parent.
(fn MODE)
(defalias 'derived-mode-set-keymap #[257 "\211\300\301!\302P!\262\303!\304 \211\203 \305N\203 \306\"\210\307\305\310#\210\311!\207" [intern symbol-name "-map" eval current-local-map derived-mode-unmerged derived-mode-merge-keymaps put nil use-local-map] 8 (#$ . 10148)])
#@81 Set the syntax table of the new MODE, maybe merging with the parent.
(fn MODE)
(defalias 'derived-mode-set-syntax-table #[257 "\211\300\301!\302P!\262\303 \304!\305N\203 \306\"\210\307\305\310#\210\311!\207" [intern symbol-name "-syntax-table" syntax-table eval derived-mode-unmerged derived-mode-merge-syntax-tables put nil set-syntax-table] 8 (#$ . 10509)])
#@125 Set the abbrev table for MODE if it exists.
Always merge its parent into it, since the merge is non-destructive.
(fn MODE)
(defalias 'derived-mode-set-abbrev-table #[257 "\211\301\302!\303P!\262\304!\305\"\210\211\211\207" [local-abbrev-table intern symbol-name "-abbrev-table" eval derived-mode-merge-abbrev-tables] 7 (#$ . 10886)])
#@40 Run the mode hook for MODE.
(fn MODE)
(defalias 'derived-mode-run-hooks #[257 "\211\300\301!\302P!\262\303!\205 \304!\207" [intern symbol-name "-hook" boundp run-hooks] 5 (#$ . 11234)])
#@153 Merge an OLD keymap into a NEW one.
The old keymap is set to be the last cdr of the new one, so that there will
be automatic inheritance.
(fn OLD NEW)
(defalias 'derived-mode-merge-keymaps #[514 "\211\211:\203k \211@:\203, \300@@!\301\"\301\"\302!\203* \302!\203* \303\"\210\266\304@!\203d \211@GS\211\305Y\203c \300!\301\"\301\"\302!\203Z \302!\203Z \303\"\210\266\211S\262\2027 \210\211A\262\202 \210\211GS\233\241\207" [vector lookup-key keymapp derived-mode-merge-keymaps vectorp 0] 10 (#$ . 11433)])
#@135 Merge an OLD syntax table into a NEW one.
Where the new table already has an entry, nothing is copied from the old one.
(fn OLD NEW)
(defalias 'derived-mode-merge-syntax-tables #[514 "\300\"\207" [set-char-table-parent] 5 (#$ . 11973)])
#@16
(fn OLD NEW)
(defalias 'derived-mode-merge-abbrev-tables #[514 "\205 \300\301\302\"\"\207" [mapatoms make-closure #[257 "\301\302!\300\"\206 \303\300\302!JK$\207" [V0 intern-soft symbol-name define-abbrev] 6 "\n\n(fn SYMBOL)"]] 6 (#$ . 12219)])
(provide 'derived)