Commit graph

7246 commits

Author SHA1 Message Date
Stefan Kangas
826192409a Convert unsafep tests to ert
* lisp/emacs-lisp/tcover-unsafep.el: Move from here...
* test/lisp/emacs-lisp/unsafep-tests.el: ...to here, and convert to
use ert instead of tcover.
2020-08-29 23:35:00 +02:00
João Távora
c7e297e906 Prevent ElDoc blinking when eldoc-documentation-enthusiast is used
This eldoc-documentation-strategy function didn't always obey protocol
since it returned nil sometimes, which the eldoc engine took it as a
hint for the "old" protocol to clear the echo area.

* lisp/emacs-lisp/eldoc.el (eldoc-documentation-enthusiast):
Return t.
(Version): Bump to 1.9.0
2020-08-29 14:29:22 +01:00
Andrea Corallo
c3514a6274 Merge remote-tracking branch 'savannah/master' into HEAD 2020-08-29 11:33:37 +02:00
Stefan Kangas
a811a618e0 ; Bump seq version to 2.22 2020-08-29 00:42:36 +02:00
Stefan Kangas
d2412492ca Make XEmacs compat aliases obsolete in warnings.el
* lisp/emacs-lisp/warnings.el (display-warning-minimum-level)
(log-warning-minimum-level): Make XEmacs compat aliases into obsolete
aliases for 'warning-minimum-level' and 'warning-minimum-log-level'.
2020-08-28 17:33:44 +02:00
Stefan Kangas
766cd0c7c3 Use lexical-binding in warnings.el and add tests
* lisp/warnings.el: Use lexical-binding.
Remove redundant :group args.

* test/lisp/warnings-tests.el: New file.
2020-08-28 17:33:44 +02:00
Eric Abrahamsen
7974422dfc New eieio-persistent-make-instance generic function
This allows override of the read process for eieio-persistent objects,
providing the possibility of matching read/write customization for
eieio-persistent subclasses.

