Commit graph

7335 commits

Author SHA1 Message Date
Alan Mackenzie
ab7e5f9fac Merge branch 'master' into feature/positioned-lambdas 2024-03-24 15:50:26 +00:00
Alan Mackenzie
1de7a370d1 Fix over complicated handling of lambda positions
* lisp/emacs-lisp/backquote.el (backquote-process): Remove the
previously added code, restoring the file to the master
version.

* src/data.c (Ffset): Remove an obtrusive comma.

* src/keyboard.c (recursive_edit_1): bind
byte-compile-in-progress to nil.

* src/lread.c (Fload): bind byte-compile-in-progress to nil.
(readevalloop_early_eval): Correct the call of
byte-run-posify-lambda-form.  Strip the position from lambdas
by reassembling lists rather than altering existing structures.

* src/pdumper.c (dump_vectorlike): Now dump symbols with
position.

* test/lisp/erc/erc-tests.el (erc--with-dependent-type-match):
Restore to master version.
2024-03-24 15:43:19 +00:00
Andrea Corallo
c5de73a95a Fix native compilation for circular immediates (bug#67883)
* test/src/comp-resources/comp-test-funcs.el
(comp-test-67883-1-f): New function.

* lisp/emacs-lisp/comp.el (comp--collect-rhs)
(comp--ssa-rename-insn): Handle setimm aside to avoid unnecessary
immediate manipulation.
(comp--copy-insn-rec): Rename.
(comp--copy-insn): New function.
(comp--dead-assignments-func): Handle setimm aside to avoid
unnecessary.
2024-03-24 12:16:11 +01:00
F. Jason Park
b9bd78f78d Restore leading space to right-margin stamps in ERC
* lisp/erc/erc-stamp.el (erc-insert-timestamp-right): Insert a single
space character immediately before right-side stamps managed by
`erc-stamp--display-margin-mode'.  Include it as part of the
`timestamp' field.  This behavior was originally present in an earlier
draft of the changes for bug#60936, mainly to favor symmetry between
hard-wrapped fill styles and fill-wrap with regard to stamps.  It was
subsequently removed to simplify management, so that the `field' and
`display' intervals aligned.
* test/lisp/erc/erc-stamp-tests.el
(erc-stamp--display-margin-mode--right): Update expected output.

; test/lisp/erc/resources/fill/snapshots/merge-01-start.eld: Add space.
; test/lisp/erc/resources/fill/snapshots/merge-02-right.eld: Add space.
; test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld: Add space.
; test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-post-01.eld:
; Add space.
; test/lisp/erc/resources/fill/snapshots/merge-wrap-indicator-pre-01.eld:
; Add space.
; test/lisp/erc/resources/fill/snapshots/monospace-01-start.eld: Add space.
; test/lisp/erc/resources/fill/snapshots/monospace-02-right.eld: Add space.
; test/lisp/erc/resources/fill/snapshots/monospace-03-left.eld: Add space.
; test/lisp/erc/resources/fill/snapshots/monospace-04-reset.eld: Add space.
; test/lisp/erc/resources/fill/snapshots/spacing-01-mono.eld: Add space.
2024-03-23 15:10:32 -07:00
F. Jason Park
44be4fa8e6 Remove unused faces from various erc-goodies tests
; A note to anyone running ERC's test suite while bisecting and
; unlucky enough to land on this commit: apologies for the
; inconvenience.  It fails because it includes adjustments for fixes
; only introduced by the subsequent commit.  This is obviously
; objectionable but was done knowingly in order to duck the
; copyright-exemption threshold for new contributors.

* test/lisp/erc/erc-goodies-tests.el
(erc-controls-highlight--spoilers)
(erc-controls-highlight--inverse): Remove all mention of stricken
faces `erc-control-default-fg' and `erc-control-default-bg'.
(erc-controls-highlight/default-foreground)
(erc-controls-highlight/default-background): New tests.
(Bug#69860)
2024-03-23 15:10:32 -07:00
Joseph Turner
79c758187c Recompute :map when image :scale, :rotation, or :flip changes
Now, when transforming an image, its :map is recomputed to fit.
Image map coordinates are integers, so when computing :map,
coordinates are rounded.  To prevent an image from drifting from
its map after repeated transformations, 'create-image' now adds
a new image property :original-map, which is combined with the
image's transformation parameters to recompute :map.

* lisp/image.el (image-recompute-map-p): Add user option to
control whether :map is recomputed when an image is transformed.
(create-image): Create :map from :original-map and vice versa.
(image--delayed-change-size): Fix comment.
(image--change-size, image-rotate, image-flip-horizontally,
image-flip-vertically): Recompute image map after transformation
and mention 'image-recompute-map-p' in docstring.
(image--compute-map): Add function to compute a map from original
map.
(image--compute-original-map): Add function to compute an
original map from map.
(image--scale-map): Add function to scale a map based on :scale.
(image--rotate-map): Add function to rotate a map based on
:rotation.
(image--rotate-coord): Add function to rotate a map coordinate
pair.
(image--flip-map): Add function to flip a map based on :flip.
(image-increase-size, image-decrease-size, image-mouse-increase-size)
(image-mouse-decrease-size): Mention 'image-recompute-map-p' in
docstrings.
* etc/NEWS: Add NEWS entry.
* doc/lispref/display.texi (Image Descriptors): Document :original-map
and new user option 'image-recompute-map-p'.
* test/lisp/image-tests.el (image--compute-map-and-original-map):
Test 'image--compute-map' and 'image--compute-original-map'.
(image-tests--map-equal): Add equality predicate to compare image maps.
(image-create-image-with-map): Test that 'create-image' adds :map
and/or :original-map as appropriate.
(image-transform-map): Test functions related to transforming maps.
(Bug#69602)
2024-03-23 19:54:53 +02:00
Jim Porter
4b0f5cdb01 Add 'eww-readable-urls'
* lisp/net/eww.el (eww-readable-urls): New option.
(eww-default-readable-p): New function...
(eww-display-html): ... use it.

* test/lisp/net/eww-tests.el (eww-test/readable/default-readable): New
test.

* doc/misc/eww.texi (Basics): Document 'eww-readable-urls'.

* etc/NEWS: Announce this change (bug#68254).
2024-03-23 10:17:06 -07:00
Jim Porter
72972118e6 Allow toggling "readable" mode in EWW
Additionally, add an option to prevent adding a new history entry for
each call of 'eww-readable' (bug#68254).

* lisp/net/eww.el (eww-retrieve):

* lisp/net/eww.el (eww-readable-adds-to-history): New option.
(eww-retrieve): Make sure we call CALLBACK in all configurations.
(eww-render): Simplify how to pass encoding.
(eww--parse-html-region, eww-display-document): New functions, extracted
from...
(eww-display-html): ... here.
(eww-document-base): New function.
(eww-readable): Toggle "readable" mode interactively, like with a minor
mode.  Consult 'eww-readable-adds-to-history'.
(eww-reload): Use 'eshell-display-document'.

* test/lisp/net/eww-tests.el (eww-test--with-mock-retrieve): Fix indent.
(eww-test/display/html, eww-test/readable/toggle-display): New tests.

* doc/misc/eww.texi (Basics): Describe the new behavior.

* etc/NEWS: Announce this change.
2024-03-23 10:17:06 -07:00
Eli Zaretskii
e813c0fa3a Merge from origin/emacs-29
689f04a2dd Clarify description of format-spec truncation
759dedfab0 More accurate documentation of 'rmail-mail-new-frame'
fa79de7c6b ; * lisp/calendar/calendar.el: Remove extra space.
7f6e335f4b Fix documentation of M-SPC in user manual
5bdc2436c6 ; * lisp/emacs-lisp/cl-macs.el (cl-labels): Fix stray dif...
8014dbb2ad * admin/notes/bugtracker: Minor copyedit.
06a991e7e8 ; * admin/notes/bugtracker: Minor copyedit.
c890622e1a Tweak regexp for object initializers in csharp-mode (bug#...
f48babb112 `term-mode': mention the keymap to add keybindings to
8cf05d9be1 Fix 'shortdoc-copy-function-as-kill'
d5901f3f05 Improve documentation of 'edebug-print-*' variables
2024-03-23 06:51:39 -04:00
Stefan Monnier
7e32e8392a Fix recent test regressions
* lisp/emacs-lisp/pp.el (pp-fill): Don't cut between `#` and `(`.

* test/lisp/help-fns-tests.el (help-fns-test-built-in)
(help-fns-test-interactive-built-in, help-fns-test-lisp-defun)
(help-fns-test-lisp-defsubst):
* test/src/emacs-module-tests.el (module/describe-function-1):
Adjust tests to new wording in `describe-function`.
2024-03-22 18:44:54 -04:00
Stefan Monnier
7269a2f158 (pp-fill): Cut before parens and dots
The `pp-fill` code sometimes end up generating things like:

    (foo .
         bar)

instead of

    (foo
     .  bar)

so make sure we cut before rather than after the dot (and open
parens while we're at it).

* lisp/emacs-lisp/pp.el (pp-fill): Cut before parens and dots.

* test/lisp/emacs-lisp/pp-tests.el (pp-tests--dimensions): New function.
(pp-tests--cut-before): New test.
2024-03-22 16:46:28 -04:00
Kévin Le Gouguec
014cd00402 Fix vc-git test when no identities are configured
Reported by john muhl <jm@pub.pink>.

* test/lisp/vc/vc-git-tests.el (vc-git-test--with-repo): Set
some environment variables (lifted from vc-tests.el) to let
'git commit' compute dummy author and committer identities.
2024-03-19 21:53:40 +01:00
Andrea Corallo
f7f619779c * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-test-93): Add test. 2024-03-19 11:05:40 +01:00
Stefan Monnier
e624bc6275 (primitive-function): New type
The type hierarchy and `cl-type-of` code assumed that `subr-primitive`
only applies to functions, but since it also accepts special-forms it makes
it an unsuitable choice since it can't be a subtype of `compiled-function`.
So, use a new type `primitive-function` instead.

* lisp/subr.el (subr-primitive-p): Fix docstring (bug#69832).
(primitive-function-p): New function.

* lisp/emacs-lisp/cl-preloaded.el (primitive-function): Rename
from `subr-primitive` since `subr-primitive-p` means something else.

* src/data.c (Fcl_type_of): Return `primitive-function` instead
of `subr-primitive` for C functions.
(syms_of_data): Adjust accordingly.

* test/src/data-tests.el (data-tests--cl-type-of): Remove workaround.
2024-03-18 09:32:49 -04:00
Stefan Monnier
706403f2aa (cl-type-of): New function to return more precise types (bug#69739)
* src/data.c (Fcl_type_of): New function, extracted from `Ftype_of`.
Make it return more precise types for symbols, integers, and subrs.
(Ftype_of): Use it.
(syms_of_data): Define the corresponding new symbols and defsubr
the new function.

* doc/lispref/objects.texi (Type Predicates): Document it.

* src/comp.c (emit_limple_insn): Use `Fcl_type_of`.

* lisp/emacs-lisp/cl-preloaded.el (subr): Demote it to `atom`.
(subr-native-elisp, subr-primitive): Add `compiled-function` as
parent instead.
(special-form): New type.

* lisp/obsolete/eieio-core.el (cl--generic-struct-tag):
* lisp/emacs-lisp/cl-generic.el (cl--generic-typeof-generalizer):
Use `cl-type-of`.
cl--generic--unreachable-types): Update accordingly.

test/src/data-tests.el (data-tests--cl-type-of): New test.
2024-03-18 09:29:47 -04:00
Kévin Le Gouguec
8d4a8b7dfd ; Re-apply accidentally reverted commit
This re-applies:

  2024-03-17 "Fix vc-dir when "remote" Git branch is local"
  (21828f288e)

reverted as part of the unrelated:

  2024-03-17 "Update modus-themes to their 4.4.0 version"
  (67b0c1c09e)

The original commit message follows:

Fix vc-dir when "remote" Git branch is local

While in there, add that "tracking" branch to the vc-dir
buffer.  For bug#68183.

* lisp/vc/vc-git.el (vc-git-dir-extra-headers): Reduce
boilerplate with new function 'vc-git--out-ok'; stop calling
vc-git-repository-url when REMOTE is "." to avoid throwing an
error; display tracking branch; prefer "none (<details...>)" to
"not (<details...>)" since that reads more grammatically
correct.
(vc-git--out-ok): Add documentation.
(vc-git--out-str): New function to easily get the output from a
Git command.
* test/lisp/vc/vc-git-tests.el (vc-git-test--with-repo)
(vc-git-test--run): New helpers, defined to steer clear of
vc-git-- internal functions.
(vc-git-test-dir-track-local-branch): Check that vc-dir does
not crash.
2024-03-17 22:37:28 +01:00
Protesilaos Stavrou
67b0c1c09e
Update modus-themes to their 4.4.0 version
* doc/misc/modus-themes.org: Update the manual to better document
existing functionality and cover the new features.

* etc/themes/modus-operandi-deuteranopia-theme.el:
* etc/themes/modus-operandi-theme.el:
* etc/themes/modus-operandi-tinted-theme.el:
* etc/themes/modus-operandi-tritanopia-theme.el:
* etc/themes/modus-vivendi-deuteranopia-theme.el:
* etc/themes/modus-vivendi-theme.el:
* etc/themes/modus-vivendi-tinted-theme.el:
* etc/themes/modus-vivendi-tritanopia-theme.el: Update the
palette of each theme.

* etc/themes/modus-themes.el (require): Remove call to cl-lib
and do not use relevant functions.
(modus-themes-operandi-colors, modus-themes-vivendi-colors)
(modus-themes-version, modus-themes-report-bug): Remove old
calls to 'make-obsolete' and related.

(modus-themes--annotate-theme): Tweak the completion annotation function.

(modus-themes--org-block): Deprecate the user option 'modus-themes-org-blocks'.
(modus-themes-faces): Update faces.
(modus-themes-custom-variables): Update the list of custom
variables.

Detailed release notes are available here:
<https://protesilaos.com/codelog/2024-03-17-modus-themes-4-4-0/>.
2024-03-17 18:46:15 +02:00
Kévin Le Gouguec
21828f288e Fix vc-dir when "remote" Git branch is local
While in there, add that "tracking" branch to the vc-dir
buffer.  For bug#68183.

* lisp/vc/vc-git.el (vc-git-dir-extra-headers): Reduce
boilerplate with new function 'vc-git--out-ok'; stop calling
vc-git-repository-url when REMOTE is "." to avoid throwing an
error; display tracking branch; prefer "none (<details...>)" to
"not (<details...>)" since that reads more grammatically
correct.
(vc-git--out-ok): Add documentation.
(vc-git--out-str): New function to easily get the output from a
Git command.
* test/lisp/vc/vc-git-tests.el (vc-git-test--with-repo)
(vc-git-test--run): New helpers, defined to steer clear of
vc-git-- internal functions.
(vc-git-test-dir-track-local-branch): Check that vc-dir does
not crash.
2024-03-17 16:44:25 +01:00
Theodor Thornhill
c890622e1a Tweak regexp for object initializers in csharp-mode (bug#69571)
* lisp/progmodes/csharp-mode.el (csharp-guess-basic-syntax): Add
handling to not consider ended statements as object init openers.
* test/lisp/progmodes/csharp-mode-resources/indent.erts: New test
resources.
* test/lisp/progmodes/csharp-mode-tests.el: Add test for this particular
issue.
2024-03-16 20:43:25 +01:00
Eli Zaretskii
cc8a2c57b5 Merge from origin/emacs-29
3b791ebbe1 ; Fix 'usage:' keyword in Ffile_name_concat doc.
ed48b0d657 ; * CONTRIBUTE: Ask not to use non-ASCII unless necessary.
b708e639d6 ; * src/lread.c (maybe_swap_for_eln): Clarify warning mes...
db027a0697 ; Fix bibtex-biblatex-field-alist docstring typo.
a9be5c7ea9 ; * doc/lispref/control.texi (Conditionals): Add missing ...
db5915f30b Fix 'with-sqlite-transaction'
fe491173e8 ; * doc/emacs/files.texi (Image Mode): Fix typo (bug#69671).
2024-03-16 05:47:41 -04:00
Kévin Le Gouguec
09ab669351 Keep indenting text when 'shr-fill-text' is nil (bug#69555)
The 'shr-fill-...' functions handle both hard-filling (adding
newlines to break long lines) and indentation.  Setting
'shr-fill-text' to nil currently causes these functions to be
short-circuited completely, so e.g. blockquotes are no longer
indented, whereas the intent of this user option is only to
prevent hard-filling to let visual-line-mode reflow text.

* lisp/net/shr.el (shr-fill-lines): Document that the function
handles more than just filling; move the 'shr-fill-text' check...
(shr-fill-line): ... here, after indentation has been taken care
of.
* test/lisp/net/shr-resources/blockquote.html:
* test/lisp/net/shr-resources/blockquote.txt: New test resources.
* test/lisp/net/shr-tests.el (shr-test--rendering-check): Rename
from 'shr-test', to make the relationship with the 'rendering'
testcase clearer; prefer 'file-name-concat' to 'format'; raise
ERT failure if need be, calling (ert-fail ...) directly instead
of (should (not (list ...))).
(shr-test--rendering-extra-configs): New variable to easily check
that user customizations do not degrade rendering.
(rendering): Consult that new variable; delegate failure-raising
to reduce duplication.
2024-03-15 07:50:31 +01:00
Liu Hui
a7057745f5 Detect the readline support for Python shell completion
* lisp/progmodes/python.el
(python-shell-comint-watch-for-first-prompt-output-filter):
Detect the readline support.
(python-shell-readline-completer-delims): Update docstring.
(python-shell-completion-native-setup): Move the readline
detection code to ...
(python-shell-readline-detect): ... new function.
(python-shell-completion-native-turn-on-maybe): Skip if Python
has no readline support.
(python-shell-completion-at-point): Respect the delimiter of
readline completer in non-native completion.
* test/lisp/progmodes/python-tests.el
(python-shell-completion-at-point-1)
(python-shell-completion-at-point-native-1)
(python-completion-at-point-1, python-completion-at-point-2)
(python-completion-at-point-pdb-1)
(python-completion-at-point-while-running-1)
(python-completion-at-point-native-1)
(python-completion-at-point-native-2)
(python-completion-at-point-native-with-ffap-1)
(python-completion-at-point-native-with-eldoc-1): Skip tests if
Python has no readline support.
(python-shell-completion-at-point-jedi-completer): Add test for
non-native Python shell completion. (bug#68559)
2024-03-14 15:09:56 +01:00
Tim Landscheidt
6d1c1fca0a ; Simplify (with-current-buffer (get-buffer ...) ...)
There's no need to call 'get-buffer', since 'with-current-buffer'
does that internally.
* lisp/calendar/todo-mode.el (todo-merge-category):
* lisp/comint.el (comint-dynamic-list-completions):
* lisp/emacs-lisp/checkdoc.el (checkdoc-error):
* lisp/emacs-lisp/debug.el (debug, debugger-record-expression):
* lisp/emacs-lisp/eieio-opt.el (eieio-browse):
* lisp/emacs-lisp/re-builder.el (reb-restart-font-lock):
* lisp/erc/erc-dcc.el (erc-dcc-do-LIST-command):
* lisp/eshell/em-unix.el (eshell-poor-mans-grep):
* lisp/gnus/gnus-group.el (gnus-add-mark):
* lisp/net/eww.el (eww-next-bookmark, eww-previous-bookmark):
* lisp/net/sieve.el (sieve-upload):
* lisp/net/tramp-cmds.el (tramp-cleanup-some-buffers):
* lisp/obsolete/quickurl.el (quickurl-list-populate-buffer):
* lisp/org/ob-calc.el: (org-babel-execute:calc):
* lisp/org/org-agenda.el (org-agenda-use-sticky-p):
* lisp/pcomplete.el (pcomplete-show-completions):
* lisp/progmodes/bug-reference.el
(bug-reference--try-setup-gnus-article):
* lisp/progmodes/idlw-help.el
(idlwave-highlight-linked-completions):
* lisp/progmodes/verilog-mode.el (verilog-preprocess):
* lisp/replace.el (occur-1):
* lisp/term.el (term-dynamic-list-completions):
* lisp/time.el (world-clock-update):
* lisp/url/url-cache.el (url-store-in-cache):
* lisp/vc/vc-cvs.el (vc-cvs-merge, vc-cvs-merge-news):
* lisp/vc/vc-rcs.el (vc-rcs-system-release):
* lisp/vc/vc-svn.el (vc-svn-merge, vc-svn-merge-news):
* test/lisp/calendar/icalendar-tests.el
(icalendar-tests--get-error-string-for-export):
* test/lisp/erc/erc-dcc-tests.el
(pcomplete/erc-mode/DCC--get-1flag)
(pcomplete/erc-mode/DCC--get-2flags)
(pcomplete/erc-mode/DCC--get-2flags-reverse):
* test/lisp/erc/erc-networks-tests.el
(erc-networks--rename-server-buffer--existing--noreuse):
* test/lisp/erc/erc-scenarios-services-misc.el
(erc-scenarios-services-misc--reconnect-retry-nick):
* test/lisp/erc/erc-tests.el (erc--refresh-prompt):
Replace (with-current-buffer (get-buffer ...) ...) with
(with-current-buffer ...).
2024-03-14 12:40:26 +02:00
Alan Mackenzie
90f008d1de Merge branch 'master' into feature/positioned-lambdas 2024-03-12 11:58:00 +00:00
F. Jason Park
db5915f30b Fix 'with-sqlite-transaction'
* lisp/sqlite.el (with-sqlite-transaction): Tuck misplaced body
of else form back into feature-test control structure whence it
escaped.  (Bug#67142)

* test/lisp/sqlite-tests.el: New file to accompany
test/src/sqlite-tests.el.
2024-03-11 15:23:55 +02:00
Paul Eggert
2d61ebb505 Change bare-symbol back to match intent
Also, attempt to document the intent better.
Problem reported by Alan Mackenzie (Bug#69684).
* src/data.c (Fbare_symbol): Do not signal if the SYM is a symbol
with position and symbols-with-pos-enabled is nil.  Instead,
ignore symbols-with-pos-enabled, as that was the intent.
* test/src/data-tests.el (data-tests-bare-symbol):
New test, to help prevent this bug from reoccurring.
2024-03-11 00:34:27 -07:00
Alan Mackenzie
ec0da34469 Merge branch 'master' into feature/positioned-lambdas 2024-03-10 18:21:20 +00:00
F. Jason Park
e2620fd734 Make important text props more resilient in ERC
* lisp/erc/erc-button.el (erc-button-remove-old-buttons): Restore
original `mouse-face' values in areas marked as important after
clobbering.
* lisp/erc/erc.el (erc--reserve-important-text-props): New function.
(erc--restore-important-text-props): New function.
* test/lisp/erc/erc-tests.el (erc--restore-important-text-props): New
test.
(Bug#69597)
2024-03-10 06:11:29 -07:00
F. Jason Park
7b4ca9e609 Leverage inverse-video for erc-inverse-face
* lisp/erc/erc-goodies.el (erc-inverse-face): Specify face attribute
`:inverse-video' (née :reverse-video) to swap foreground and
background colors over affected intervals, as per
https://modern.ircdocs.horse/formatting#reverse-color.
(erc-control-default-fg erc-control-default-bg): New faces for IRC
color-code number 99.  Ignore the ERC convention of prefixing
control-code-derived faces with "fg:" and "bg:" because it doesn't
comport with modern sensibilities, which demand identifiers normally
be namespaced.
(erc-get-bg-color-face, erc-get-fg-color-face): Return new, dedicated
faces instead of `default', and don't nest them in a list.
* test/lisp/erc/erc-goodies-tests.el
(erc-controls-highlight--inverse): Redo completely, asserting behavior
described in the spec linked to above.
(erc-controls-highlight--spoilers): New test based on the body of the
old `erc-controls-highlight--inverse', except without shadowing
`erc-insert-modify-hook' with an unrealistic, idealized value.  Adjust
expected buffer state to reflect the new role of
`erc-spoiler-face'.  (Bug#69597)
2024-03-10 06:11:22 -07: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
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
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
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
Stefan Monnier
94632c611e Revert "Update some native comp tests"
This reverts commit 4a0d430bdc.

AFAICT that commit was made to accomodate regressions introduced
in the new `cl-preloaded.el` code and these have been fixed.
2024-03-04 11:19:08 -05:00
Mattias Engdegård
b9e8474a44 Repair miscompilation of single-arg apply (bug#69533)
* lisp/emacs-lisp/byte-opt.el (byte-optimize-apply):
Don't optimise single-argument `apply`; it's a legacy construct.
* test/lisp/emacs-lisp/bytecomp-tests.el (bytecomp-tests--test-cases):
Add test case.
2024-03-04 14:13:26 +01:00
Alan Mackenzie
7046203ed3 Merge branch 'master' into feature/positioned-lambdas 2024-03-04 12:36:39 +00:00
Alan Mackenzie
1bd7bee1d6 Set ;POS... position structures on entities in interpreted code
This is part of bug#67455.  defvars and defconsts together with
methods generated by cl-defmethod currently don't get these
position structures.  Also, many debugging artefacts remain in
this repository, to be removed later.

doc/lispref/functions.texi (Declare Form): Enhance to
document the new declare clause, defining-symbol.

lisp/emacs-lisp/backquote.el (backquote-process): Add a new
clause to attach byte-run-posify-lambda-form to lambda forms.

lisp/emacs-lisp/byte-run.el (byte-run--strip-hash-table): New
function.
(byte-run--strip-list, byte-run--strip-vector/record)
(byte-run-strip-symbol-positions): Call the above new function.
(byte-run--report-hash-table, byte-run--report-vector/record)
(byte-run--report-list, byte-run-report-symbol-positions): New
diagnostic functions.
(byte-run--posify-hash-table, byte-run--posify-vector/record)
(byte-run--posify-list, byte-run-posify-all-lambdas): New,
probably redundant functions.
(byte-run--strip-lambda-doc-list)
(byte-run--strip-lambda-doc-vector/record)
(byte-run--strip-lambda-doc-hash-table)
(byte-run-strip-lambda-doc): New auxiliary functions, probably
redundant.
(byte-run-posify-doc-string): Amend to take a position rather
than a lambda-token as argument.  Also change the introductory
token to use \001 rather than \000, since the latter acted as
null terminators in some interprocess communication.  Attempt
to handle (:documentation ...) doc string forms.
(byte-run-posify-lambda-form): New function.
(byte-run--set-defining-symbol): Removed.
(byte-run--extract-sym-from-form, byte-run--doc-n): New
functions.
(byte-run--posify-defining-form): New function.
(byte-run--parse-body): Amend the detection of duplicated doc
strings also to handle bare ;POS... structures.
(byte-run--parse-declarations): Rename `pre-form' to
`byte-run-pre-form'.  Allow a handler to return code both to be
run after a declaration, and to be prefixed onto a
macro/function.
(defmacro): New code to posify an existing doc string or insert
a new ;POS... structure.  Also to strip the position from a
symbol with position.  Give defmacro a byte-run-defined-form so
that the reader will position symbols it defines.
(defun): Remove "the return value is undefined" from the doc
string.
(byte-run--fun-doc-pos/macro, byte-run--fun-get-string)
(byte-run--fun-put-new-string, byte-run--fun-get-lambda-pos)
(byte-run-strip-pos-info)
(byte-run-posify-existing-defaliases-1)
(byte-run-posify-existing-defaliases)
(byte-run-posify-existing-lambdas): New functions, some of
which may be redundant.
(defsubst): Strip the new symbol of its position.

lisp/emacs-lisp/bytecomp.el (byte-compile-file): Use the name
of the file for the temporary buffer: this gets a good name
into the ;POS... structures created at compilation.
(compile-defun): Bind byte-compile-in-progress.

lisp/emacs-lisp/cconv.el (cconv-convert)
(cconv-make-interpreted-closure): Handle any doc string in a
lambda form.

lisp/emacs-lisp/cl-defgeneric.el (cl-defgeneric): Amend the
defining-symbol declare clause.
(cl-defgeneric): Remove the defining-symbol declare clause,
which can't work due to the non-constant position of the doc
string.

lisp/emacs-lisp/debug-early.el (debug-early-frame): New
function extracted from debug-early-backtrace to avoid the use
of a lambda function, which is troublesome so early in the
bootstrap.

lisp/emacs-lisp/debug.el (top level) don't set debug to be the
default debugger in batch mode.

lisp/emacs-lisp/edebug.el (edebug-install-read-eval-functions):
Amend the advising of load-read-function, since that function
can now be let bound in Fload.

lisp/emacs-lisp/macroexp.el (macroexpand-1): Refactor.  Also
add handling for lambda forms which was previously in the macro
lambda in subr.el.  Handle also defalias forms from early
bootstrapping.
(macroexp--expand-all): Enhance the handling of #'(lambda ...),
posifying the lambda form, and stripping its position.  Strip
the positions from symbols in (setq ...) forms.  Add a guard
pcase clause to strip the position from a symbol.
(macroexpand-1, macroexpand-all, macroexpand-all-toplevel):
Bind symbols-with-pos-enabled to t.

lisp/emacs-lisp/pcase.el (\`): Add a clause to strip the
position from a symbol with position.

lisp/help-mode.el (top level): Require easymenu.

lisp/help.el (help-strip-pos-info, help-add-fundoc-usage):
Recognize the new token in ;POS structures using \001 rather
than \000.

lisp/international/mule.el (load-with-code-conversion): Use the
file name for the buffer name rather than " *load*".

lisp/jsonrpc.el (jsonrpc-connection): Give
-events-buffer-scrollback-size an initform.

lisp/loadup.el (top-level): Set symbols-with-pos-enabled to t
during the loading of the first ?16 files.  Call
byte-run-posify-existing-defaliases and
byte-run-posify-existing-lambdas to posify functions loaded
from the first few files.  Load the first ?16 files a second
time, so as to handle posification properly on these early
files.  Clear out their function history between the two
loadings to prevent symbols with position getting into the
pdump process.  Also use a variant of defvar during this period
to ensure that these variables are set to their new values.

lisp/<various>: Update approximately 37 defining-symbol declare
clauses to the new way of defining them by giving argument
names rather than positions in the arglist.

src/alloc.c (Fmake_record): Strip any position from the type
field.

src/data.c (Fdefalias): Record the first few symbol defined in
the bootstrap for later posification.

src/doc.c (Fdocumentation): Strip ;POS... position information
from doc strings unless RAW is set to `also-pos'.

src/eval.c (defvar): Add an extra parameter, forced_init, to
force the initialization of variables, even when they already
have a value.
(Fdefvar_bootstrap): New function, a variant of Fdefvar which
always reinitializes the variable's value.
(Fmacroexpand): bind symbols-with-pos-enabled to t and
cur-evalled-macro-form to the form being expanded.
(eval_sub): Bind symbols-with-pos-enabled to t.  Eagerly expand
macros encountered by calling macroexpand-all, when this has
been loaded.
(syms_of_eval): New Lisp variable cur-evalled-macro-form.

src/fns.c (Fgethash, Fputhash): Strip any positions from the
supplied keys.

src/lread.c (char_count): New variable recording the position
in the buffer currently being loaded.
(readchar, unreadchar): Handle char_count correctly.
(unbind_char_count): New function.
(Fload): Bind char_count to 1 at the start of loading a file.
Bind load-read-function to `read' at the start of each load.
(readevalloop_early_eval): New function.
(readevalloop_eager_expand_eval): In early bootstrap, detect
defalias calls and not defining-symbol for them.  Strip symbol
positions before calling eval_sub.
(readevalloop): Use new boolean variable is_elc.  Refactor the
function somewhat.  Call readevalloop_early_eval in the early
part of bootstrap, before macro expansion is fully available.
(read-positioning-symbols): Refactor somewhat.
(read-positioning-defined-symbol): New function.
(get_read_stream): New function.
(read_stack_entry): New fields old_locate_syms, target_obj,
current_obj.
(ADJUST_LOCATE_SYMS): New macro.
(read0): Enhance to boolean locate_syms to an integer with 5
meaningful values, implementing a state machine with them.  Use
this state machine for positioning only symbols defined by
"defining-symbol" macros, and `lambda' immediately following an
open parenthesis.

test/lisp/emacs-lisp/cconv-tests.el (several tests): Use
byte-run-strip-lambda-doc to enable easy comparison of actual
results with expected ones.

test/lisp/emacs-lisp/ert-tests.el
test/lisp/emacs-lisp/ert-x-tests.el
lisp/lisp/erc/erc-tests.el: Minor amendments to handle the
presence of ;POS... forms.

test/lisp/jsonrpc-tests.el
(jsonrpc--call-with-emacsrpc-fixture): Add in a missing :name
keyword.

test/lisp/use-package/use-package-tests.el (3 tests): Add
edebug specs.
(match-expansion): Use byte-run-strip-lambda-doc.
2024-03-03 18:36:19 +00:00
Andrea Corallo
f677b44999 * test/lisp/emacs-lisp/comp-cstr-tests.el (comp-cstr-test-62): Revert change. 2024-03-03 17:49:19 +01:00
Andrea Corallo
c55694785e Merge branch 'feature/type-hierarchy' into 'master' 2024-03-01 09:30:44 +01:00
Juri Linkov
8305d0e0c9 Add tabulated-list-groups and Buffer-menu-group-by (bug#69305)
* doc/lispref/modes.texi (Tabulated List Mode):
Add defvar tabulated-list-groups.

* lisp/buff-menu.el (Buffer-menu-group-by): New defcustom.
(Buffer-menu-unmark-all-buffers): Use tabulated-list-get-entry
to check whether the current line contains an entry.
(list-buffers-noselect): Enable outline-minor-mode
for tabulated-list-groups.
(list-buffers--refresh): When Buffer-menu-group-by is non-nil,
set tabulated-list-groups.
(Buffer-menu-group-by-mode, Buffer-menu-group-by-root):
New functions.

* lisp/emacs-lisp/tabulated-list.el (tabulated-list-groups):
New buffer-local variable.
(tabulated-list-print-fake-header): Add distinct overlay
property 'fake-header'.
(tabulated-list-header-overlay-p): Filter out overlays that
don't have the property 'fake-header'.
(tabulated-list-print): Use the variable 'tabulated-list-groups'
to sort entries in groups separately.
(tabulated-list-print-entries): New function factored out from
'tabulated-list-print'.

* test/lisp/emacs-lisp/tabulated-list-tests.el (tabulated-list-groups):
New test.
2024-02-29 19:50:04 +02:00
Andrea Corallo
1fbe56c327 Merge remote-tracking branch 'origin/master' into 'feature/type-hierarchy' 2024-02-28 20:47:57 +01:00
Liu Hui
8a2d013be3 Fix Python shell completion test failures
* test/lisp/progmodes/python-tests.el
(python-tests-with-temp-buffer-with-shell): Set XDG_CACHE_HOME
to a temporary directory.
(python-tests--pythonstartup-file): New function.
(python-shell-completion-at-point-jedi-completer)
(python-shell-completion-at-point-ipython): Use Jedi as the
native completion backend when possible.  (bug#68559)
2024-02-28 15:25:56 +01:00
Mattias Engdegård
a67b8d7f44 Make tree-sitter tests work installed in .emacs.d/tree-sitter
* test/Makefile.in (ert_opts):
Set treesit-extra-load-path, because HOME is not valid when running
tests from the Makefile (bug#69405).
2024-02-26 18:47:02 +01:00
Stefan Monnier
25cfccfb8b (edebug-tests-trivial-comma): Avoid interaction (bug#69406)
* test/lisp/emacs-lisp/edebug-tests.el (edebug-tests-trivial-backquote):
Don't use obsolete `edebug-eval-defun`.
(edebug-tests-trivial-comma): Use `inhibit-read-only`; don't use
obsolete `edebug-eval-defun`; and fix bug#69406 by binding
`eval-expression-debug-on-error`.
2024-02-26 12:33:35 -05:00
Eli Zaretskii
229b3edb07 Merge from origin/emacs-29
01ebc95114 Fix 'help-quick-toggle'
afe49c7e2a ; * admin/authors.el (authors-aliases): Fix last change.
8b1f10f8cf ; Normalize Morgan Smith's attributions.
70cf4b694b ; * etc/PROBLEMS: Describe input lags due to GTK IM (bug#...
f28a557c7d * doc/lispref/modes.texi (Tabulated List Mode): Update.
d6131b5902 * lisp/net/tramp.el (tramp-methods): Fix typo in docstrin...
2eb85a9de1 ; * lisp/emacs-lisp/pcase.el (pcase-let*, pcase-let): Ano...
4c6653f23a ; * lisp/emacs-lisp/pcase.el (pcase-let*, pcase-let): Doc...
5a64d2c759 java-ts-mode: Indentation for opening brace on a separate...
9e56bd5ed8 Removed decommissioned PGP keyservers
e56f0ef51b org: Fix security prompt for downloading remote resource
65ba327465 Revert "Update to Org 9.6.19"
07a392f445 Update to Org 9.6.19
2024-02-24 06:35:16 -05:00
Emanuel Berg
15a140a246 Make erc-cmd-AMSG session local; add /GMSG, /AME and /GME
* etc/ERC-NEWS: Mention new slash commands.
* lisp/erc/erc.el (erc-cmd-AMSG): Make it consistent with the doc
string by only affecting the current connection.
(erc-cmd-GMSG, erc-cmd-AME, erc-cmd-GME): New IRC slash commands.
* test/lisp/erc/erc-scenarios-misc-commands.el
(erc-scenarios-misc-commands--AMSG-GMSG-AME-GME): New test.
* test/lisp/erc/resources/commands/amsg-barnet.eld: New file.
* test/lisp/erc/resources/commands/amsg-foonet.eld: New file.
(Bug#68401)
2024-02-23 18:45:44 -08:00
Mattias Engdegård
a8f167547b Replace use of obsolete eshell-kill-output in test
* test/lisp/eshell/eshell-tests.el (eshell-test/flush-output):
Use eshell-delete-output instead of eshell-kill-output.
2024-02-23 13:14:18 +01:00
Mattias Engdegård
462d8ba813 Add a proper type for obarrays
The new opaque type replaces the previous use of vectors for obarrays.
`obarray-make` now returns objects of this type.  Functions that take
obarrays continue to accept vectors for compatibility, now just using
their first slot to store an actual obarray object.

obarray-size and obarray-default-size now obsolete.

* lisp/obarray.el (obarray-default-size, obarray-size):
Declare obsolete.
(obarray-make, obarrayp, obarray-clear): Remove from here.
* src/fns.c (reduce_emacs_uint_to_hash_hash): Remove from here.
* src/lisp.h (struct Lisp_Obarray, OBARRAYP, XOBARRAY, CHECK_OBARRAY)
(make_lisp_obarray, obarray_size, check_obarray)
(obarray_iter_t, make_obarray_iter, obarray_iter_at_end)
(obarray_iter_step, obarray_iter_symbol, DOOBARRAY, knuth_hash): New.
(reduce_emacs_uint_to_hash_hash): Moved here.
* src/lread.c (check_obarray): Renamed and reworked as...
(checked_obarray_slow): ...this.
(intern_sym, Funintern, oblookup, map_obarray)
(Finternal__obarray_buckets): Adapt to new type.
(obarray_index, allocate_obarray, make_obarray, grow_obarray)
(obarray_default_bits, Fobarray_make, Fobarrayp, Fobarray_clear): New.
* etc/emacs_lldb.py (Lisp_Object):
* lisp/emacs-lisp/cl-macs.el (`(,type . ,pred)):
* lisp/emacs-lisp/cl-preloaded.el (cl--typeof-types):
* lisp/emacs-lisp/comp-common.el (comp-known-type-specifiers):
* lisp/emacs-lisp/comp.el (comp-known-predicates):
* src/alloc.c (cleanup_vector, process_mark_stack):
* src/data.c (Ftype_of, syms_of_data):
* src/minibuf.c (Ftry_completion, Fall_completions, Ftest_completion):
* src/pdumper.c (dump_obarray_buckets, dump_obarray, dump_vectorlike):
* src/print.c (print_vectorlike_unreadable):
* test/lisp/abbrev-tests.el (abbrev-make-abbrev-table-test):
* test/lisp/obarray-tests.el (obarrayp-test)
(obarrayp-unchecked-content-test, obarray-make-default-test)
(obarray-make-with-size-test):
Adapt to new type.
2024-02-23 13:02:27 +01:00