Commit graph

171253 commits

Author SHA1 Message Date
Alan Mackenzie
ec0da34469 Merge branch 'master' into feature/positioned-lambdas 2024-03-10 18:21:20 +00:00
Alan Mackenzie
569fc297b8 Use ;POS... position information in backtraces
Also code up adding this information for defvars, defconsts,
and cl-defmethods.  This is progress on bug #67455.

* lisp/emacs-lisp/byte-run.el (byte-run-position-vec): New
function.
(byte-run--fun-put-new-string): Tidy up the coding.
(byte-run-posify-existing-defaliases-1): Actually fset the
result to the pertinent symbol.
(byte-run-posify-existing-defvars/consts-1)
(byte-run-posify-existing-defvars/consts): New functions.

* lisp/emacs-lisp/bytecomp.el: Remove commented out old code.

* lisp/emacs-lisp/cl-generic.el (cl-defmethod): Insert the
;POS... structure into the form being defined, but using
explicit code rather than the (defining-symbol ...) declare
clause.  Add a byte-run-defined-form property to cl-defmethod
so the reader will position the generated symbols.

* lisp/emacs-lisp/cl-print.el (cl-print-object/cons): On
encountering a lambda or closure form, print the defining
symbol in braces.
(cl-print-object/compiled-function): Print the defining symbol
in braces.

* lisp/emacs-lisp/comp.el (comp-intern-func-in-ctxt): Pass
`also-pos' to `documentation' to get the doc's
;POS... information too.

* lisp/emacs-lisp/macroexp.el (macroexp--expand-all): Add code
to the defvar/defconst pcase arm to set `defining-symbol' to
the var/const being defined, and to strip the position from
that symbol.

* lisp/loadup.el: Set symbols-with-pos-enabled to t sooner.
Call the new function byte-run-posify-existing-defvars/consts
to posify variables/constants defined early in the boot
process.

* lisp/startup.el (normal-top-level): Set `debug' to debugger
for interactive sessions.

* src/data.c (syms_of_data): Give `defalias' a
byte-run-defined-form propery of 1, so that the reader will
position the symbol it defines.

* src/eval.c (Finternal__define_uninitialized_variable): Posify
the doc string argument, or give the symbol a
byte-run--early-defvar-const property early in the boot
procedure.
(handle_defvar_defconst_positions): New function.
(Fmacroexpand): Call the above function for a defvar/defconst.
(eval_sub): Also call the new function for a defvar/defconst.
(syms_of_eval): Declare two new symbols in byte-run.el.  Give
`defvar' and `defconst' byte-run-defined-form properties so as
to trigger the reader to position new symbols.
2024-03-09 21:58:43 +00:00
Stefan Monnier
d707135952 Merge branch 'make-ts-derived-modes' 2024-03-09 10:38:10 -05:00
Stefan Monnier
357eb52e09 (eglot-server-programs): Comment and whitespace only change
* lisp/progmodes/eglot.el (eglot-server-programs): Add comment.
Make the definition fit into 80 columns.
2024-03-09 10:29:52 -05:00
Stefan Monnier
41de53d4a1 Simplify mode-indexed tables in packages
Now that we use extra-parents to group alternative major modes,
some tables can be simplified to mention only the group's leader.

* lisp/align.el (align-c++-modes, align-rules-list):
Don't bother listing TS alternatives.
(align-perl-modes): Don't bother listing CPerl alternative.

* lisp/info-look.el (perl-mode): Simplify.

* lisp/cedet/semantic/symref/grep.el (semantic-symref-filepattern-alist):
Don't bother listing TS alternatives.

* lisp/emulation/viper.el (viper-vi-state-mode-list): Don't bother
listing CPerl alternative.

* lisp/progmodes/gud.el (gud-tooltip-activate-mouse-motions-if-enabled):
Take into account the modes hierarchy.
(gud-tooltip-modes): Don't bother listing TS alternatives.