* lisp/emacs-lisp/eieio-base.el (eieio-persistent-make-instance): New
generic function for constructing instances from object data written
to disk. Previously known as eieio-persistent-convert-list-to-object.
2020-08-28 08:20:28 -07:00
Eric Abrahamsen
4d741e577f Remove redundant slot validation in eieio-persistent-read
Actual object creation (in `make-instance') will later run all slot
values through cl-typep, which does a better job of validation. This
validation is redundant, and slows the read process down.

* lisp/emacs-lisp/eieio-base.el (eieio-persistent-fix-value): Rename
from `eieio-persistent-validate/fix-slot-value', as we no longer
validate, and we don't care about the slot definition.
(eieio-persistent-slot-type-is-class-p): Delete function.
(eieio-persistent-convert-list-to-object): Still call
`eieio--full-class-object', to trigger an autoload if necessary, but
discard the return value.
2020-08-28 08:20:28 -07:00
Stefan Kangas
e24a93d100 ; Fix license statements. 2020-08-27 02:53:25 +02:00
Andrea Corallo
aa526c9470 Merge branch 'add_driver_option' into HEAD 2020-08-26 21:40:00 +02:00
Andreas Fuchs
2772e835b6 Set native driver options in async compiles, also
Ensure the variable is set to the value that was customized in the
parent process in child compilation processes, also.
2020-08-26 21:25:45 +02:00
Štěpán Němec
0e01d5aa72 Preserve setf semantics in 'substring', 'cons', 'logand' expanders
* doc/lispref/variables.texi (Adding Generalized Variables): Fix example.
* lisp/emacs-lisp/cl-lib.el (substring)
* lisp/emacs-lisp/gv.el (cons, logand): Return the value being
assigned, as specified for 'setf'.  (bug#35546)
2020-08-25 17:59:05 +02:00
Michael Albinus
36f2f67c96 Merge from origin/emacs-27
44104a607a Fix error in GMP test
e26e63444d Add Feature testing for Windows binaries
4e2caef384 ; * src/character.c (str_as_multibyte): Fix the commentary.
d3a4ce8420 Revert "; * etc/NEWS: Remove temporary note on documentati...
16f00e36dc * admin/admin.el (set-version): Trap yet another NEWS error.
121be3e118 ; * etc/NEWS: Remove temporary note on documentation.  (Bu...
5fcb97dabd Fix cond jump table compilation (bug#42919)
2020-08-25 15:29:38 +02:00
Lars Ingebrigtsen
1fa90f77ed Change how #:uninterned symbols are font-locked in Lisp mode
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs): Font-lock
#:uninterned symbols as a single entity instead of #: and
uninterned separately (bug#43001).
2020-08-24 14:34:42 +02:00
Stefan Kangas
bc5da2c3fb Avoid some uses of obsolete function interactive-p
* doc/lispref/help.texi (Accessing Documentation):
* lisp/cedet/data-debug.el:
* lisp/emacs-lisp/edebug.el (edebug-wrap-def-body):
* lisp/simple.el (append-next-kill):
* test/manual/cedet/cedet-utests.el (cedet-utest, pulse-test):
* test/manual/cedet/semantic-tests.el (semantic-lex-spp-write-utest)
(semantic-symref-test-count-hits-in-tag): Use 'called-interactively-p'
instead of obsolete function 'interactive-p'.
2020-08-24 04:27:27 +02:00
Stefan Kangas
326fdb9ec0 Remove many items obsolete since Emacs 23.2 and 23.3
* lisp/allout.el (allout-init):
* lisp/emacs-lisp/shadow.el (shadows-compare-text-p):
* lisp/ffap.el (ffap-version):
* lisp/filecache.el (file-cache-choose-completion):
* lisp/help.el (print-help-return-message):
* lisp/image-mode.el (image-mode-maybe):
* lisp/imenu.el (imenu-example--name-and-position):
* lisp/international/mule-cmds.el (princ-list):
* lisp/mail/rmail.el (rmail-highlight-face):
* lisp/minibuffer.el (read-file-name-predicate):
* lisp/mouse.el (mouse-choose-completion):
* lisp/progmodes/cc-cmds.el (c-forward-into-nomenclature):
* lisp/progmodes/xscheme.el
(advertised-xscheme-send-previous-expression):
* lisp/simple.el (completion-base-size)
(choose-completion-delete-max-match, exchange-dot-and-mark):
* lisp/subr.el (eval-next-after-load):
* lisp/term.el (term-dynamic-simple-complete):
Remove items, obsolete since Emacs 23.2 and 23.3.
* doc/misc/cc-mode.texi (Movement Commands): Doc fix.
* doc/lispref/help.texi (Accessing Documentation):
* lisp/emacs-lisp/edebug.el (edebug-wrap-def-body):
* lisp/comint.el (comint-dynamic-list-completions):
* lisp/progmodes/idlwave.el (idlwave-make-modified-completion-map-xemacs)
(idlwave-make-modified-completion-map-emacs)
(idlwave-choose-completion):
* lisp/progmodes/vhdl-mode.el:
* lisp/term.el (term-dynamic-list-completions):
Remove references to 'mouse-choose-completion'.
* lisp/image-mode.el (image-mode-to-text):
Remove reference to 'image-mode-maybe'.
* lisp/mail/rmail.el (rmail-highlight-headers):
Use 'rmail-highlight' face instead of 'rmail-highlight-face'.
* lisp/progmodes/antlr-mode.el (antlr-mode-map, antlr-mode-menu):
Remove reference to 'c-forward-into-nomenclature'.
* lisp/simple.el (choose-completion, choose-completion-string)
(completion-list-mode, completion-setup-function): Don't use
'completion-base-size'.
; * etc/NEWS: List removed items.

This was discussed in
https://lists.gnu.org/archive/html/emacs-devel/2020-08/msg00400.html
2020-08-24 04:09:47 +02:00
Andrea Corallo
337367a733 * lisp/emacs-lisp/comp.el (native-compile): Fix free function compilation. 2020-08-23 12:58:52 +02:00
Andrea Corallo
fafc9c2117 Merge remote-tracking branch 'savannah/master' into HEAD 2020-08-23 11:52:18 +02:00
Lars Ingebrigtsen
348686b3f3 Minor mode doc string clarification
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--arg-docstring):
Clarify that the minor mode hook is called both when enabling and
disabling the mode (bug#34073).
2020-08-21 17:15:22 +02:00
Andreas Fuchs
bec2adebc6 Pass driver options to libgccjit where supported
Add a customizable variable for driver options (such as linker flags)
to pass to libgccjit (Bug #42761).

* lisp/emacs-lisp/comp.el (comp-native-driver-options): New
customization variable.
* src/comp.c: Use comp-native-driver-options to set libgccjit's driver
options, if supported on the library's ABI version.
2020-08-19 17:12:21 +02:00
Andrea Corallo
886377fefd Merge remote-tracking branch 'savannah/master' into HEAD 2020-08-19 16:11:00 +02:00
Mattias Engdegård
5fcb97dabd Fix cond jump table compilation (bug#42919)
This bug affected compilation of

 (cond ((member '(some list) variable) ...) ...)

While equal is symmetric, member is not; in the latter case the
arguments must be a variable and a constant list, in that order.

Reported by Ikumi Keita.

* lisp/emacs-lisp/bytecomp.el (byte-compile--cond-switch-prefix):
Don't treat equality and member predicates in the same way; only
the former are symmetric in their arguments.
* test/lisp/emacs-lisp/bytecomp-tests.el
(byte-opt-testsuite-arith-data): Add test cases.
2020-08-19 15:26:34 +02:00
Anders Lindgren
dd6fa00fa3 Fix #'(lambda ...) font locking
* lisp/emacs-lisp/lisp-mode.el (lisp--el-non-funcall-position-p):
Fontize #'(lambda ...) better (bug#23465).
2020-08-19 14:19:12 +02:00
Lars Ingebrigtsen
ace7eeb505 Remove some compat code from chart.el
* lisp/emacs-lisp/chart.el (chart-face-list):
set-face-background-pixmap is always defined.
2020-08-18 23:19:09 +02:00
Glenn Morris
013ddd1e5d Merge from origin/emacs-27
cf0ee6f49b ; spelling fixes
16f4f26632 Fix startup working dir bug on NeXTSTEP
2020-08-18 07:51:05 -07:00
Clément Pit-Claudel
82893e9e8e Fix ert ability to peek inside structures when comparing unequal values
* lisp/emacs-lisp/ert.el (ert--explain-equal-rec): Treat records
as arrays (bug#40562).  Also add support for cl-structs.
2020-08-18 16:06:35 +02:00
Andrew Whatson
fc9b68636b * Fix async compilation `comp-eln-load-path' effectiveness (bug#42909)
* lisp/emacs-lisp/comp.el (comp-run-async-workers): Forward
	`comp-eln-load-path' to async workers.
2020-08-18 11:34:27 +02:00
Andrea Corallo
40de06390d * Remove a false permission related error while native compiling
* lisp/emacs-lisp/bytecomp.el (byte-compile-file): Do not crash if
	native compiling we have no permission to create the .elc
	file.  We are not creating it.
2020-08-17 18:04:23 +02:00
Andrea Corallo
da54406077 Allow for native compiling .el.gz files
This is needed for installed instances compiled with NATIVE_FAST_BOOT

	* src/comp.c (maybe_defer_native_compilation): Search for .el.gz
	too as a source if the .el is not found.
	(Fcomp_el_to_eln_filename): Remove the .gz in case to
	generate the hash.

	* lisp/emacs-lisp/comp.el (comp-valid-source-re): New defconst.
	(comp-run-async-workers, native-compile-async): Make use of
	`comp-valid-source-re'.
2020-08-17 18:04:23 +02:00
Andrea Corallo
b6238d826e * Deferred compilation must always compile despite source file timestamp
* lisp/emacs-lisp/comp.el (comp-run-async-workers): Always compile
	if load is set.
2020-08-17 18:04:23 +02:00
Andrea Corallo
377ffdb528 * Do not fail if more then one level of directories has to be created
* lisp/emacs-lisp/comp.el (native-compile-async): Call
	make-directory if necessary.
2020-08-17 18:04:22 +02:00
Andrea Corallo
df774c4947 * Prevent recursive load
Prevent autoload to kicks in while running `native-compile-async'.
Autoload cannot be used safely by functions serving deferred
compilation as a circular load can be triggered if the dependency is
not native compiled already.

	* lisp/emacs-lisp/comp.el (warnings): Add require.
2020-08-17 18:04:22 +02:00
Andrea Corallo
88b860ef6c Make comp-deferred-compilation a simple global and set it on by default
* src/comp.c (comp_deferred_compilation): Doc update and set it to
	true by default.

	* lisp/emacs-lisp/comp.el (comp-deferred-compilation): Remove
	customize.
2020-08-17 18:04:22 +02:00
Andrea Corallo
3224a44306 Move eln files into dedicated cache directories
When loading a elc file search for a corresponding eln one into
`comp-eln-load-path' directories and load it if available.
`comp-eln-load-path' contains by default two directory (user and
system one).

	* src/pdumper.c (dump_do_dump_relocation): While resurrecting from
	load set eln cache sys dir in `Vcomp_eln_load_path'.

	* src/lread.c (maybe_swap_for_eln): New function.
	(Fload): Clean-up some now unnecessary code going
	back to the master one.
	(Fload): Make use of Vcomp_eln_to_el_h for the reverse file
	look-up.
	(openp_add_middle_dir_to_suffixes)
	(openp_max_middledir_and_suffix_len, openp_fill_filename_buffer):
	Remove functions.
	(openp): As for Fload revert code modifications.
	(openp): When a .elc file is being loaded check if a corresponding
	eln can be loaded in place.

	* src/comp.c (ELN_FILENAME_HASH_LEN): New macro.
	(comp_hash_string): New function.
	(hash_native_abi): Make use of 'comp_hash_string'.
	(hash_native_abi): Change `comp-native-path-postfix' format.
	(Fcomp_el_to_eln_filename): New function.
	(Fcomp__compile_ctxt_to_file): Have file_name as a input.
	(Vcomp_eln_to_el_h, Vcomp_eln_load_path): New global varaibles.

	* lisp/startup.el (normal-top-level): Add user eln cache directory
	in `comp-eln-load-path'.

	* lisp/help-fns.el (find-lisp-object-file-name): Reverse look-up
	files using `comp-eln-to-el-h'.

	* lisp/files.el (locate-file): Likewise.

	* lisp/emacs-lisp/find-func.el (find-library-name): Likewise.

	* lisp/emacs-lisp/comp.el (comp-output-directory)
	(comp-output-base-filename, comp-output-filename): Remove function.
	(comp-compile-ctxt-to-file): Create parent directories if
	necessary.
	(comp-run-async-workers, native-compile, native-compile-async):
	Make use `comp-el-to-eln-filename'.
2020-08-17 18:04:22 +02:00
Stefan Kangas
4344a3cfb7 Make Emacs 20 compat code in derived.el obsolete
* lisp/emacs-lisp/derived.el (derived-mode-setup-function-name):
Declare obsolete.  This was for compatibility with Emacs 20 or older.
2020-08-14 13:07:26 +02:00
Stefan Kangas
874ba85363 Remove many items obsolete since Emacs 23.1
Emacs 23.1 was five major releases and over a decade ago.
This list can be reviewed before to the next release, but for now
hopefully this motivates any needed external updates.
Ref: https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg02198.html

* lisp/abbrev.el (pre-abbrev-expand-hook):
* lisp/bookmark.el (bookmark-read-annotation-text-func)
(bookmark-jump-noselect):
* lisp/buff-menu.el (buffer-menu-mode-hook):
* lisp/cus-edit.el (custom-mode-hook, custom-mode):
* lisp/dirtrack.el (dirtrack-debug-toggle, dirtrack-debug):
* lisp/emacs-lisp/crm.el (crm-minibuffer-complete)
(crm-minibuffer-completion-help)
(crm-minibuffer-complete-and-exit):
* lisp/emacs-lisp/easymenu.el
(easy-menu-precalculate-equivalent-keybindings):
* lisp/emacs-lisp/lisp-mode.el (lisp-mode-auto-fill):
* lisp/epa.el (epa-display-verify-result):
* lisp/epg.el (epg-passphrase-callback-function):
* lisp/eshell/eshell.el (eshell-report-bug):
* lisp/ffap.el (ffap-bug, ffap-submit-bug):
* lisp/files.el (locate-file-completion):
* lisp/hi-lock.el (hi-lock-face-history, hi-lock-regexp-history):
* lisp/hilit-chg.el (highlight-changes-initial-state)
(highlight-changes-active-string)
(highlight-changes-passive-string, global-highlight-changes):
* lisp/international/mule-cmds.el (nonascii-insert-offset)
(nonascii-translation-table):
* lisp/international/mule-diag.el (non-iso-charset-alist):
* lisp/international/mule-util.el (detect-coding-with-priority):
* lisp/international/mule.el (charset-id, charset-bytes)
(charset-list, char-valid-p, generic-char-p)
(char-coding-system-table, make-coding-system)
(set-coding-priority)
* lisp/mail/rmail.el (rmail-message-filter):
* lisp/minibuffer.el (complete-in-turn, dynamic-completion-table)
(completion-common-substring)
(minibuffer-local-must-match-filename-map):
* lisp/mouse.el (mouse-major-mode-menu, mouse-popup-menubar)
(mouse-popup-menubar-stuff):
* lisp/net/newst-treeview.el (newsticker-groups-filename):
* lisp/obsolete/tpu-edt.el (tpu-have-ispell, GOLD-map):
* lisp/password-cache.el (password-read-and-add):
* lisp/shell.el (shell-dirtrack-toggle):
* lisp/subr.el (forward-point, redisplay-end-trigger-functions)
(process-filter-multibyte-p, set-process-filter-multibyte):
* lisp/t-mouse.el (t-mouse-mode):
* lisp/term/w32-win.el (w32-focus-frame, w32-select-font):
* lisp/textmodes/ispell.el (ispell-aspell-supports-utf8):
* lisp/textmodes/remember.el (remember-buffer):
* lisp/tooltip.el (tooltip-hook):
* lisp/url/url-util.el (url-generate-unique-filename):
* lisp/url/url-vars.el (url-temporary-directory):
* lisp/vc/vc-hooks.el (vc-workfile-version)
(vc-default-working-revision):
* lisp/vc/vc-mtn.el (vc-mtn-command):
* lisp/vc/vc.el (vc-revert-buffer):
* lisp/vcursor.el (vcursor-toggle-vcursor-map):
Remove items, obsolete since Emacs 23.1.
* lisp/abbrev.el (expand-abbrev):
* lisp/epg.el (epg-context): Change
'epg-passphrase-callback-function' call to 'epa-' alternative.
* lisp/eshell/em-rebind.el (eshell-cannot-leave-input-list): Don't
refer to removed function 'forward-point'.
* test/manual/etags/c-src/abbrev.c (Fexpand_abbrev):
(syms_of_abbrev): Don't run removed hook 'pre-abbrev-expand-hook'.
* lisp/international/mule.el (transform-make-coding-system-args):
Declare obsolete.
* lisp/progmodes/idlwave.el:
Update reference to removed function 'char-valid-p'.
* lisp/gnus/mml2015.el (epg-encrypt-string):
* lisp/gnus/mml1991.el (epg-make-context):
* lisp/gnus/mml-smime.el (autoload):
Remove autoload of removed 'epg-passphrase-callback-function'.
* lisp/minibuffer.el (completion-extra-properties):
Remove support for `completion-common-substring'.
* lisp/obsolete/tpu-edt.el (tpu-toggle-overwrite-mode)
Remove support for removed `spell' package.
* src/coding.c (syms_of_coding):
* doc/misc/efaq.texi:
* doc/emacs/frames.texi (Menu Mouse Clicks):
* doc/misc/url.texi (Customization): Doc fixes.
; * etc/NEWS: List removed items.
2020-08-14 13:07:26 +02:00
Andrea Corallo
3882e8fd24 * Fix excessive echo area usage
* lisp/emacs-lisp/comp.el (comp-run-async-workers): Use
	`with-temp-file' to fill temp-file.
2020-08-14 08:33:07 +02:00
Paul Eggert
cf0ee6f49b ; spelling fixes 2020-08-13 16:48:16 -07:00
Tobias Zawada
975acf5737 Handle nil load-path element in read-library-name
* lisp/emacs-lisp/find-func.el (read-library-name): Fix handling of
nil 'load-path' element.  (Bug#41998)

Copyright-paperwork-exempt: yes
2020-08-13 18:59:41 +02:00
Andrea Corallo
46e7613ad3 Merge remote-tracking branch 'savannah/master' into HEAD 2020-08-13 12:22:07 +02:00
Andrea Corallo
f6502f9592 ; * lisp/emacs-lisp/comp.el (comp-deferred-compilation): Fix doc. 2020-08-13 12:21:28 +02:00
Jonas Bernoulli
7cb029d4d3 ; * lisp/emacs-lisp/autoload.el: Begin summary line with three semicolons. 2020-08-13 11:34:49 +02:00
Jonas Bernoulli
0bc9e7b8f5 Merge two conditions and fix indentation
The motivation behind this change is that the indentation of some
lines was outright wrong.  If we address that issue, then we might
as well also address the issue that some code is needlessly nested
an additional level.  That we can fix by merging the conditions.

By doing these two changes in on commit we have to change the fewest
lines.  Even though we are moving to using just spaces for indentation
of the modified lines, other lines in the same function are left alone
and continue to us tabs+spaces for indentation.  That is not "wrong",
but just the style we are slowly migrating away from when touching
lines for other reasons.

Discussed in bug#42397.

* lisp/emacs-lisp/eldoc.el (eldoc-minibuffer-message): Merge two
conditions and fix indentation.
2020-08-13 11:30:16 +02:00
Stefan Kangas
a5a0a9c9ca Remove Emacs 23 compat code from checkdoc.el
* lisp/emacs-lisp/checkdoc.el (checkdoc-run-hooks): Redefine as
obsolete function alias for 'run-hook-with-args-until-success'.
(checkdoc-this-string-valid-engine)
(checkdoc-file-comments-engine): Adjust callers.
2020-08-12 15:45:52 +02:00
Lars Ingebrigtsen
db3a7dfccc Remove compat code from autoload.el
* lisp/emacs-lisp/autoload.el (autoload--make-defs-autoload):
register-definition-prefixes is in subr.el, so it shouldn't be
necessary to check whether it's defined.
2020-08-11 21:21:13 +02:00
Noam Postavsky
9b9473ad75 Fix (end-of-defun N) for N >= 2
* lisp/emacs-lisp/lisp.el (end-of-defun): Only skip to next line when
after end of defun when ARG is 1 or less.
* test/lisp/emacs-lisp/lisp-tests.el (end-of-defun-twice): New
test (bug#24427).
2020-08-11 16:02:11 +02:00
Andrea Corallo
dd814b0a58 * lisp/emacs-lisp/bytecomp.el: Guard against double native compilation. 2020-08-09 15:03:53 +02:00
Andrea Corallo
12a982d978 Merge remote-tracking branch 'savannah/master' into HEAD 2020-08-09 15:03:23 +02:00
Damien Cassou
8e82baf5a7 Add the new library hierarchy.el
* lisp/emacs-lisp/hierarchy.el: New file.
2020-08-09 14:48:22 +02:00
Lars Ingebrigtsen
44b31c1ed7 Make the name column in 'list-buffers' have a dynamic width
* lisp/buff-menu.el (Buffer-menu--dynamic-name-width): New
function (bug#30692).
(Buffer-menu-name-width): Default to using it.
(list-buffers--refresh): Call it.

* lisp/emacs-lisp/seq.el (seq-max): Add autoload cookie.
2020-08-08 11:37:43 +02:00