summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
Commit message (Collapse)AuthorAgeFilesLines
...
| * Remove outdated comment in syntax.elEli Zaretskii2018-03-031-6/+0
| | | | | | | | | | * lisp/emacs-lisp/syntax.el (syntax-ppss-toplevel-pos): Remove outdated comment. (Bug#30617)
* | ; lisp/emacs-lisp/eieio.el (eieio-object-set-name-string): Fix quote.Noam Postavsky2018-03-011-1/+1
| |
* | Arrange for loaddefs files to be greppablePaul Eggert2018-03-011-0/+2
| | | | | | | | | | | | | | | | Without this change, ldefs-boot.el contains a couple of stray NUL bytes, which cause it to be considered to be a non-text file by tools like GNU grep. * lisp/emacs-lisp/autoload.el (autoload-print-form): Set print-escape-control-characters to t.
* | Merge from origin/emacs-26Glenn Morris2018-02-201-1/+1
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | 226aca3 (origin/emacs-26) Fix documentation of 'flyspell-auto-correct... a8c8434 * doc/emacs/misc.texi (Saving Emacs Sessions): Fix markup. 275e735 More changes in the Emacs manuals d962be5 More fixes in the Emacs manual 6dc2846 * src/data.c (Faref): Fix a typo in the doc string. (Bug#30510) 36e729f Minor edit in tramp.texi 6537f99 ; Fix oversight from last commit eb94588 ; * doc/emacs/maintaining.texi: Fix two typos. 258135f More improvements in the Emacs manual f138bca Improve documentation of 'electric-pair-mode' f74ab96 ; Spelling and grammar fixes. 42f9dc4 ; * lisp/textmodes/flyspell.el (flyspell-auto-correct-word): ...
| * ; Spelling and grammar fixes.Paul Eggert2018-02-171-1/+1
| |
* | Merge from origin/emacs-26Glenn Morris2018-02-175-6/+8
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e5a2933 (origin/emacs-26) lisp/vc/: documentation fixes f21f8e6 Document 'desktop-files-not-to-save' d8917eb Improve documentation of Profiling features b228839 Improve indexing of "performance" in ELisp manual ab67b3e Minor change in Emacs manual's VC chapter c352434 Avoid memory corruption with specpdl overflow + edebug (Bug#3... 593bbda Document comment-fill-column in the manual (Bug#11636) bd4cc8d * doc/emacs/dired.texi (Marks vs Flags): Copyedits. 69107f3 ; Fix doc typos related to indefinite articles aaad1e6 Merge branch 'emacs-26' of git.savannah.gnu.org:/srv/git/emac... 5906418 More fixes for the Emacs manual 9ab3df1 ; Fix doc typos related to indefinite articles 66a4e65 ; Fix doc typos related to indefinite articles 35e5c57 ; Fix doc typos related to indefinite articles
| * Improve documentation of Profiling featuresEli Zaretskii2018-02-172-3/+5
| | | | | | | | | | | | | | | | * doc/lispref/debugging.texi (Profiling): Improve the description of elp.el. Improve wording of the rest of the section. (Bug#30491) * lisp/emacs-lisp/elp.el (elp-instrument-list): Make the interactive invocation work. Doc fix.
| * ; Fix doc typos related to indefinite articlesGlenn Morris2018-02-161-1/+1
| |
| * ; Fix doc typos related to indefinite articlesGlenn Morris2018-02-162-2/+2
| |
* | Add early init file, stop package-initialize insertionRadon Rosborough2018-02-171-70/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Discussion on emacs-devel leading up to this change (approximately 150 messages): - https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00154.html - https://lists.gnu.org/archive/html/emacs-devel/2017-08/msg00433.html - https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00023.html - https://lists.gnu.org/archive/html/emacs-devel/2017-09/msg00599.html - https://lists.gnu.org/archive/html/emacs-devel/2017-10/msg00332.html * lisp/startup.el (early-init-file): New variable. (load-user-init-file): New function. (command-line): Load the early init file using `load-user-init-file'. Move the check for an invalid username to just before that, and move the initialization of the package system to just after. Load the regular init file using `load-user-init-file'. * lisp/emacs-lisp/package.el (package--ensure-init-file): Remove definition, usage, and documentation. (package--init-file-ensured): Remove definition and usage. * src/lread.c (Vuser_init_file): Note change in semantics due to its usage while loading the early init file. * doc/emacs/custom.texi: Document early init file. * doc/emacs/package.texi: Document changes to when package-initialize is called. Change terminology for package 'loading'. * doc/lispref/os.texi: Document early init file. Update startup summary. * doc/lispref/package.texi: Document changes to when package-initialize is called, and advise against calling it in the init file. Change terminology for package 'loading'. * doc/misc/org.texi: Don't recommend to call package-initialize in the init file.
* | Merge from origin/emacs-26Glenn Morris2018-02-161-0/+5
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a06a8ed (origin/emacs-26) ; * lisp/vc/vc-git.el (vc-git--program-vers... edc06ad Make 'byte-compile-error-on-warn' a safe file variable 9f5d8da ; * lisp/textmodes/flyspell.el (flyspell-auto-correct-word): ... f73905a Fix the doc string of flyspell-auto-correct-word e9c7ddc Improve the MS-Windows appendix of the Emacs manual 6ddb4bd Fix 'vc-git--program-version' 63c93f7 Fix typos and wording in the Emacs manual 42f15b0 * doc/emacs/programs.texi (Semantic): Order programming langu... b46be29 More improvements for the Emacs manual 874c0ed Minor wording change in Emacs manual 53511f9 Another set of changes for the manual 78426b8 Improvements on tramp.texi 0dca618 Tramp minor doc fixes Conflicts: doc/misc/tramp.texi
| * Make 'byte-compile-error-on-warn' a safe file variableRobert Cochran2018-02-161-0/+5
| | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-error-on-warn): Mark as a safe local variable for boolean values.
* | * lisp/emacs-lisp/cl-macs.el (cl--sm-macroexpand): Handle lambda!Stefan Monnier2018-02-081-23/+55
| | | | | | | | | | | | | | | | (cl--old-macroexpand): Remove. (cl--sm-macroexpand): Change its calling convention, so it can use advice-add. Extend re-binding treatment of vars so it applies to all var-introducing forms rather than only to 'let'. (cl-symbol-macrolet): Use advice-add rather than fset.
* | * lisp/emacs-lisp/cconv.el (cconv-convert): Fix compiling compiled codeStefan Monnier2018-02-021-2/+5
| | | | | | | | Don't conv-convert the docstring arg of defvar/defconst.
* | Merge from origin/emacs-26Glenn Morris2018-01-311-1/+4
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 22922c7 (origin/emacs-26) * doc/emacs/entering.texi (Entering Emacs):... 59657c4 Document 'window-at-side-p' in the Elisp manual 2b35ed0 Document external-debugging-output in the Elisp Manual (Bug#2... db6564c Fix scroll-margin docstring (Bug#13791) 732d1b9 Clarify that `ansi-term' is almost the same as `term' (Bug#18... f706c59 Update manual description of locate-file (Bug#23650) 1602262 Clarify effect of print-gensym (Bug#27776) 53e9fa2 * lisp/custom.el (defcustom): Fix docstring (Bug#27891). 607cc4e Define cl-type-definition button type as needed (Bug#28899) 9e6889c Emphasize that GPG passphrase caching is temporary (Bug#29907) 4b5711b Fix @examples in cc-mode.info, where lines were getting glued... 71961f1 Minor change in "Mode Line" section of Emacs manual 55a2b76 More fixes in the Emacs manual
| * Define cl-type-definition button type as needed (Bug#28899)Noam Postavsky2018-01-301-1/+4
| | | | | | | | | | * lisp/emacs-lisp/eieio-opt.el (eieio-help-constructor): Require `cl-extra' before using the `cl-type-definition' button type.
* | Merge from origin/emacs-26Glenn Morris2018-01-301-4/+7
|\| | | | | | | | | | | | | | | | | | | | | | | | | bc8dc37 (origin/emacs-26) Minor copyedits in "Distribution" chapter o... 1c7a936 Minor copyedits in "Entering" chapter of Emacs manual. 1d4498b Minor wording change in the Emacs manual 2bf49e7 Fix a typo in the Emacs manual f3546a2 Improve the "Basic" chapter of the Emacs manual 691431e Resurrect lost text in lispref 956807b * lisp/emacs-lisp/rx.el (rx): Fix the definition of 'blank'. 7d90d2e Proofread os.texi and files.texi 490c736 Minor improvements in the "International" chapter of Emacs ma... 79252d3 Minor improvement in "Text" chapter of Emacs manual
| * * lisp/emacs-lisp/rx.el (rx): Fix the definition of 'blank'.Philipp Stephani2018-01-301-4/+7
| |
* | Add missing module types to cl--typeof-types.Philipp Stephani2018-01-281-0/+2
| | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types): Add module types. * test/src/emacs-module-tests.el (emacs-module-tests--generic): New helper function. (module-function-object, mod-test-userptr-fun-test): Test that type dispatching works with module types.
* | Prevent name clashes between CL structures and builtin typesPhilipp Stephani2018-01-283-29/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Don't allow structures with the same names as builtin types. (cl--typeof-types, cl--all-builtin-types): Move from cl-generic.el and rename. (cl--struct-name-p): New helper function. * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Don't allow structures with the same names as builtin types. * lisp/emacs-lisp/cl-generic.el (cl--generic-typeof-generalizer) (cl-generic-generalizers): Adapt to name change. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-defstruct/builtin-type): * test/lisp/emacs-lisp/cl-preloaded-tests.el (cl-struct-define/builtin-type): New unit tests. * etc/NEWS: Document changed behavior.
* | * lisp/emacs-lisp/cl-preloaded.el: Update cl-slot-descriptor name.Stefan Monnier2018-01-261-2/+2
| |
* | * lisp/emacs-lisp/gv.el (char-table-range): Add gv-setter.Stefan Monnier2018-01-251-0/+1
| |
* | * lisp/emacs-lisp/ert.el (describe-symbol-backends): Add ourselvesStefan Monnier2018-01-221-4/+9
| | | | | | | | | | | | (ert-describe-test): Return the description text as well. Remove left over version check. * lisp/help-mode.el (describe-symbol-backends): Add docstring.
* | ; Spelling fixPaul Eggert2018-01-221-1/+1
| |
* | New function read-answer (bug#30073)Juri Linkov2018-01-211-0/+122
| | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/map-ynp.el (read-answer): New function. (read-answer-short): New defcustom. * lisp/dired.el (dired-delete-file): Use read-answer. (dired--yes-no-all-quit-help): Remove function. (dired-delete-help): Remove defconst. * lisp/subr.el (assoc-delete-all): New function.
* | Fix tempfile creation when byte compilingPaul Eggert2018-01-201-11/+1
| | | | | | | | | | | | | | | | This improves on the recent fix for master failing to build on FreeBSD. Suggested by Stefan Monnier in: https://lists.gnu.org/r/emacs-devel/2018-01/msg00600.html * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Put tempfile next to the target file, as was the original intent.
* | Merge from origin/emacs-26Glenn Morris2018-01-201-1/+11
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | cfc94fd (origin/emacs-26) Don't mention 'vc-stay-local' in the user m... 8ce430b Fix a typo in calendar.texi bb748b3 Minor improvement in wording of the Emacs manual b603aff Revert "Fix tempfile creation when byte compiling" 4fd446e Fix tempfile creation when byte compiling 7f48a11 Improve the Emacs manual as suggested in emacs-manual-bugs 728ded0 * lisp/emacs-lisp/bytecomp.el: Tweak last change c6c05e2 Unbreak building Emacs on FreeBSD a41ad3d Don't unnecessarily use non-ASCII characters in C sources c28d4b6 Portability fixes in emacs-module-tests 1d50c18 Add tests for term.el
| * Revert "Fix tempfile creation when byte compiling"Eli Zaretskii2018-01-201-1/+11
| | | | | | | | | | | | This reverts commit 4fd446e9f65e5531b18d4a0c5e08a6eeabc292d8: * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Put tempfile next to the target file, as was the original intent.
| * Fix tempfile creation when byte compilingPaul Eggert2018-01-191-11/+1
| | | | | | | | | | | | | | | | This improves on the recent fix for master failing to build on FreeBSD. Suggested by Stefan Monnier in: https://lists.gnu.org/r/emacs-devel/2018-01/msg00600.html * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Put tempfile next to the target file, as was the original intent.
| * * lisp/emacs-lisp/bytecomp.el: Tweak last changeStefan Monnier2018-01-191-7/+7
| | | | | | | | (byte-compile-file): Move comment closer to the code it describes.
| * Unbreak building Emacs on FreeBSDEli Zaretskii2018-01-191-1/+11
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/bytecomp.el (byte-compile-file): Don't create the temporary file under temporary-file-directory if the file being compiled is specified by an absolute file name. This avoids problems with ACL copying from temporary-file-directory on FreeBSD. For the details, see http://lists.gnu.org/archive/html/emacs-devel/2018-01/msg00513.html.
* | Improve and simplify 'map-y-or-n-p'Basil L. Contovounesios2018-01-201-21/+17
| | | | | | | | | | | | | | * lisp/emacs-lisp/map-ynp.el (map-y-or-n-p): Do not follow a definite article with an action verb in C-h help text. Use 'with-help-window' instead of 'with-output-to-temp-buffer'. Simplify string concatenation. (Bug#30064)
* | Merge from origin/emacs-26Glenn Morris2018-01-181-2/+8
|\| | | | | | | | | 76040d1 (origin/emacs-26) Handle case-insensitive filenames for load-... 0c9b050 ; * test/file-organization.org: Fix typo.
| * Handle case-insensitive filenames for load-path shadows (Bug#5845)Noam Postavsky2018-01-181-2/+8
| | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/shadow.el (load-path-shadows-find): Check for shadowing with case-insensitive matching for files of case-insensitive directories (as determined by `file-name-case-insensitive-p'). * test/lisp/emacs-lisp/shadow-tests.el: New test. * test/lisp/emacs-lisp/shadow-resources/p1/foo.el: * test/lisp/emacs-lisp/shadow-resources/p2/FOO.el: New test files.
* | Merge from origin/emacs-26Glenn Morris2018-01-152-1/+10
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 2c0cfa6455 * ChangeLog.3: Update 4387bb44ae Update authors bce51bd6f7 * lisp/gnus/message.el (message-do-auto-fill): Prevent do-... bd2a2a1e84 Improve documentation of etags 7ba75b9637 Teach etags new interpreters for some languages 1f7f03742d * lisp/emacs-lisp/generator.el (iter-defun): Add 'doc-stri... dbb4aac212 * lisp/emacs-lisp/syntax.el (syntax-propertize): Fix bug#2... 80463a43da Improve documentation of fill-separate-heterogeneous-words... 4bd2416d55 Fix documentation of some x-* functions 9c2b11484f Inherit query-on-exit flag to stderr process (Bug#30031) 3efb1e7def Fix Bug#30057 a9b884c60f Tag some unstable tests, and skip by default (bug#24503) # Conflicts: # test/lisp/emacs-lisp/eieio-tests/eieio-tests.el
| * * lisp/emacs-lisp/generator.el (iter-defun): Add 'doc-string' prop.Stefan Monnier2018-01-111-1/+2
| |
| * * lisp/emacs-lisp/syntax.el (syntax-propertize): Fix bug#29767Stefan Monnier2018-01-111-0/+8
| |
* | Merge from origin/emacs-26Paul Eggert2018-01-091-10/+8
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 7668717d6f Merge from Gnulib 9e4d523427 * lisp/epg.el (epg-start-sign): Replace obsolete functions. 26c58f31a8 Small fix for erc-logging-enabled 34b41e3bc6 Quieten semantic normal usage e25f961e37 Avoid irrelevant hyperlink in doc string of 'epa-pinentry-... ec2636513c * doc/misc/tramp.texi (Remote processes): Mention gdb rest... 918a052a42 Query background for gnome terminal version 3.22 (Bug#29716) 1dfc27576a Make pixel-wise scrolling less laggy f92264fc2a Fix child frame placement issues (bug#29953) a5f718c4c5 ; * doc/lispref/text.texi (Change Hooks): Fix last change. e876f5f9fb Describe the precise interaction of complex primitives wit... 3a22097cf6 Fix valgrind report in call-interactively d5f1c87bfe * src/editfns.c (Fsave_excursion): Doc fix. (Bug#30001) b8d74c4578 Fix mark-defun when there's no spaces between successive d... a377c652b5 Fix Dired display and operations on file names with raw bytes d9d6e8a04c ; Comments related to src/termcap.c f8a07fa6b1 Improve documentation of 'gdb-many-windows' f82400798e Fix failures in smerge-mode on MS-Windows
| * Fix mark-defun when there's no spaces between successive defuns.Alan Mackenzie2018-01-061-10/+8
| | | | | | | | | | | | | | | | | | | | | | The problem was a parse-partial-sexp call which tried to use the STOPBEFORE argument to detect non-syntactic WS. This fails on a "}", which does not begin a sexp. * lisp/emacs-lisp/lisp.h (beginning-of-defun--in-emptyish-line-p): Enhance to handle BOL being in a string. (beginning-of-defun-comments): Call the above function in place of the call to parse-partial-sexp.
* | cl-loop: Add missing guard conditionTino Calancha2018-01-081-7/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Consider the expansion of `cl-loop' with a `for' clause and more than one internal variables, X, Y, processed in parallel. Each step updates X and Y right after update the loop variable, K; if either X or Y depend on K, then some forms of the body are evaluated with the wrong K (Bug#29799). For instance, consider the following code: (cl-loop for k below 2 for x = (progn (message "k = %d" k) 1) and y = 1) This code should show in *Messages*: k = 0 k = 1 Instead, the code shows: k = 0 k = 1 k = 2 To prevent this we must ensure that the loop condition is still satisfied right after update the loop variable. In the macro expansion of the example above, right after: (setq k (+ k 1)) evaluate the rest of the body forms iif the condition (< k 2) is still valid. * lisp/emacs-lisp/cl-macs.el (cl--loop-guard-cond): New variable. (cl--parse-loop-clause): Set it non-nil if the loop contains a for/as clause. (cl-loop): After update the loop variable, evaluate the remaining of the body forms just if the loop condition is still valid (Bug#29799). * test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-loop-for-as-equals-and): New test.
* | cl-loop: Calculate the array length just onceTino Calancha2018-01-081-3/+9
| | | | | | | | | | * lisp/emacs-lisp/cl-macs.el (cl--parse-loop-clause): Dont calculate the array length on each iteration (Bug#29866).
* | Revert "Prevent name clashes between CL structures and builtin types"Philipp Stephani2018-01-072-12/+0
| | | | | | | | | | This reverts commit 151496a4b96430924bc148f85b9c8471d1e132b1. That commit breaks bootstrap builds due to a cyclic dependency.
* | Prevent name clashes between CL structures and builtin typesPhilipp Stephani2018-01-072-0/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * lisp/emacs-lisp/cl-preloaded.el (cl-struct-define): Don't allow structures with the same names as builtin types. (cl--struct-name-p): New helper function. * lisp/emacs-lisp/cl-macs.el (cl-defstruct): Don't allow structures with the same names as builtin types. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-defstruct/builtin-type): * test/lisp/emacs-lisp/cl-preloaded-tests.el (cl-struct-define/builtin-type): New unit tests. * etc/NEWS: Document changed behavior.
* | Revert "Fix command repetition with lexical-binding (Bug#29334)"Noam Postavsky2018-01-061-1/+6
| | | | | | | | | | | | | | | | | | It does not work with more complicated interactive forms, because byte-compile-lambda actually receives an intermediate form of code rather than valid lisp source (Bug#29988). * src/callint.c (Fcall_interactively): * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Revert previous change, and update commentary.
* | Fix command repetition with lexical-binding (Bug#29334)Noam Postavsky2018-01-031-5/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `call-interactively' relies on analyzing the source of `interactive' forms in order to preserve arguments like (region-end) in the command history, rather than just storing the resulting position. However, the byte-compiler does not preserve the source of the interactive form when lexical-binding is in effect, because `call-interactively' would evaluate the form with dynamic binding in that case. To fix this, change `call-interactively' so that it checks compiled functions for lexical-binding as well. Then the byte-compiler can preserve the source of interactive forms regardless of the value of lexical-binding. * src/callint.c (Fcall_interactively): Functions compiled with lexical-binding have their arglist encoded as an integer, use this to choose the right kind of binding for compiled functions too. * lisp/emacs-lisp/bytecomp.el (byte-compile-lambda): Preserve the uncompiled form of the interactive form when lexical-binding is enabled too.
* | Update copyright year to 2018Paul Eggert2018-01-011-1/+1
| | | | | | | | Run admin/update-copyright.
* | Merge from origin/emacs-26Paul Eggert2018-01-0187-87/+87
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 63b04c11d5 Fix copyright years by hand 5c7dd8a783 Update copyright year to 2018 220a9ecba1 Merge from Gnulib 312c565566 Don't add empty keyboard macro to macro ring (Bug#24992) 39ca289a7a Allow customization of decoding of "man" command f8240815ea * etc/NEWS: Add security consideration note on passphrase ... 0c78822c70 Fix subtle problem with scroll-down when scroll-margin is ... acd289c5a4 Fix problems with indexing in User manual b240c7846b * lisp/help.el (describe-key): Only (copy-sequence elt) wh... e879a5444a * src/buffer.c (Frestore_buffer_modified_p): Fix bug#29846 81b1028b63 Improve documentation of 'inhibit-modification-hooks' and ... 7175496d7a Fix doc string of 'enable-recursive-minibuffers' 5b38406491 Fix documentation of delsel and of killing text # Conflicts: # etc/NEWS # etc/refcards/ru-refcard.tex
| * Fix copyright years by handPaul Eggert2018-01-011-1/+1
| | | | | | | | | | These are dates that admin/update-copyright did not update, or updated incorrectly.
| * Update copyright year to 2018Paul Eggert2018-01-0186-86/+86
| | | | | | | | Run admin/update-copyright.
* | (delayed-after-hook-functions): Tighten the code a bitStefan Monnier2017-12-271-6/+4
| | | | | | | | | | | | | | | | | | * lisp/subr.el (delayed-mode-hooks, delayed-after-hook-functions): Use defvar-local. (run-mode-hooks): Reset delayed-after-hook-functions before running those functions, in case an error is signaled. * lisp/emacs-lisp/derived.el (define-derived-mode): Don't duplicate code.