Commit graph

8574 commits

Author SHA1 Message Date
Lars Ingebrigtsen
90b4ee6575 Further lisp-current-defun-name tweaks
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Further
tweaks to make (autoload 'foo) work again.  Perhaps this should
all be reverted to the original version and then given a new rething.
2022-08-15 07:30:25 +02:00
Stefan Monnier
3a9c803f24 * lisp/emacs-lisp/ring.el (ring): Define as a type 2022-08-14 12:30:06 -04:00
Stefan Monnier
1faeef7924 (compiled-function-p): New function (bug#56648)
* lisp/subr.el (compiled-function-p): New function.

* test/lisp/international/ucs-normalize-tests.el (ucs-normalize-part1):
* lisp/gnus/gnus.el (gnus):
* lisp/mh-e/mh-e.el (mh-version):
* lisp/emacs-lisp/macroexp.el (emacs-startup-hook):
* lisp/emacs-lisp/cl-macs.el (compiled-function):
* lisp/emacs-lisp/bytecomp.el (byte-compile-fdefinition)
(byte-compile, display-call-tree):
* lisp/emacs-lisp/byte-opt.el (<toplevel-end>):
* lisp/emacs-lisp/advice.el (ad-compiled-p):
* lisp/cedet/semantic/bovine.el (semantic-bovinate-stream):
* lisp/loadup.el (macroexpand-all):
* admin/unidata/unidata-gen.el (unidata--ensure-compiled): Use it.

* lisp/emacs-lisp/pcase.el (pcase-mutually-exclusive-predicates):
Add entries for it.
(pcase--split-pred): Use it.

* lisp/help-fns.el (help-fns-function-description-header): Use `functionp`.
(help-fns--var-safe-local): Use `compiled-function-p`.
2022-08-14 12:30:05 -04:00
Mattias Engdegård
1d8712bcc9 Strength-reduce apply with (list ...) as tail argument
* lisp/emacs-lisp/byte-opt.el (byte-optimize-apply):
Transform (apply F ... (list X ...)) -> (funcall F ... X ...)
2022-08-14 15:43:12 +02:00
Mattias Engdegård
e99d7c4d62 Simplify code using take, ntake and butlast
* lisp/calc/calc-vec.el (calcFunc-rhead):
* lisp/calc/calc.el (calc-top-list, calc-pop):
* lisp/emacs-lisp/ert.el (ert-summarize-tests-batch-and-exit):
Simplify.
2022-08-14 15:43:12 +02:00
Štěpán Němec
b93e14fa0f ; advice--interactive-form: Fix a typo introduced in recent change
* lisp/emacs-lisp/nadvice.el (advice--interactive-form): Fix a typo.
2022-08-14 10:23:29 +02:00
Stefan Monnier
dd2973bf50 nadvice.el: Avoid exponential blow up in interactive-form recursion
* lisp/emacs-lisp/nadvice.el (advice--interactive-form): Sink the call
to `commandp` into the autoloaded function case since it's redundant in
the other branch.
(advice--make-interactive-form): Take just the interactive forms rather
than the actual functions as arguments.
(oclosure-interactive-form): Use `advice--interactive-form` rather than
`commandp` since we'd call `advice--interactive-form` afterwards anyway.
2022-08-13 12:04:29 -04:00
Lars Ingebrigtsen
2bbb007e16 Allow EXCLUDED-FILES in loaddefs-generate to be relative
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Allow the
excluded files to be relative (bug#57144).
2022-08-13 14:07:41 +02:00
Stefan Kangas
c4505fed53 Hide local variable section in emacs-news-modes
* lisp/textmodes/emacs-authors-mode.el
(emacs-authors-mode--hide-local-variables): Move from here...
* lisp/emacs-lisp/subr-x.el (emacs-etc--hide-local-variables):
...to here.

* lisp/textmodes/emacs-authors-mode.el (subr-x): Require.
(emacs-authors-mode): Use above renamed function.

* lisp/textmodes/emacs-news-mode.el (subr-x): Require.
(emacs-news--mode-common): Call 'emacs-etc--hide-local-variables'
to hide local variables section.
2022-08-12 22:28:17 +02:00
Lars Ingebrigtsen
316d3111a3 Don't update loaddefs.el timestamps uselessly in loaddefs-generate
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Don't
re-write the loaddefs.el file when there's no reason to.
2022-08-12 20:22:26 +02:00
Lars Ingebrigtsen
c0d761bf7f Further seq-uniq speed-ups for lists
* lisp/emacs-lisp/seq.el (seq-uniq): Speed up more for long lists
(bug#57079).
2022-08-12 15:16:39 +02:00
Stefan Kangas
8ae68308a1 Use help-key-binding face in package list help
* lisp/emacs-lisp/package.el (package--prettify-quick-help-key):
Use help-key-binding face.
2022-08-12 15:08:19 +02:00
Eli Zaretskii
a99ea4b761 ; Fix documentation of 'loaddefs-generate' (bug#57144)
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Doc fix.
2022-08-12 09:49:35 +03:00
Stefan Kangas
8854b321c2 Make ad-version variable obsolete
* lisp/emacs-lisp/advice.el (ad-version): Make obsolete in favor
of emacs-version.  It has not been bumped since 1994.
2022-08-11 17:34:59 +02:00
Stefan Kangas
89f5167379 Don't show status message in Helper-describe-bindings
* lisp/emacs-lisp/helper.el (Helper-describe-bindings): Don't show
status message.
2022-08-11 14:35:23 +02:00
Mattias Engdegård
d8d582dc3c ; * lisp/emacs-lisp/subr-x.el (string-pad): Optimise. 2022-08-10 13:06:12 +02:00
Mattias Engdegård
9d35afed49 Extend LAP optimisations to more operations
Extend the set of eligible opcodes for certain peephole
transformations, which then provide further optimisation
opportunities.

* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Optimise empty save-current-buffer in the same way as we already
do for save-excursion and save-restriction.  This is safe
because (save-current-buffer) is a no-op.
(byte-compile-side-effect-and-error-free-ops): Add list3, list4 and
listN.  These were all apparent oversights as list1 and list2 were
already included.
(byte-after-unbind-ops): Add stack-ref, stack-set, discard, list3,
list4 and listN.  Stack manipulation is safe because unbind cannot
read or modify stack entries.
2022-08-10 12:51:40 +02:00
Stefan Kangas
f002fa8bfc Delete dead code in checkdoc.el
* lisp/emacs-lisp/checkdoc.el: Delete code commented out since
1997.
2022-08-10 11:28:17 +02:00
Stefan Kangas
581fa3d958 Autoload string-blank-p
* lisp/eshell/em-hist.el (subr-x):
* lisp/net/eudc.el (subr-x): Don't require.
* lisp/emacs-lisp/subr-x.el (string-blank-p): Autoload.
2022-08-09 21:58:00 +02:00
Lars Ingebrigtsen
b2bf91003d Further lisp-current-defun-name tweaks
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Tweak so
that cl-defmethod and friends work again.
2022-08-09 19:21:36 +02:00
Lars Ingebrigtsen
5269842833 Add a faster seq-uniq for lists
* lisp/emacs-lisp/seq.el (seq-uniq): Add a faster method for lists
(bug#57079).
2022-08-09 19:21:36 +02:00
Lars Ingebrigtsen
ee201bc77b Make the loaddefs.el file slightly shorter
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--shorten-autoload): New function.
(loaddefs-generate--make-autoload): Use it to drop optional nil
values from the `autoloads' forms.  This makes the loaddefs.el
file about 12K shorter.
2022-08-09 16:36:41 +02:00
Michael Heerdegen
fe4fd160a2 Another lisp-current-defun-name tweak
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Avoid error
when edebug spec is the symbol t.
2022-08-09 04:01:29 +02:00
Lars Ingebrigtsen
909931cb9a Further lisp-current-defun-name tweaks
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Further
tweaks to finding the symbol being defined (defalias).
2022-08-08 15:53:41 +02:00
Lars Ingebrigtsen
ffc81ebc4b Allow specifying how args are to be stored in `command-history'
* doc/lispref/functions.texi (Declare Form): Document
`interactive-args'
* lisp/replace.el (replace-string): Store the correct interactive
arguments (bug#45607).

* lisp/emacs-lisp/byte-run.el (byte-run--set-interactive-args):
New function.
(defun-declarations-alist): Use it.

* src/callint.c (fix_command): Remove the old hack (which now
longer works since interactive specs are byte-compiled) and
instead rely on `interactive-args'.
2022-08-08 15:53:41 +02:00
Lars Ingebrigtsen
55cc8b040b Make which-func-mode output less junk
* lisp/emacs-lisp/lisp-mode.el (lisp-current-defun-name): Use
edebug specs to find the name (if they exist), and default to
returning the top-level symbol if there isn't a define-like form
(bug#49592).
2022-08-08 14:32:33 +02:00
Stefan Kangas
3d7d8ddc5a ; Fix typos 2022-08-08 14:23:29 +02:00
Mattias Engdegård
c3e99a870a ; * lisp/emacs-lisp/bytecomp.el: indentation fix 2022-08-07 17:36:45 +02:00
Mattias Engdegård
08a74ab05a Cease emitting negative file offsets for user variables
'User variables' were made obsolete in Emacs 24 along with
user-variable-p; the sign of the position in (#$ . POS) hasn't
mattered since.

* lisp/emacs-lisp/bytecomp.el (byte-compile-output-docform):
Don't emit negative position when doc string starts with `*`.
* src/lread.c (get_lazy_string): Explain.
2022-08-07 10:52:16 +02:00
Eli Zaretskii
564571f712 ; * lisp/emacs-lisp/lisp.el (end-of-defun-moves-to-eol): Doc fix. 2022-08-06 09:40:07 +03:00
Stefan Monnier
b70369c557 time-convert): Deprecate calls without an explicit FORM arg
* lisp/subr.el (time-convert): Deprecate calls without an explicit FORM arg.

* doc/lispref/os.texi (Time Conversion): Adjust doc accordingly.

* lisp/calendar/time-date.el (days-to-time):
* lisp/emacs-lisp/timer.el (timer-next-integral-multiple-of-time):
* lisp/gnus/nnrss.el (nnrss-normalize-date):
* lisp/epa-ks.el (epa-ks--parse-buffer): Silence corresponding warnings.
2022-08-05 18:46:31 -04:00
Stefan Kangas
ea6c2e9295 Allow newline after def*-form for definition-prefix
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add another semantic function.
(loaddefs-generate--compute-prefixes): Allow newline after the "(def*"
form.  (Bug#57000)
2022-08-05 20:17:23 +02:00
Filipp Gunbin
50730a8b04 Add variable end-of-defun-moves-to-eol
* lisp/emacs-lisp/lisp.el (end-of-defun-moves-to-eol): New variable.
(end-of-defun): Use it.
2022-08-05 21:03:03 +03:00
Stefan Monnier
eb7fe81e6d timer.el: Avoid repeated timers
https://mail.gnu.org/archive/html/emacs-devel/2022-07/msg01127.html
points out that end-users can get bitten by this, accidentally
calling `timer-activate` on an already activated timer.

* lisp/emacs-lisp/timer.el (timer--activate): Signal an error if we try
to re-add a timer that's already on the timer-list.
2022-08-05 10:38:59 -04:00
Stefan Monnier
df263dd758 bytecomp.el: Update comments referring to make-docfile 2022-08-05 09:41:03 -04:00
Stefan Monnier
900b09c023 bytecomp.el: Further simplifications enabled by commit 59732a83c8
* lisp/emacs-lisp/bytecomp.el (byte-compile-output-docform): Don't
insert a \n before the #@ docstrings since make-docfile doesn't scan
.elc files any more.
2022-08-05 08:18:04 -04:00
Stefan Kangas
d73a104dd3 Be more lax when picking up prefixes for loaddefs
* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--compute-prefixes): Allow tabs and spaces before
symbol name, so that "(defvar\tfoo-bar nil)" is properly picked up.
Before this change, such a definition would be wrongly picked up as
the symbol "nil".
2022-08-04 23:21:03 +02:00
Lars Ingebrigtsen
aa9eaac68e Move autoload.el to lisp/obsolete/ 2022-08-04 17:03:59 +02:00
Lars Ingebrigtsen
f038695085 Minor cleanups in autoload.el/loaddefs-gen.el
* lisp/subr.el (package--builtin-versions): Adjust comments.

* lisp/emacs-lisp/loaddefs-gen.el (no-update-autoloads): Moved
here from autoload.el.
* lisp/emacs-lisp/loaddefs-gen.el: Removed now that it's no longer
used.

* lisp/emacs-lisp/package.el
(package-autoload-ensure-default-file): Don't warn about
soon-to-be obsolete functon.
2022-08-04 16:41:39 +02:00
Lars Ingebrigtsen
d15b67b108 Minor checkdoc.el clean up
* lisp/emacs-lisp/checkdoc.el (generate-autoload-cookie): This is
no longer used, so remove reference.
2022-08-04 16:29:47 +02:00
Lars Ingebrigtsen
9129808496 Add define-keymap to autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Ignore `define-keymap', too (bug#56973).
2022-08-04 15:27:47 +02:00
Stefan Kangas
385511f1a2 Add define-key-after to autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add define-key-after and define-ibuffer-sorter.
2022-08-04 15:03:42 +02:00
Stefan Kangas
e2eee46247 Add more autoload-ignored-definitions
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add define-ibuffer-column.
2022-08-04 14:36:34 +02:00
Lars Ingebrigtsen
459b1b8fbc Add more autoload-ignored-definitions defs
* lisp/emacs-lisp/loaddefs-gen.el (autoload-ignored-definitions):
Add more definition forms that shouldn't trigger prefix
registration (bug#56970).
2022-08-04 11:27:03 +02:00
Lars Ingebrigtsen
4c1bc8315d Fix up some prefix registration problems in doc strings
* lisp/uniquify.el (uniquify-buffer-name-style):
* lisp/org/ob-core.el (org-src-sha):
* lisp/emacs-lisp/cl-macs.el (cl--optimize):
* lisp/battery.el (battery-update-functions): Avoid triggering the
`register-definition-prefixes' in doc strings (bug#56968).
2022-08-04 11:03:10 +02:00
Lars Ingebrigtsen
4ebdc558f6 Adjust loaddefs-generate--print-form comments
* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--print-form):
Adjust doc string and comments now that make-docfile doesn't scan
this.
2022-08-04 07:44:53 +02:00
Lars Ingebrigtsen
261d6afd6e Byte-compile the in-tree loaddefs.el files
* lisp/Makefile.in (all): Add "autoloads", which now otherwise
won't be done.
($(lisp)/loaddefs.el): Remove this target, since it's always done,
and would then trigger a re-compilation of loaddefs.elc.

* lisp/loadup.el: Load loaddefs.elc (if it exists).

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate): Don't
include no-byte-compile cookies in the Emacs build.

* src/Makefile.in ($(pdmp)): Depend on loaddefs.elc to ensure that
it's built by this point.
($(etc)/DOC): Don't scan loaddefs.el for doc strings, since they
are now picked up from the .elc file (bug#53024).
2022-08-03 14:22:16 +02:00
Lars Ingebrigtsen
0596c69186 Check for mis-quoted #' in doc strings during byte-compile
* lisp/emacs-lisp/bytecomp.el (byte-compile-docstring-style-warn):
Check for mis-quoted #' in doc strings, too.
2022-08-03 13:14:32 +02:00
Lars Ingebrigtsen
0a6e2b3bfc Fix quoting of #' in some doc strings
* lisp/org/ox.el (org-export-to-file):
* lisp/eshell/esh-arg.el (eshell-concat):
* lisp/emacs-lisp/edebug.el (edebug-read-special):
* lisp/dired-aux.el (dired-split): Fix quoting of #' in doc strings.
2022-08-03 13:14:32 +02:00
Stefan Kangas
984b8f7ed0 Remove some spurious references to XEmacs
* lisp/desktop.el (desktop--emacs-pid-running-p):
* lisp/emacs-lisp/checkdoc.el (checkdoc-ispell-lisp-words): Don't
mention XEmacs.
2022-08-03 11:41:43 +02:00