* .dir-locals.el (c-ts-mode): Simplify.
2024-03-09 10:29:32 -05:00
Stefan Monnier
c79a509384 Add non-TS modes as extra parent of TS modes (bug#68246)
Record the fact that TS modes are alternatives to the non-TS
modes using the new `derived-mode-add-parents` functionality.
Do the same for long standing similar issues with CPerl-mode.

* lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode):
* lisp/textmodes/toml-ts-mode.el (toml-ts-mode):
* lisp/textmodes/html-ts-mode.el (html-ts-mode):
* lisp/textmodes/css-mode.el (css-ts-mode):
* lisp/progmodes/typescript-ts-mode.el (typescript-ts-mode, tsx-ts-mode):
* lisp/progmodes/sh-script.el (bash-ts-mode):
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode):
* lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode):
* lisp/progmodes/python.el (python-ts-mode):
* lisp/progmodes/lua-ts-mode.el (lua-ts-mode):
* lisp/progmodes/json-ts-mode.el (json-ts-mode):
* lisp/progmodes/js.el (js-ts-mode):
* lisp/progmodes/java-ts-mode.el (java-ts-mode):
* lisp/progmodes/heex-ts-mode.el (heex-ts-mode):
* lisp/progmodes/go-ts-mode.el (go-ts-mode, go-mod-ts-mode):
* lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode):
* lisp/progmodes/dockerfile-ts-mode.el (dockerfile-ts-mode):
* lisp/progmodes/csharp-mode.el (csharp-ts-mode):
* lisp/progmodes/cmake-ts-mode.el (cmake-ts-mode):
* lisp/progmodes/c-ts-mode.el (c-ts-mode, c++-ts-mode):
Add non-TS mode as extra parent.

* lisp/progmodes/cperl-mode.el (cperl-mode): Add `perl-mode` as
extra parent.
2024-03-09 10:29:06 -05:00
Stefan Monnier
454a55dbd9 (dir-locals-collect-variables): Avoid spurious safety warnings
* lisp/files.el (dir-locals-collect-variables): Silence warnings for
extra parents' variables.
2024-03-09 10:29:06 -05:00
Andrea Corallo
3be70a13d7 Run 'syncdoc-update-type-hierarchy'.
* doc/lispref/elisp_type_hierarchy.jpg: Update.
	* doc/lispref/elisp_type_hierarchy.txt: Likewise.
2024-03-09 16:20:17 +01:00
Andrea Corallo
cc2579c10b * 'syncdoc-type-hierarchy.el' update due to recent changes
* admin/syncdoc-type-hierarchy.el (syncdoc-all-types): Update.
2024-03-09 16:19:49 +01:00
Eli Zaretskii
1ea3b36902 Auto-commit of loaddefs files. 2024-03-09 04:24:30 -05:00
Eli Zaretskii
7405f0340b Merge from origin/emacs-29
b9f7a2274f ; Improve documentation of 'minibuffer-allow-text-propert...
5ffcca121b ; Improve documentation of image properties
6e801077ae ; * src/composite.c (composition_compute_stop_pos): Add c...
2024-03-09 04:18:53 -05:00
Po Lu
5d9a8c3704 Enable stack overflow recovery on Android
* src/sysdep.c (handle_sigsegv): Return after restoring the
original signal handler, which should proceed to call debuggerd
to generate a tombstone.
(init_sigsegv): Save the original signal handler on Android, to
be restored after a signal is received.
(init_signals): Call init_sigsegv on Android.
2024-03-09 16:13:50 +08:00
Eli Zaretskii
a4473afefe Fix case-sensitivity in 'complete-tag'
* lisp/progmodes/etags.el (complete-tag): Bind
'completion-ignore-case', so that 'completion-in-region' is
affected by it.  This fixes a bug made in 30 Apr 2010, when this
function was refactored to use
'tags-completion-at-point-function'.  Reported by Morgan Willcock
<morgan@ice9.digital>.
2024-03-09 10:09:36 +02:00
Charalampos Mitrodimas
966e1be5b3 Do interactive mode tagging for locate.el
* lisp/locate.el (locate-tags, locate-find-directory)
(locate-find-directory-other-window): Do interactive mode
tagging.  (Bug#69619)

Copyright-paperwork-exempt: yes
2024-03-09 09:26:03 +02:00
Stefan Monnier
345cdd7a70 (eieio--generic-subclass-specializers): Autoload class
* lisp/emacs-lisp/eieio-core.el (eieio--generic-subclass-specializers):
Don't forget to handle autoloaded classes.
2024-03-08 11:57:22 -05:00
Stefan Monnier
5beb56fb53 EIEIO: Fix regession (bug#69631)
Not sure why earlier tests did not catch it, but there are more
places where we bump into problems because `eieio--class-precedence-list`
now returns also non-EIEIO classes.

* lisp/obsolete/eieio-compat.el
(eieio--generic-static-object-generalizer):
* lisp/emacs-lisp/eieio-core.el (eieio--generic-generalizer)
(eieio--generic-subclass-specializers): Handle non-EIEIO parents.

* test/lisp/emacs-lisp/eieio-tests/eieio-test-methodinvoke.el
(eieio-test-method-order-list-7): Adjust test.
2024-03-08 11:24:18 -05:00
Stefan Monnier
055e31f1d0 eieio-core.el: Try and fix bug#69631
* lisp/emacs-lisp/eieio-core.el (eieio--class-precedence-c3)
(eieio--class-precedence-dfs, eieio--class-precedence-bfs): Use
`cl--class-parents` since some of the parents aren't EIEIO classes.
2024-03-08 10:47:01 -05:00
Andrea Corallo
966d0a62a1 * Fix capitalize entry in comp-known-type-specifiers (bug#69631)
* lisp/emacs-lisp/comp-common.el (comp-known-type-specifiers): Fix
'capitalize' entry.
2024-03-08 14:36:03 +01:00
Eli Zaretskii
b9f7a2274f ; Improve documentation of 'minibuffer-allow-text-properties'
* doc/lispref/minibuf.texi (Text from Minibuffer): Document the
default value of 'minibuffer-allow-text-properties'.
2024-03-08 15:06:37 +02:00
Po Lu
cc75e103dd Update android_wc_lookup_string
* src/android.c (android_wc_lookup_string): Don't clear compose
state upon modifier key depress.
2024-03-08 20:47:51 +08:00
Stefan Monnier
bd017175d4 Simplify type hierarchy operations
Now that built-in types have classes that describe their
relationships exactly like struct/eieio/oclosure classes,
we can the code that navigates that DAG.

* lisp/emacs-lisp/cl-generic.el (cl--generic-struct-tag): Move to
`eieio-core.el`.
(cl--generic-type-specializers): Rename from
`cl--generic-struct-specializers`.  Make it work for any class.
(cl--generic-typeof-generalizer, cl--generic-oclosure-generalizer): Use it.
(cl--generic-struct-generalizer): Delete generalizer.
(cl-generic-generalizers :extra "cl-struct"): Delete method.
(prefill 0 cl--generic-generalizer): Move to after the typeof.
(cl-generic-generalizers :extra "typeof"): Rewrite to use
classes rather than `cl--all-builtin-types`.
(cl-generic--oclosure-specializers): Delete function.

* lisp/emacs-lisp/cl-preloaded.el (cl--direct-supertypes-of-type)
(cl--typeof-types, cl--all-builtin-types): Delete constants.

* lisp/emacs-lisp/comp-cstr.el (comp--typeof-builtin-types):
Delete constant.
(comp--cl-class-hierarchy): Simplify.
(comp--compute-typeof-types): Simplify now that
`comp--cl-class-hierarchy` and `comp--all-classes` work for built-in
types as well.
(comp--direct-supertypes): Just use `cl--class-parents`.
(comp-supertypes): Simplify since typeof-types should now be complete.

* lisp/emacs-lisp/eieio-core.el (eieio-defclass-autoload):
Use `superclasses` argument, so we can find parents before it's loaded.
(eieio--class-precedence-c3, eieio--class-precedence-dfs):
Don't add a `eieio-default-superclass` parent any more.
(eieio--class/struct-parents): Delete function.
(eieio--class-precedence-bfs): Use `eieio--class-parents` instead.
Don't stop when reaching `eieio-default-superclass`.
(cl--generic-struct-tag): Move from `cl-generic.el`.
2024-03-08 02:04:59 -05:00
Stefan Monnier
945af4d9d1 eieio-core.el: Always put a parent in the parents of a class
* lisp/emacs-lisp/eieio-core.el (eieio-defclass-internal):
Always put a parent in the `parents` slot of the class.

* lisp/emacs-lisp/eieio.el (eieio-class-parents): Remove the
`eieio-default-superclass` if it's the only parent.
(child-of-class-p): Handle all classes in the parents.
(eieio-default-superclass): Adjust docstring.
2024-03-08 02:04:59 -05:00
Stefan Monnier
7c127fc965 Make "parentless" structs inherit from their builtin type
* lisp/emacs-lisp/cl-preloaded.el (cl--struct-register-child):
Register child only in struct parents.
(cl-struct-define): Put the "type" as parent of parentless :type structs.
Copy slots only from struct parent classes.
(cl-structure-object): Set (manually) its parent to `record`
and remove assertion that it has no parents.
2024-03-08 02:04:57 -05:00
Stefan Monnier
76e9c761a4 * lisp/emacs-lisp/oclosure.el (oclosure): Make it a subtype of function 2024-03-08 02:04:11 -05:00
Stefan Monnier
4fdcbd09af cl-preloaded.el (built-in-class): New type
Add classes describing the built-in types.

* lisp/emacs-lisp/cl-preloaded.el (built-in-class): New type.
(cl--define-built-in-type): New aux macro.
(all built-in types): "Define" them with it.
(cl--builtin-type-p): New aux function.
(cl--struct-name-p): Use it.
(cl--direct-supertypes-of-type, cl--typeof-types, cl--all-builtin-types):
Move the definitions to after the built-in classes are defined,
and rewrite to make use of those classes.

* lisp/emacs-lisp/cl-extra.el (cl-describe-type):
Accept two (unused) optional args, for use with `describe-symbol-backends`.
(describe-symbol-backends): Simplify accordingly and
add ourselves at the end.
(cl--class-children): New function.
(cl--describe-class): Use it.  Also don't show a silly empty list of slots
for the built-in types.
2024-03-08 02:03:55 -05:00
Stefan Monnier
9830421e96 comp-cstr.el: Fix a minor error and prepare for upcoming changes
* lisp/emacs-lisp/comp-cstr.el (comp--cl-class-hierarchy): Add `atom`
and `t` only to those types whose "allparents" is clearly not complete.
(comp--compute--pred-type-h): Store the cstr rather than the type
in the hash-table, as expected by `comp--pred-to-cstr`.
2024-03-08 02:03:55 -05:00
Po Lu
e4d1739a29 Declare 124 new Android permissions
* doc/emacs/android.texi (Android Environment): Document new
permissions and delete recently introduced permissions from the
list for Android 5.1 and earlier.

* java/AndroidManifest.xml.in: Declare 124 new permissions to
enable invoking features they protect from code running inside
Emacs.
2024-03-08 10:58:17 +08:00
Harald Jörg
00f86833ac ; perl-mode, cperl-mode: Fix $\" in strings (Bug#69604)
* lisp/progmodes/perl-mode.el (perl-syntax-propertize-function):
Add to syntax-propertize-rules that $ is punctuation in strings.

* lisp/progmodes/cperl-mode.el (cperl-find-pods-heres): capture $\
to catch the edge case of "$\"".  Make $ a punctuation char in
strings and comments.

* test/lisp/progmodes/cperl-mode-tests.el (cperl-test-bug-69604):
New testcases with various combinations of $ " \
2024-03-08 00:41:32 +01:00
Jim Porter
e42f14f0e0 Support expanding Eshell globs for remote file names
* lisp/eshell/em-glob.el (eshell-glob-chars-regexp): New function...
(eshell-glob-regexp): ... use it.
(eshell-glob-p): New function...
(eshell-glob-convert): ... use it, and return the deepest start
directory possible.

* lisp/eshell/esh-util.el (eshell-split-path): Rename to...
(eshell-split-path): ... this, and account for remote file names.

* test/lisp/eshell/em-glob-tests.el
(em-glob-test/convert/current-start-directory)
(em-glob-test/convert/relative-start-directory)
(em-glob-test/convert/absolute-start-directory)
(em-glob-test/convert/remote-start-directory): New tests (bug#69592).
2024-03-07 12:21:06 -08:00
Jim Porter
aec0f610cb ; * test/lisp/net/eww-tests.el (eww-test--response-function): Fix typo. 2024-03-07 12:19:28 -08:00
Mattias Engdegård
90c2e287b7 Revert "Suppress docstring control char warning in macro-generated function"
This reverts commit eeb89a5cb2.
It is no longer needed now that (lambda (...) "string") does not
have a doc string (bug#69387).
2024-03-07 14:29:36 +01:00
Mattias Engdegård
61b2f5f96b Single string literal in body is return value only, not doc string
A function or macro body consisting of a single string literal now only
uses it as a return value.  Previously, it had the dual uses as return
value and doc string, which was never what the programmer wanted and
had some inconvenient consequences (bug#69387).

This change applies to `lambda`, `defun`, `defsubst` and `defmacro`
forms; most other defining forms already worked in the sensible way.

* lisp/emacs-lisp/bytecomp.el (byte-compile-lambda):
Don't use a lone string literal as doc string.
* test/lisp/emacs-lisp/bytecomp-resources/warn-wide-docstring-defun.el
(foo): Update docstring warning test.
* doc/lispref/functions.texi (Function Documentation): Update.
* etc/NEWS: Announce.
2024-03-07 13:47:53 +01:00
Eli Zaretskii
5ffcca121b ; Improve documentation of image properties
* lisp/image.el (create-image, image-property): Add to do strings
link to description of image properties in ELisp manual.

* doc/lispref/display.texi (Defining Images): Fix example and add
cross-reference to where image properties are described.
(Image Descriptors): Add index entry.
2024-03-07 10:11:44 +02:00
Juri Linkov
8aabd83574 * lisp/follow.el: Put property 'isearch-scroll' on 'follow-recenter'. 2024-03-07 09:56:02 +02:00
Jim Porter
59e470dd5d When navigating through history in EWW, don't keep adding to 'eww-history'
This resolves an issue where navigating back and then forward kept
adding new history entries so you could never hit the "end" (bug#69232).

* lisp/net/eww.el (eww-before-browse-history-function): New option.
(eww-history-position): Add docstring.
(eww-mode-map, eww-context-menu): Use correct predicates for when to
enable back/forward.
(eww-save-history): Save history entry in its original place when
viewing a historical page.
(eww--before-browse): New function...
(eww, eww-follow-link, eww-readable): ... call it.
(eww-render): Don't set 'eww-history-position' here...
(eww--before-browse): ... instead, set it here.
(eww-back-url): Set 'eww-history-position' based on the result of
'eww-save-history'.
(eww-forward-url): Set 'eww-history-position' directly, since
'eww-save-history' no longer adds a new entry in this case.
(eww-delete-future-history, eww-clone-previous-history): New functions.

* test/lisp/net/eww-tests.el: New file.

* etc/NEWS: Announce this change.
2024-03-06 14:36:23 -08:00
Michael Albinus
b12059e4c3 Tramp fixes after running regression tests on Android
* lisp/net/tramp-adb.el (tramp-adb-maybe-open-connection):
Unset environment variable PS2.

* lisp/net/tramp-androidsu.el (tramp-default-host-alist):
Don't add an entry; `tramp-default-host' is set properly.
(tramp-androidsu-maybe-open-connection): Don't set connection
property "remote-namespace" to nil, this is the default anyway.
Don't set connection property "remote-path", we use
connection-local values instead.  Unset environment variable PS2.
Dump shell options after setting all of them.
(tramp-androidsu-handle-make-process): Don't use hard-coded user "root".
(tramp-androidsu-connection-local-default-variables): New defvar.
Add it to connection-local profiles.
2024-03-06 17:51:42 +01:00
Andrea Corallo
415604c7a7 Rename type_hierarchy.* -> elisp_type_hierarchy.*
* doc/lispref/elisp_type_hierarchy.txt: Renamed.
* doc/lispref/elisp_type_hierarchy.jpg: Likewise.
* doc/lispref/Makefile.in (auxfiles)
($(buildinfodir)/elisp_type_hierarchy.txt)
($(buildinfodir)/elisp_type_hierarchy.jpg): Update.
* admin/syncdoc-type-hierarchy.el (syncdoc-update-type-hierarchy0): Likewise.
* Makefile.in (install-info, uninstall): Likewise.
2024-03-06 17:13:38 +01:00
Andrea Corallo
a5d3ce38fa Re-generate type_hierarchy.*
* doc/lispref/type_hierarchy.txt: Update.
* doc/lispref/type_hierarchy.jpg: Likewise.
2024-03-06 17:13:38 +01:00
Andrea Corallo
9526bd3cf8 * Update syncdoc to dump all preloaded type hierarchy
* admin/syncdoc-type-hierarchy.el (syncdoc-file)
(syncdoc-emacs-repo-dir): New constants.
(syncdoc-lispref-dir): Make use of.
(syncdoc-all-types): New function.
(comp--direct-supertypes): Declare.
(syncdoc-hierarchy): Update.
(syncdoc-update-type-hierarchy0): Rename from
'syncdoc-update-type-hierarchy' and make non interactive.
(syncdoc-update-type-hierarchy): New function.
2024-03-06 17:13:38 +01:00
Po Lu
1a5850a3af Don't report files from read-only adb partitions as writable
* lisp/net/tramp-adb.el (tramp-adb-handle-file-writable-p):
Ignore the file-attributes cache, since file mode is not a
reliable indicator of writability.
2024-03-06 10:48:28 +08:00
Po Lu
845d334c10 ; Fix last change
* lisp/net/tramp-androidsu.el
(tramp-androidsu-generate-wrapper): Arguments to fset must be
symbols rather than functions.
2024-03-06 10:20:36 +08:00
Vincenzo Pupillo
d5f11e890c * Makefile.in (install-info): Fix target (bug#69569). 2024-03-05 22:37:40 +01:00
Eli Zaretskii
33976ecf24 ; * etc/NEWS: Fix wording and punctuation of a recently added entry. 2024-03-05 19:32:29 +02:00
Juri Linkov
3cb0614507 * lisp/tab-bar.el (tab-bar-tab-post-select-functions): New hook (bug#69093).
(tab-bar-select-tab): Call tab-bar-tab-post-select-functions at the end.
2024-03-05 19:14:28 +02:00
Juri Linkov
f16a85e317 New property 'context-menu-functions' (bug#62250)
* lisp/iimage.el (iimage-mode-buffer): Set context-menu-functions
text property to '(image-context-menu)'.

* lisp/image.el (image-context-menu): New function.
(put-image): Set context-menu-functions overlay property
to '(image-context-menu)'.
(insert-image, insert-sliced-image): Set context-menu-functions
text property to '(image-context-menu)'.

* lisp/mouse.el (context-menu-map): Use mouse-posn-property
'context-menu-functions' and call its funs at the end.
2024-03-05 18:50:51 +02:00
Juri Linkov
9cf0f254ba * lisp/net/dictionary.el: More fixes for dictionary-new-matching (bug#69312)
(dictionary-new-matching): Change the order of standard calls
to be the same as in 'dictionary-new-search'.
Use new function 'dictionary-new-matching-internal'.
(dictionary-new-matching-internal): New function based on
'dictionary-new-search-internal'.
2024-03-05 18:42:49 +02:00
Andrea Corallo
5155f5b1cc * Makefile.in (uninstall): Clean-up type_hierarchy* files. 2024-03-05 15:21:44 +01:00
Andrea Corallo
4673b99071 * Makefile.in (install-info): Install type_hierarchy* files as well. 2024-03-05 15:15:00 +01:00
Andrea Corallo
3023976b48 * Copy type hierarchy representation to the info dir
* doc/lispref/Makefile.in (auxfiles)
($(buildinfodir)/type_hierarchy.txt)
($(buildinfodir)/type_hierarchy.jpg): New targets.
($(buildinfodir)/elisp.info): Add dependecy.
2024-03-05 12:06:44 +01:00
Michael Albinus
dcdb066025 Adapt tramp.texi
* doc/misc/tramp.texi (Quick Start Guide): Add androidsu.
(Inline methods): Make androidsu an own item.
2024-03-05 11:17:48 +01:00