]> git.eshelyaron.com Git - emacs.git/log
emacs.git
14 months agoAdapt cache handling in Tramp
Michael Albinus [Mon, 5 Feb 2024 11:54:56 +0000 (12:54 +0100)]
Adapt cache handling in Tramp

* lisp/net/tramp-cache.el (with-tramp-saved-file-property)
(with-tramp-saved-file-properties)
(with-tramp-saved-connection-property)
(with-tramp-saved-connection-properties): Do not change KEY
destructively.

(cherry picked from commit edf61edfd6f04ab97785dca92fc68e8e5783586e)

14 months agoFix stale cache in Tramp
Michael Albinus [Mon, 5 Feb 2024 11:54:03 +0000 (12:54 +0100)]
Fix stale cache in Tramp

* lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
Flush file properties in time.  (Bug#68805)

(cherry picked from commit c7539a363b8b109d24457aaeb60fb51bd0a03e4f)

14 months agoFix frame focus tracking under Android
Po Lu [Mon, 5 Feb 2024 10:34:22 +0000 (18:34 +0800)]
Fix frame focus tracking under Android

* java/org/gnu/emacs/EmacsActivity.java (invalidateFocus): New
argument WHENCE, a unique number identifying the circumstances
leading up to the call.  All callers changed.
(attachWindow): Call `invalidateFocus' from the UI thread.
(onWindowFocusChanged): Don't remove activity from
`focusedActivities' if it already exists should `hasWindowFocus'
return true.

(cherry picked from commit c1f8fe09e6641cc6c1195edcb8666ace1e6e8829)

14 months agoDon't respect ROUND_XY_TO_GRID when decomposing uninterpreted glyph
Po Lu [Mon, 5 Feb 2024 09:17:51 +0000 (17:17 +0800)]
Don't respect ROUND_XY_TO_GRID when decomposing uninterpreted glyph

* src/sfnt.c (sfnt_decompose_compound_glyph): Remove useless
code; don't pretend to round glyph coordinates.

(cherry picked from commit 98d62c5f7675b24ad66e010765ce3012046f2ff8)

14 months ago; Fix last change
Stefan Kangas [Mon, 5 Feb 2024 07:30:31 +0000 (08:30 +0100)]
; Fix last change

* lisp/filesets.el (filesets-quote): Resurrect as obsolete alias for
'shell-quote-argument'.

(cherry picked from commit ea53a26d03da8d03652696939431b3a7e63053d7)

14 months agofilesets: Safely invoke `shell-command*' functions
Xi Lu [Thu, 23 Feb 2023 12:58:00 +0000 (20:58 +0800)]
filesets: Safely invoke `shell-command*' functions

* lisp/filesets.el:
(filesets-select-command, filesets-quote): Remove unused functions.
(filesets-external-viewers): Remove old comments.
(filesets-which-command, filesets-get-quoted-selection)
(filesets-spawn-external-viewer): Use `shell-quote-argument'.  (Bug#61709)

(cherry picked from commit 7756e9c73611c25002a90194b4a32c23051cb234)

14 months agoDocument arguments to Eshell's built-in commands
Jim Porter [Wed, 16 Aug 2023 01:51:20 +0000 (18:51 -0700)]
Document arguments to Eshell's built-in commands

* lisp/eshell/em-unix.el (eshell/ln): LINK_NAME is required.

* lisp/eshell/esh-ext.el (eshell/addpath):
* lisp/eshell/esh-var.el (eshell/env): Improve help strings slightly.

* doc/misc/eshell.texi (Scripts): Explain $0, $1, etc.
(Dollars Expansion): Use "@dots{}" instead of "...".
(Built-ins, Tramp extensions, Extra built-in commands): Document
command-line arguments.

(cherry picked from commit 5c43ef86bf169a79b87bd082d2f884757f7c2efc)

14 months agoUse treesit-node-match-p in treesit-parent-until/while
Yuan Fu [Mon, 5 Feb 2024 03:26:42 +0000 (19:26 -0800)]
Use treesit-node-match-p in treesit-parent-until/while

* lisp/treesit.el (treesit-parent-until): Use treesit-node-match-p.
(treesit-parent-while): Update docstring.
* doc/lispref/parsing.texi (Retrieving Nodes): Update docstring.

(cherry picked from commit be6de56906f0d1c09a0fad4f5165d864dddbc3ee)

14 months agoImprove treesit-forward-sexp behavior for leaf nodes (bug#68899)
Yuan Fu [Sun, 4 Feb 2024 05:24:29 +0000 (21:24 -0800)]
Improve treesit-forward-sexp behavior for leaf nodes (bug#68899)

treesit-forward-sexp uses treesit--navigate-thing with 'restricted'
tactic.  In this tactic we don't move over the parent thing.  However,
this makes forward-sexp useless for symbols when point is in the
symbol rather than at the beginning of it: in that case, the symbol is
considered parent and treesit-forward-sexp won't move to the end of
it.

To solve that, we allow to move across the parent even in 'restricted'
mode if the parent is a leaf thing.

Here, "leaf thing" is defined as "doesn't have any child 'thing'
inside it".

* lisp/treesit.el (treesit--navigate-thing): Move over parent in
'restricted' tactic if the parent is a leaf thing.

(cherry picked from commit 9dbbf93a4a08f71cf5f2278ec2a22a722fe0e0f7)

14 months ago* lisp/emacs-lisp/comp.el (comp--native-compile): Use `error-message-string`
Stefan Monnier [Sun, 4 Feb 2024 19:39:02 +0000 (14:39 -0500)]
* lisp/emacs-lisp/comp.el (comp--native-compile): Use `error-message-string`

(cherry picked from commit b2d350cfc0bf8f0e3198bffcebe60a43341fb340)

14 months ago* src/lread.c (bytecode_from_rev_list): Fix assertion failure
Stefan Monnier [Sun, 4 Feb 2024 18:51:13 +0000 (13:51 -0500)]
* src/lread.c (bytecode_from_rev_list): Fix assertion failure

The assertion failure was raised at lread.c:411 during the
`lread-invalid-bytecodes` test in `test/src/lread-tests.el`.
I suspect we could remove the assertion instead.

(cherry picked from commit 7d3c3cad9392d3f8e59f85522053c249aff062e5)

14 months ago* src/lread.c (build_load_history): Be careful with in-place updates
Stefan Monnier [Sun, 4 Feb 2024 17:58:56 +0000 (12:58 -0500)]
* src/lread.c (build_load_history): Be careful with in-place updates

Don't leave a "broken" value in `Vcurrent_load_list`.

(cherry picked from commit 52abeaf1333427f156a23f0acf057e81bcc5e9e2)

14 months ago* src/window.c (set_window_buffer): Flush the `base_line_number` cache
Stefan Monnier [Sun, 4 Feb 2024 17:52:01 +0000 (12:52 -0500)]
* src/window.c (set_window_buffer): Flush the `base_line_number` cache

(cherry picked from commit a1aa9028f83e5d3da71bdb5877d8baa5d6c1e98a)

14 months ago(w->base_line_number): Rework the way we flush the cache
Stefan Monnier [Sun, 4 Feb 2024 17:50:55 +0000 (12:50 -0500)]
(w->base_line_number): Rework the way we flush the cache

* src/xdisp.c (BASE_LINE_NUMBER_VALID_P): New macro.
(try_scrolling): Use it.
(redisplay_window, Fformat_mode_line): Use it to flush the
base_line_number (if it's stale) once at the beginning.
(decode_mode_spec): Don't use (or set) `w->start` and
`w->base_line_number` when operating on another buffer!

(cherry picked from commit 57024e1e9314501b103a4d36b9b166761a2ad756)

14 months ago; Fix my last commit
Stefan Kangas [Sun, 4 Feb 2024 12:20:15 +0000 (13:20 +0100)]
; Fix my last commit

(cherry picked from commit a4587646fabf2b7f0cb19a7e0bee090f9106a73a)

14 months agoPrefer setq-local in more places
Stefan Kangas [Sun, 4 Feb 2024 12:16:59 +0000 (13:16 +0100)]
Prefer setq-local in more places

* lisp/erc/erc-compat.el (erc-set-write-file-functions):
* lisp/obsolete/iswitchb.el (iswitchb-minibuffer-setup-hook)
(iswitchb-minibuffer-setup):
* lisp/obsolete/longlines.el (longlines-mode):
* lisp/obsolete/rcompile.el (remote-compile):
* lisp/progmodes/cperl-mode.el (cperl-file-style):
* test/lisp/erc/erc-tests.el (erc-ring-previous-command):
Prefer setq-local.

(cherry picked from commit 70c10204f0025eac844a88b0ef85cfca44cff61c)

14 months agoPrevent cache of diff-mode buffers to grow without bounds
Mattias Engdegård [Sat, 3 Feb 2024 15:46:59 +0000 (16:46 +0100)]
Prevent cache of diff-mode buffers to grow without bounds

Previously, these " *diff-syntax:..." buffers were never removed.
Now we discard the least recently used half of them every hour.

* lisp/vc/diff-mode.el (diff--cached-revision-buffers)
(diff--cache-clean-interval, diff--cache-clean-timer, diff--cache-clean)
(diff--cache-schedule-clean, diff--get-revision-properties): New.
(diff-syntax-fontify-hunk): Use diff--get-revision-properties.

(cherry picked from commit 4d57187a248d3243dcc8b5da5d8365cb1b54a347)

14 months agoSupport bookmarking Xref results buffers
Eshel Yaron [Tue, 6 Feb 2024 19:33:53 +0000 (20:33 +0100)]
Support bookmarking Xref results buffers

* lisp/progmodes/xref.el (bookmark-make-record-default)
(bookmark-make-record, bookmark-prop-get)
(bookmark-handle-bookmark, bookmark-get-rear-context-string)
(bookmark-get-front-context-string): Declare functions.
(xref-backend-context, xref-backend-restore): New generic functions.
(xref--backend, xref--identifier, xref--kind)
(xref--original-buffer, xref--original-point): New local variables.
(xref--show-common-initialize): Set them in Xref results buffer.
(xref-default-bookmark-name-format): New user option.
(xref-bookmark-make-record, xref-bookmark-jump): New functions.
(xref--xref-buffer-mode): Set 'bookmark-make-record-function'.
(xref-fetcher-alist): New variable.
(xref--show-xref-buffer, xref-show-definitions-buffer)
(xref-show-definitions-buffer-at-bottom): Use it.
(xref--read-identifier): Improve error message.
(xref-make-fetcher): Extract from...
(xref--create-fetcher): ...here.

* doc/emacs/maintaining.texi (Xref Commands): Document new feature.

* etc/NEWS: Announce new feature and Xref generic functions.

14 months ago; * lisp/bookmark.el (bookmark-completing-read): Fix typo.
Eshel Yaron [Tue, 6 Feb 2024 07:50:06 +0000 (08:50 +0100)]
; * lisp/bookmark.el (bookmark-completing-read): Fix typo.

14 months ago; Fix quoting in 'xref-show-definitions-completing-read'
Eshel Yaron [Tue, 6 Feb 2024 07:47:57 +0000 (08:47 +0100)]
; Fix quoting in 'xref-show-definitions-completing-read'

* lisp/progmodes/xref.el (xref-show-definitions-buffer-at-bottom): Use
a backquote.

14 months ago; Fix remote shell file name selection
Eshel Yaron [Sun, 4 Feb 2024 12:57:06 +0000 (13:57 +0100)]
; Fix remote shell file name selection

* lisp/shell.el (shell): Cease providing 'file-remote-p' as completion
predicate when reading remote shell file name.  The completion predicate
in 'read-file-name' gets the non-directory part of the file name, which
in particular does not include the remote part, if any, so this
predicate always fail in these settings.  Moreover, this predicate
didn't make a lot of sense to begin with.

14 months ago; Sync missing TRAMP update from 'master'
Eshel Yaron [Sun, 4 Feb 2024 11:07:51 +0000 (12:07 +0100)]
; Sync missing TRAMP update from 'master'

* lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
(tramp-maybe-open-connection): Sync with 'master'.

14 months ago* lisp/speedbar.el (imenu): Require unconditionally.
Stefan Kangas [Sun, 4 Feb 2024 10:26:43 +0000 (11:26 +0100)]
* lisp/speedbar.el (imenu): Require unconditionally.

(cherry picked from commit e44b9f35793d642d5155fde035e3bc92102d13a1)

14 months agoDelete compat code in `url` library
Stefan Kangas [Sun, 4 Feb 2024 09:28:40 +0000 (10:28 +0100)]
Delete compat code in `url` library

* lisp/url/url-cid.el (url-cid): Delete compat code for ancient Gnus.
* lisp/url/url-ldap.el (url-ldap-certificate-formatter): Delete compat
code; ssl.el has never been in Emacs.
* lisp/url/url-mailto.el (url-mail): Make into alias for 'message-mail',
since it is always fboundp.

(cherry picked from commit 9bbf8232dba746db90b90285e9e4ed6d299d251a)

14 months agoAdd alias progress-reporter-make
Stefan Kangas [Sun, 4 Feb 2024 09:28:18 +0000 (10:28 +0100)]
Add alias progress-reporter-make

* lisp/subr.el (progress-reporter-make): New alias for
'make-progress-reporter'.

(cherry picked from commit 56d0fbd99a87858717e08488df57db7fc08a2891)

14 months ago; Fix typos
Stefan Kangas [Sun, 4 Feb 2024 08:48:04 +0000 (09:48 +0100)]
; Fix typos

(cherry picked from commit fc8b09484a2fbe182a0351c47afc3bf71f3b2a1b)

14 months agoFix display of invisible text with opposite directionality
Eli Zaretskii [Sun, 4 Feb 2024 09:45:15 +0000 (11:45 +0200)]
Fix display of invisible text with opposite directionality

* src/xdisp.c (handle_invisible_prop): Skip invisible text
correctly when it starts at position whose resolved bidi level is
above the base paragraph level.  (Bug#68446)

(cherry picked from commit dd81e767b7782c275af4221fe258fa3d2948724a)

14 months agotramp: Tweak the ls-lisp declarations
Stefan Monnier [Sun, 4 Feb 2024 04:05:03 +0000 (23:05 -0500)]
tramp: Tweak the ls-lisp declarations

* lisp/net/tramp-sh.el (ls-lisp-use-insert-directory-program): Don't
declare its existence...
(tramp-sh-handle-insert-directory): ...test it instead.

* lisp/net/tramp.el (ls-lisp-dirs-first, ls-lisp-emulation)
(ls-lisp-ignore-case, ls-lisp-use-insert-directory-program)
(ls-lisp-verbosity): Move declaration...
(tramp-handle-insert-directory): ...to the point where we have a good
reason to think these variables exist.

(cherry picked from commit 45125e019c3698ff74ccb2183b789c25f9d3f574)

14 months ago* lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring): Add comment
Stefan Monnier [Sat, 3 Feb 2024 23:22:41 +0000 (18:22 -0500)]
* lisp/emacs-lisp/easy-mmode.el (easy-mmode--mode-docstring): Add comment

(cherry picked from commit 4ebded3f5ee8617ac6b1debaa01706cd78206f39)

14 months ago* doc/emacs/buffers.texi (List Buffers): Update example
Stefan Monnier [Sat, 3 Feb 2024 23:22:05 +0000 (18:22 -0500)]
* doc/emacs/buffers.texi (List Buffers): Update example

(cherry picked from commit ecf3488477c6a4382737b97698443fdf26db8bd1)

14 months agobytecomp.el: Warn for `,' not within backquote construct
Richard M Stallman [Sat, 3 Feb 2024 22:47:02 +0000 (17:47 -0500)]
bytecomp.el: Warn for `,' not within backquote construct

(bytecomp--report-comma): New function with `compiler-macro' property.

(cherry picked from commit b0049c942b8fa4093a02a9bb4ffc9c5da2261765)

14 months agotextconv.c: Fix warnings with-wide-int
Stefan Monnier [Sat, 3 Feb 2024 21:07:24 +0000 (16:07 -0500)]
textconv.c: Fix warnings with-wide-int

* src/textconv.c (set_composing_region, textconv_set_point_and_mark):
Use `min/max`.

(cherry picked from commit d41cdceb133e30c71a95fe893d70645472b326e3)

14 months ago; * lisp/files.el (hack-local-variables--find-variables): Fix comment.
Eli Zaretskii [Sat, 3 Feb 2024 16:09:35 +0000 (18:09 +0200)]
; * lisp/files.el (hack-local-variables--find-variables): Fix comment.

(cherry picked from commit 8fc7e8c2b0cb33b0e8e9822f116e6dbb530ab1b6)

14 months ago; Fix a comment in loaddefs-gen.el
Eli Zaretskii [Sat, 3 Feb 2024 16:05:55 +0000 (18:05 +0200)]
; Fix a comment in loaddefs-gen.el

(cherry picked from commit ecb69c8bd8c3dba205187c6296c8cac9b6a65121)

14 months ago; Optimize shorthand insertion in loaddefs-generate--parse-file
Joseph Turner [Sat, 3 Feb 2024 14:32:37 +0000 (08:32 -0600)]
; Optimize shorthand insertion in loaddefs-generate--parse-file

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
Optimize.

(cherry picked from commit f266622cdb34044f364976796a4e7ac003d7a1b3)

14 months ago; Also consider shorthands in check-declare-scan (bug#67523)
João Távora [Sat, 3 Feb 2024 14:27:27 +0000 (08:27 -0600)]
; Also consider shorthands in check-declare-scan (bug#67523)

* lisp/emacs-lisp/check-declare.el (check-declare-scan): Also
consider shorthands here.

(cherry picked from commit 9a51fbb69fc9dc4aa415308889ae667ee65660d7)

14 months agoFix prefix discovery for files with read-symbol-shorthands (bug#67325)
João Távora [Thu, 30 Nov 2023 13:32:50 +0000 (07:32 -0600)]
Fix prefix discovery for files with read-symbol-shorthands (bug#67325)

In a previous commit, the local-variable read-symbol-shorthands is
already read into the temporary buffer used for the autoload parsing
aerobatics, so all we needed to do in 'l-g--compute-prefixes' is
use 'read' to give 'read-symbol-shorthands' a chance to kick in.

* lisp/emacs-lisp/loaddefs-gen.el
(loaddefs-generate--compute-prefixes):

(cherry picked from commit 817140a852e79c5ef3cf7dc5e4c50aa710e8c4a2)

14 months agoAlso teach loaddefs-gen.el about shorthands (bug#63480)
João Távora [Thu, 30 Nov 2023 02:09:57 +0000 (20:09 -0600)]
Also teach loaddefs-gen.el about shorthands (bug#63480)

* lisp/emacs-lisp/loaddefs-gen.el (loaddefs-generate--parse-file):
Make aware of read-symbol-shorthands.

(cherry picked from commit c52d17d91ade6c789d8672dbd1301ba86ba4d7d1)

14 months agoImprove shorthands-font-lock-shorthands (bug#67390)
João Távora [Wed, 29 Nov 2023 22:48:34 +0000 (16:48 -0600)]
Improve shorthands-font-lock-shorthands (bug#67390)

Add font locking to the shorthand prefix of a given printed symbol
name by checking if any of the shorthand prefixes in
read-symbol-shorthands are a prefix for that print name.  Although
this does more string comparisons, it didn't prove to be any slower
than the existing approach, and is more correct.

This version is more accurate when highlighting files with many
overlapping shorthands.   Given:

;; Local Variables:
;; read-symbol-shorthands: (("bc-" . "breadcrumb-")
;;                          ("aw-" . "ace-window-")
;;                          ("zorglub/" . "ace-window-")
;;                          ("he//" . "hyperdrive-entry--")
;;                          ("h//"  . "hyperdrive--")
;;                          ("he/"  . "hyperdrive-entry-")
;;                          ("h/"   . "hyperdrive-"))
;; End:

The following are correct highlights on print names

'(zorglub/blerh ; hilits "zorglub/" reads to 'ace-window-blerh'
  he/foo        ; hilits "he/"      reads to 'hyperdrive-entry-foo'
  he//bar       ; hilits "he//"     reads to 'hyperdrive-entry--bar'
  h/coiso       ; hilits "h/"       reads to 'hyperdrive-coiso'
  h//thingy     ; hilits "h//"      reads to 'hyperdrive--thingy'
  bc-yo         ; hilits "bc-"      reads to 'breadcrumb-yo'
  aw-thingy     ; hilits "aw-"      reads to 'ace-window-thingy'
  )

Co-authored-by: Jonas Bernoulli <jonas@bernoul.li>
Co-authored-by: Joseph Turner <joseph@ushin.org>
* lisp/emacs-lisp/shorthands.el (shorthands-font-lock-shorthands):

(cherry picked from commit 0f715f9c154a47de57a2f24f19b4a402604e6dc0)

14 months agoConsider read-symbol-shorthands in check-declare.el (bug#67523)
João Távora [Wed, 29 Nov 2023 12:21:29 +0000 (06:21 -0600)]
Consider read-symbol-shorthands in check-declare.el (bug#67523)

* lisp/emacs-lisp/check-declare.el (check-declare-verify):
Consider read-symbol-shorthands.

(cherry picked from commit 17c3610c56155dd5b1efd5b7e8d6a58112f43a59)

14 months agoProcess read-symbol-shorthands from longest to shortest (bug#67390)
João Távora [Thu, 30 Nov 2023 12:00:38 +0000 (06:00 -0600)]
Process read-symbol-shorthands from longest to shortest (bug#67390)

This ensures that overlapping shorthands are handled correctly and
consistently even if specified out-of-order by the user.

* doc/lispref/symbols.texi (Shorthands): Describe shorthand sort
order.

* lisp/files.el (hack-local-variables--find-variables): Specially
handle read-symbol-shorthands.

(cherry picked from commit c2aaa8f15aa8fb3415a6c9f421f539ee34b7f52c)

14 months agoMake sure read-symbol-shorthands is permanently local
João Távora [Thu, 30 Nov 2023 12:00:44 +0000 (06:00 -0600)]
Make sure read-symbol-shorthands is permanently local

bug#63480, bug#67390

* lisp/files.el (permanently-enabled-local-variables): Add
  read-symbol-shorthands.

(cherry picked from commit 5e4a0a29fa3562ce9b2b8e497c6e71e6bc169082)

14 months agoFix downcasing of mode-name in compile.el
Eli Zaretskii [Sat, 3 Feb 2024 11:00:15 +0000 (13:00 +0200)]
Fix downcasing of mode-name in compile.el

* lisp/progmodes/compile.el (compilation--downcase-mode-name): New
function.
(compilation-start, kill-compilation): Use it instead of calling
'downcase' on 'mode-name'.  (Bug#68795)

(cherry picked from commit 492e16f2ff33e7ff65ff965e9cd2ba658c9f9a45)

14 months ago; * lisp/eshell/em-unix.el (eshell/cp, eshell/ln): Delete extra space.
Eli Zaretskii [Sat, 3 Feb 2024 09:52:30 +0000 (11:52 +0200)]
; * lisp/eshell/em-unix.el (eshell/cp, eshell/ln): Delete extra space.

Bug#68862.

(cherry picked from commit 37efb63a3df969fb2eeed70dfe7fcf6c187e05be)

14 months ago; Fix last change
Eli Zaretskii [Sat, 3 Feb 2024 09:20:11 +0000 (11:20 +0200)]
; Fix last change

* lisp/progmodes/js.el
(js--treesit-font-lock-compatibility-definition-feature): Fix
comments.

(cherry picked from commit b91f0ee2fcc52b6ef2d747c5fc7f37573adc7ca5)

14 months agoFix incompatibility with tree-sitter-javascript >= 0.20.2
Vincenzo Pupillo [Thu, 1 Feb 2024 15:57:39 +0000 (16:57 +0100)]
Fix incompatibility with tree-sitter-javascript >= 0.20.2

Starting from version 0.20.2 the grammar's primary expression
"function" has been renamed to "function_expression".  A new
function checks if the new primary expression is available,
and if so, it returns the correct rules.
* lisp/progmodes/js.el
(js--treesit-font-lock-compatibility-definition-feature): New
function.
(js--treesit-font-lock-settings): Use it.  (Bug#68879)

(cherry picked from commit 2f69353e4a756cf53459c14c5618bd262331b568)

14 months agoAvoid signaling errors from 'pixel-fill-region'
Eli Zaretskii [Sat, 3 Feb 2024 09:09:36 +0000 (11:09 +0200)]
Avoid signaling errors from 'pixel-fill-region'

* lisp/textmodes/pixel-fill.el (pixel-fill-region): Make sure the
selected window displays the current buffer.  This is important
when this function is called inside 'with-current-buffer' or
similar forms which temporarily change the buffer displayed in the
selected window.  (Bug#67791)

(cherry picked from commit d49124fc14b0bb37617b34b5839f873cea3817c8)

14 months agoPacify gcc -Wpointer-sign
Paul Eggert [Sat, 3 Feb 2024 06:53:23 +0000 (22:53 -0800)]
Pacify gcc -Wpointer-sign

* src/print.c (print_object): SDATA → SSDATA.

(cherry picked from commit 138decdc9e68a5fc9dddd1a212ed5d63d77d5d22)

14 months agoReassociate erc-networks--id for orphaned queries
F. Jason Park [Wed, 31 Jan 2024 14:01:54 +0000 (06:01 -0800)]
Reassociate erc-networks--id for orphaned queries

* lisp/erc/erc-networks.el (erc-networks--examine-targets): Adopt the
server's network ID in query buffers created before MOTD's end.  Do
this to avoid a type error in the process filter when renaming
buffers.
* lisp/erc/erc-networks.el (erc-networks--examine-targets): New test.
* test/lisp/erc/erc-scenarios-base-upstream-recon-znc.el
(erc-scenarios-upstream-recon--znc/severed): New test.
* test/lisp/erc/erc-scenarios-misc.el
(erc-scenarios-base-mask-target-routing): Adjust timeout.
* test/lisp/erc/resources/base/upstream-reconnect/znc-severed.eld:
New file.
* test/lisp/erc/resources/erc-tests-common.el
(erc-tests-common-make-server-buf): Use NAME parameter for creating
ID.

(cherry picked from commit aa6315ee685185dd1b9b63ee94636e662d68106b)

14 months agoFix local variable persistence in erc-stamp
F. Jason Park [Wed, 31 Jan 2024 02:17:41 +0000 (18:17 -0800)]
Fix local variable persistence in erc-stamp

* etc/ERC-NEWS: Mention renaming of `erc-munge-invisible-property'.
* lisp/erc/erc-stamp.el (erc-stamp-mode, erc-stamp-disable): Remove
correct function from `erc-mode-hook'.
(erc-stamp--recover-on-reconnect): Revise doc string.
(erc-munge-invisibility-spec, erc-stamp--manage-local-options-state):
Mark former name as obsolete and rename to latter.  Don't use helper
macro meant only for local modules.  This bug originated from c68dc778
"Manage some text props for ERC insertion-hook members", which stemmed
from bug#60936.
(erc-stamp--setup, erc-hide-timestamps, erc-show-timestamps)
(erc-toggle-timestamps): Use new name for
`erc-munge-invisibility-spec'.
* lisp/erc/erc.el (erc--restore-initialize-priors): Raise error at
runtime if mode var doesn't belong to a local module.
* test/lisp/erc/erc-stamp-tests.el (erc-stamp-tests--insert-right)
(erc-timestamp-intangible--left): Use new name for
`erc-munge-invisibility-spec'.
* test/lisp/erc/erc-tests.el (erc--refresh-prompt): Shadow
`erc-last-input-time'.
(erc--restore-initialize-priors): Add error form to expected
expansion, and skip test on Emacs 27.
* test/lisp/erc/resources/erc-scenarios-common.el
(erc-scenarios-common--make-bindings): Shadow `erc-last-input-time'.

(cherry picked from commit b7cdce097003a645ae396470cfab221bf789189e)

14 months agoTeach customize-option about erc-modules
F. Jason Park [Tue, 30 Jan 2024 03:04:58 +0000 (19:04 -0800)]
Teach customize-option about erc-modules

* lisp/erc/erc-goodies.el (erc-scrolltobottom-mode)
(erc-scrolltobottom-enable): Use `setq' instead of `setopt' because
the latter isn't defined in Emacs 27 and 28.  This fix is unrelated to
the main thrust of this commit.
* lisp/erc/erc.el (erc-modules): Make good on decades old language in
info node "(erc) Modules" by ensuring `customize-option' can find this
option before its containing library is loaded.  Like
`gnus-select-method', this option serves as an entry point for
configuring the application and is presented that way in tutorials and
library front matter.  Moreover, it can't be reasonably autoloaded in
the traditional way because of its many dependencies and large textual
footprint.
(erc-display-message): Revise doc string.

(cherry picked from commit bb894845ed6a06e8b301251d62f8b4a73a09d5ea)

14 months agocperl-mode.el: Don't use obsolete `special-display-popup-frame`
Stefan Monnier [Fri, 2 Feb 2024 23:59:21 +0000 (18:59 -0500)]
cperl-mode.el: Don't use obsolete `special-display-popup-frame`

* lisp/progmodes/cperl-mode.el (cperl-info-on-command): Simplify,
to let `pop-to-buffer` decide whether to create a new frame or not,
so it can be controlled by `display-buffer-alist`.

(cherry picked from commit 82e50a23fea8bc435bfae8390008702aa7d74bda)

14 months agobytecomp.el: Rewrite the way we print dynamic docstrings
Stefan Monnier [Wed, 31 Jan 2024 23:56:43 +0000 (18:56 -0500)]
bytecomp.el: Rewrite the way we print dynamic docstrings

We used to print dynamic docstrings "manually" for two reasons:

- References should look like `(#$ . POS)` but `prin1` was unable
  to print just `#$` for an sexp.
- `make-docfile` needed to find those docstrings and the object
  to which they belonged.

The second point is moot now that we don't use `make-docfile` on
`.elc` files.  So this patch lifts the first restriction,
using `print-number-table`.

The rest of the patch then simplifies and regularises the
bytecompiler's generation of dynamic docstrings, which can
now also easily be done for "inner" defvars and other places.

* src/print.c (print_preprocess, print_object): Handle strings in
`print-number-table`.
(Vprint_number_table): Improve docstring.

* lisp/emacs-lisp/bytecomp.el:
(byte-compile--list-with-n): New function.
(byte-compile--docstring-style-warn): Rename from
`byte-compile-docstring-style-warn` and change calling convention.
(byte-compile--\#$, byte-compile--docstrings): New vars.
(byte-compile-close-variables): Bind them.
(byte-compile--docstring): New function.
(byte-compile-from-buffer): Set `byte-compile--\#$`.
(byte-compile-output-file-form): Use `byte-compile--\#$` instead
of special casing specific forms.
(byte-compile--output-docform-recurse, byte-compile-output-docform):
Delete functions.
(byte-compile-file-form-autoload, byte-compile-file-form-defalias)
(byte-compile-file-form-defvar-function, byte-compile-lambda):
Use `byte-compile--docstring` and `byte-compile--list-with-n`.
(byte-compile--declare-var): Add optional `not-toplevel` arg.
(byte-compile-defvar): Add `toplevel` arg.  Use `byte-compile--docstring`.
(byte-compile-file-form-defvar): Delegate to `byte-compile-defvar`.
(byte-compile--custom-declare-face): New function.  Use it for
`custom-declare-face`.
(byte-compile-file-form-defmumble): Use `byte-compile-output-file-form`

* src/doc.c (Fdocumentation_stringp): New function.
(syms_of_doc): Defsubr it.
(store_function_docstring): Remove left-over code from when we
used DOC for the docstring of some Lisp files.

* lisp/cus-face.el (custom-declare-face): Accept dynamic docstrings.
* lisp/faces.el (face-documentation): Handle dynamic docstrings.
* lisp/help-fns.el (describe-face): Simplify accordingly.

(cherry picked from commit e9a668274e441645aed28e8c353187dfed35fcae)

14 months ago; * doc/lispref/sequences.texi (Sequence Functions): Fix typo.
Eli Zaretskii [Fri, 2 Feb 2024 16:33:54 +0000 (18:33 +0200)]
; * doc/lispref/sequences.texi (Sequence Functions): Fix typo.

(cherry picked from commit e2d1ac2f258a069f950d4df80c8096bfa34081fc)

14 months ago; And another fix...
Eli Zaretskii [Fri, 2 Feb 2024 15:48:28 +0000 (17:48 +0200)]
; And another fix...

(cherry picked from commit eb9bdb8948683e9870a3e52d085bf0c57d049130)

14 months ago; Another fix of last change.
Eli Zaretskii [Fri, 2 Feb 2024 15:46:19 +0000 (17:46 +0200)]
; Another fix of last change.

(cherry picked from commit 02bdb1e4c50153a1754b251538d705d7d81668f8)

14 months ago; Fix last change
Eli Zaretskii [Fri, 2 Feb 2024 15:39:23 +0000 (17:39 +0200)]
; Fix last change

* lisp/sort.el (sort-on): Doc fix.

* doc/lispref/sequences.texi (Sequence Functions): Fix description
of 'sort-on'.

(cherry picked from commit f9a15b8a1559999b8dd9895a5f5bb922c4e6730f)

14 months ago; Fix last change
Eli Zaretskii [Fri, 2 Feb 2024 13:27:25 +0000 (15:27 +0200)]
; Fix last change

* doc/lispref/sequences.texi (Sequence Functions): Improve
indexing of last change

(cherry picked from commit dcce1e07fe750df060ab3a7c6782dc5145710fa3)

14 months agoNew function 'sort-on'
Eli Zaretskii [Fri, 2 Feb 2024 13:24:55 +0000 (15:24 +0200)]
New function 'sort-on'

* lisp/sort.el (sort-on): New function.  Patch by John Wiegley
<jwiegley@gmail.com>.

* etc/NEWS:
* doc/lispref/sequences.texi (Sequence Functions): Document
'sort-on'.

(cherry picked from commit 4b79c80c999fe95654b7db196b12e0844473f6da)

14 months agoIncrease `emacs-lisp-docstring-fill-column` to 72
Stefan Kangas [Fri, 2 Feb 2024 11:28:54 +0000 (12:28 +0100)]
Increase `emacs-lisp-docstring-fill-column` to 72

Monitors are wider now than when these defaults were first set, and it
is useful to take better advantage of that, to fit text on fewer lines.
Yet, it has repeatedly been shown that overly long lines reduce
readability:
   "A reasonable guideline would be 55 to 75 characters per line."[1]

We also don't want to disfavor narrow displays, like mobile phones; a
more promising direction here might be to automatically word wrap
docstrings and make their maximum width customizable.  That might
require a new docstring format, however.

Bumping it by 7 characters, from 65 to 72, seems a reasonable compromise
for now.  Consideration was given to increasing it to 70 or 75, but 72
happens to be a commonly recommended maximum line width elsewhere (see
Fortran 66, Python docstrings, commit message recommendations, etc.),
and we might as well do the same.

This change was discussed in:
https://lists.gnu.org/r/emacs-devel/2022-07/msg00217.html

[1] "Optimal Line Length in Reading — A Literature Review", Nanavati and
    Bias, Visible Language, Vol. 39 No. 2 (2005).
    https://journals.uc.edu/index.php/vl/article/view/5765

* lisp/emacs-lisp/lisp-mode.el (emacs-lisp-docstring-fill-column):
* .dir-locals.el (fill-column, emacs-lisp-docstring-fill-column):
Bump default to 72.

(cherry picked from commit 72b1379f0795a5e2e9c57615c0b1d78c0b97cd1f)

14 months agoeglot: Add nushell language server
nibon7 [Wed, 17 Jan 2024 16:01:48 +0000 (00:01 +0800)]
eglot: Add nushell language server

* lisp/progmodes/eglot.el (eglot-server-programs): Add nushell
language server.  (Bug#68823)

(cherry picked from commit a3987127618b9fe49b88807f0268ec9abcc7396f)

14 months agoeglot: Add php-ts-mode to eglot-server-programs
Piotr Kwiecinski [Thu, 1 Feb 2024 13:02:20 +0000 (14:02 +0100)]
eglot: Add php-ts-mode to eglot-server-programs

* lisp/progmodes/eglot.el (eglot-server-programs): Add
php-ts-mode.  (Bug#68870)

Copyright-paperwork-exempt: yes
(cherry picked from commit 5f56bc1cdfcd474dd9cfad07240df6c252abd35c)

14 months agoSupport kotlin-ts-mode in Eglot
dalu [Thu, 1 Feb 2024 03:45:13 +0000 (11:45 +0800)]
Support kotlin-ts-mode in Eglot

* lisp/progmodes/eglot.el (eglot-server-programs): Support
kotlin-ts-mode.  (Bug#68865)

Copyright-paperwork-exempt: yes
(cherry picked from commit c14c978e3b1be9802a5c1fdf1b29e0ee48e16364)

14 months ago* lisp/simple.el (read-from-kill-ring): Ignore `read-only' text property.
Juri Linkov [Thu, 1 Feb 2024 17:16:37 +0000 (19:16 +0200)]
* lisp/simple.el (read-from-kill-ring): Ignore `read-only' text property.

Add `read-only' to the list of text properties removed from history items
(bug#68847).

(cherry picked from commit d89e427852a63dbeed3d5e03d9deb2ae9a8e3e1b)

14 months ago; Skip commit caecbf3e8db57d93715b8d20587b2ed54064cadb
Eshel Yaron [Sun, 4 Feb 2024 11:03:13 +0000 (12:03 +0100)]
; Skip commit caecbf3e8db57d93715b8d20587b2ed54064cadb

14 months ago* src/lread.c (bytecode_from_rev_list): Fix thinko
Stefan Monnier [Thu, 1 Feb 2024 16:08:56 +0000 (11:08 -0500)]
* src/lread.c (bytecode_from_rev_list): Fix thinko

(cherry picked from commit 8b92449b706e33da256142e190008bb1ead2e539)

14 months ago* src/lread.c (bytecode_from_rev_list): Re-group checks
Stefan Monnier [Thu, 1 Feb 2024 16:06:51 +0000 (11:06 -0500)]
* src/lread.c (bytecode_from_rev_list): Re-group checks

Bring together all the conditions for well-formedness of the resulting
bytecode object.

(cherry picked from commit 886f4207ab71b2a3367566d013cbcb27eec25639)

14 months ago* configure.ac: Include X11/Xlib.h for XOpenDisplay. (Bug#68842)
Ulrich Müller [Wed, 31 Jan 2024 07:49:36 +0000 (08:49 +0100)]
* configure.ac: Include X11/Xlib.h for XOpenDisplay.  (Bug#68842)

Do not merge to master.

(cherry picked from commit 5f3b46c61e23786295e8e532f7eadeee8cd4340b)

14 months agoFix search error in woman.el
Thierry Volpiatto [Wed, 31 Jan 2024 13:54:16 +0000 (13:54 +0000)]
Fix search error in woman.el

* lisp/woman.el (woman-if-body): Avoid signaling an error
if "el }" is not found.  (Bug#68852)

(cherry picked from commit d0766c0999e1e78b2f63e1d97881e926e5e6f905)

14 months agoFix 'fill-paragraph' in 'yaml-ts-mode'
Graham Marlow [Tue, 30 Jan 2024 01:16:04 +0000 (17:16 -0800)]
Fix 'fill-paragraph' in 'yaml-ts-mode'

* lisp/textmodes/yaml-ts-mode.el (yaml-ts-mode--fill-paragraph):
Avoid 'fill-paragraph' when outside of block_scalar or comment
nodes.  (Bug#68781)

(cherry picked from commit 4adb4b2ac507636a82373ed1323dabcb7ee9258d)

14 months agomacfont.m: Fix values for font widths and weights on macOS
Stanislav Yaglo [Mon, 12 Jun 2023 10:56:37 +0000 (11:56 +0100)]
macfont.m: Fix values for font widths and weights on macOS

* src/macfont.m (mac_font_get_glyphs_for_variants)
(macfont_variation_glyphs): Fix width values.  (Bug#64013)

(cherry picked from commit ff63da26b6b00fd0e2ba04239b56b385bd83b53a)

14 months agoshr: Correct SVG attribute case
Sacha Chua [Fri, 26 Jan 2024 13:54:03 +0000 (08:54 -0500)]
shr: Correct SVG attribute case

* lisp/net/shr.el (shr-correct-attribute-case): New constant.
(shr-correct-dom-case): New function to correct SVG attribute case.
(shr-tag-svg): Correct SVG attribute cases before using them.

(cherry picked from commit 169c704d74747d411a545eff9c497ddafb9c886c)

14 months agoImprove `desktop-save-mode` docstring
Stefan Kangas [Thu, 1 Feb 2024 08:08:19 +0000 (09:08 +0100)]
Improve `desktop-save-mode` docstring

* lisp/desktop.el (desktop-save-mode): Improve docstring.

(cherry picked from commit 5ce02c91bc128f390bcf0beb82e37a3fa7f251ba)

14 months ago; Fix doc strings of splash-screen data structures
Eli Zaretskii [Mon, 29 Jan 2024 12:56:40 +0000 (14:56 +0200)]
; Fix doc strings of splash-screen data structures

* lisp/startup.el (fancy-startup-text, fancy-about-text): Doc
fixes.  (Bug#68788)

(cherry picked from commit 2f98b13ed0522ef37c7bb2ca37f24b1be2f9fde5)

14 months agoFix completing-read functional REQUIRE-MATCH behavior
Joseph Turner [Sun, 12 Nov 2023 21:21:50 +0000 (13:21 -0800)]
Fix completing-read functional REQUIRE-MATCH behavior

* lisp/minibuffer.el (completion--complete-and-exit): If
minibuffer-completion-confirm is a function which returns nil,
immediately fail to complete.

See bug#66187.

(cherry picked from commit 77f5d4d523a406650036b7cd0d872d39a114a9ac)

14 months ago; Fix last change in package.texi
Eli Zaretskii [Sun, 28 Jan 2024 05:43:25 +0000 (07:43 +0200)]
; Fix last change in package.texi

* doc/lispref/package.texi (Multi-file Packages): Fix wording and
markup.  (Bug#65027)

(cherry picked from commit 6d76e3991241905b0841effc6f8cd42394d9aa64)
(cherry picked from commit 396b49871aa5432e2ff00230868013a22b180656)

14 months agoAdd annotations for bookmark completion candidates
Eshel Yaron [Sat, 3 Feb 2024 15:09:15 +0000 (16:09 +0100)]
Add annotations for bookmark completion candidates

* lisp/bookmark.el (bookmark--affixation): New function.
(bookmark-completing-read): Use it as 'affixation-function'.

14 months agoSupport sorting bookmark completions by last modified
Eshel Yaron [Sat, 3 Feb 2024 15:06:02 +0000 (16:06 +0100)]
Support sorting bookmark completions by last modified

* lisp/bookmark.el (bookmark-sort-by-last-modified-time): New fun.
(bookmark-completing-read): Provide it as a sorting option via
'minibuffer-completions-sort-orders'.

14 months ago; Refresh completions after toggling 'completion-ignore-case'
Eshel Yaron [Sat, 3 Feb 2024 13:33:57 +0000 (14:33 +0100)]
; Refresh completions after toggling 'completion-ignore-case'

* lisp/minibuffer.el (minibuffer-toggle-completion-ignore-case):
Refresh "*Completions*" buffer, if already visible.

14 months agoCease adding non-interactive inputs to 'bookmark-history'
Eshel Yaron [Sat, 3 Feb 2024 10:36:51 +0000 (11:36 +0100)]
Cease adding non-interactive inputs to 'bookmark-history'

Remove 'bookmark-maybe-historicize-string', since it's both
buggy (extends 'bookmark-history' indefinitely) and unhelpful.

* lisp/bookmark.el (bookmark-maybe-historicize-string): Don't.
(bookmark-jump,bookmark-relocate,bookmark-insert-location)
(bookmark-rename,bookmark-insert,bookmark-delete): Adjust.

* test/lisp/bookmark-tests.el (bookmark-tests-maybe-historicize-string):
Remove.

* etc/NEWS: Announce.  (Bug#12504)

14 months ago; (completing-read-multiple): Add individual inputs to history.
Eshel Yaron [Fri, 2 Feb 2024 19:09:15 +0000 (20:09 +0100)]
; (completing-read-multiple): Add individual inputs to history.

14 months ago; * doc/emacs/basic.texi (Continuation Lines): Rearrange pxref.
Po Lu [Thu, 1 Feb 2024 08:25:09 +0000 (16:25 +0800)]
; * doc/emacs/basic.texi (Continuation Lines): Rearrange pxref.

(cherry picked from commit 849f8c1d49edc93cd8133d2f0dee5ceeb8f659e5)

14 months ago* src/term.c (produce_glyphs): Synchronize with gui_produce_glyphs.
Po Lu [Thu, 1 Feb 2024 08:18:53 +0000 (16:18 +0800)]
* src/term.c (produce_glyphs): Synchronize with gui_produce_glyphs.

(cherry picked from commit 4e1661e96c4412e8bf04cd1ec8948df4a782a10c)

14 months agoPrevent continuation from affecting tab width in/after line prefix
Po Lu [Thu, 1 Feb 2024 08:16:09 +0000 (16:16 +0800)]
Prevent continuation from affecting tab width in/after line prefix

* src/dispextern.h (struct it) <wrap_prefix_width>: New field,
synchronized with current_x when producing glyphs for wrap
prefixes, and subtracted from it->current_x when computing tab
widths.

* src/term.c (produce_glyphs): Set wrap_prefix_width.

* src/xdisp.c (start_display, display_min_width, move_it_to)
(move_it_vertically_backward, move_it_by_lines)
(window_text_pixel_size, display_tab_bar_line)
(display_tool_bar_line, redisplay_internal, redisplay_window)
(try_window_id, insert_left_trunc_glyphs)
(extend_face_to_end_of_line, display_line)
(Fmove_point_visually): Set or clear wrap_prefix_width as
appropriate.
(gui_produce_glyphs): Set or clear it->wrap_prefix_width.  When
computing the base position of a tab character, do not subtract
the continuation line width if a line prefix is the current
iterator method.  Subtract the wrap_prefix_width otherwise, in
order that the width of the tab is computed free of influence
from the wrap prefix.

(cherry picked from commit 881a1ade30d2efacf9fcbd136b8fea722760f36e)

14 months agoIntroduce a global variant of visual-wrap-prefix-mode
Po Lu [Thu, 1 Feb 2024 08:08:47 +0000 (16:08 +0800)]
Introduce a global variant of visual-wrap-prefix-mode

* doc/emacs/basic.texi (Continuation Lines):

* etc/NEWS:

* lisp/visual-wrap.el (visual-wrap-prefix-mode): Document this
new global minor mode.
(global-visual-wrap-prefix-mode): New global minor mode.

(cherry picked from commit b86bc02096c65517b9a29c20635ece100864fc62)

14 months agoNew command 'minibuffer-toggle-completion-ignore-case'
Eshel Yaron [Fri, 2 Feb 2024 18:03:21 +0000 (19:03 +0100)]
New command 'minibuffer-toggle-completion-ignore-case'

* lisp/minibuffer.el (completion-all-sorted-completions): New command.
(minibuffer-local-completion-map): Bind it to 'C-A'.

* doc/emacs/mini.texi (Completion Commands):
* doc/lispref/minibuf.texi (Completion Commands): Document it.

* etc/NEWS: Announce it.

14 months ago; Fix updating completion preview after deletion at eob
Eshel Yaron [Fri, 2 Feb 2024 12:33:43 +0000 (13:33 +0100)]
; Fix updating completion preview after deletion at eob

* lisp/completion-preview.el (completion-preview--show): Use the
actual overlay position, instead of its 'completion-preview-end'
property, in case the overlay has moved (e.g. when called after a
deletion command).

14 months ago; Read multiple functions in 'edebug-remove-instrumentation'
Eshel Yaron [Thu, 1 Feb 2024 18:37:12 +0000 (19:37 +0100)]
; Read multiple functions in 'edebug-remove-instrumentation'

* lisp/emacs-lisp/edebug.el (edebug-remove-instrumentation): Use
'completing-read-multiple'.

14 months ago; Fix mid-symbol updating/cycling completion preview
Eshel Yaron [Thu, 1 Feb 2024 11:30:24 +0000 (12:30 +0100)]
; Fix mid-symbol updating/cycling completion preview

This fixes an issue where 'completion-preview-next-candidate' would
fail to take into account the part of the symbol that follows
point (the suffix) when point is at the middle of a symbol, as well as
a similar issue in 'completion-preview--show' that would manifest with
slow 'completion-at-point-functions'.

* lisp/completion-preview.el (completion-preview-next-candidate)
(completion-preview--show): Use recorded 'completion-preview-end'
position instead of current point.

* test/lisp/completion-preview-tests.el (completion-preview-mid-symbol-cycle):
New test.

14 months ago; Ensure 'thing-at-point-looking-at' finds full match
Eshel Yaron [Wed, 31 Jan 2024 20:37:18 +0000 (21:37 +0100)]
; Ensure 'thing-at-point-looking-at' finds full match

* lisp/thingatpt.el (thing-at-point-looking-at): Regexp-search from
the beginning forward, instead of the other way around.

* test/lisp/thingatpt-tests.el (thing-at-point-test-data): Add tests.

(Bug#68762)

15 months ago; hierarchy-tests.el: keep doc string within 80 columns
Mattias Engdegård [Wed, 31 Jan 2024 16:50:30 +0000 (17:50 +0100)]
; hierarchy-tests.el: keep doc string within 80 columns

(cherry picked from commit cd2c45a3890601e1bc498c81e64791fead6efc86)

15 months agoBytecode engine fast-path streamlining of plain symbols
Mattias Engdegård [Wed, 31 Jan 2024 16:35:59 +0000 (17:35 +0100)]
Bytecode engine fast-path streamlining of plain symbols

* src/bytecode.c (exec_byte_code):
Only use fast-path optimisations for calls and dynamic variable
reference and setting where the symbol is plain, which is much faster.

(cherry picked from commit 344a846b07dfcc9ad38e510da9115fadae94a477)

15 months agoEliminate lazy bytecode loading
Mattias Engdegård [Tue, 30 Jan 2024 16:55:19 +0000 (17:55 +0100)]
Eliminate lazy bytecode loading

The obsolete lazy-loaded bytecode feature, enabled by
`byte-compile-dynamic`, slows down Lisp execution even when not in use
because every call to a bytecode function has to check that function
for laziness.

This change forces up-front loading of all lazy bytecode so that we
can remove all those checks.  (Dynamically loaded doc strings are not
affected.)

There is no point in generating lazy bytecode any more so we stop
doing that; this simplifies the compiler.  `byte-compile-dynamic` now
has no effect.

This is a fully compatible change; the few remaining users of
`byte-compile-dynamic` should not notice any difference.

* src/lread.c (bytecode_from_rev_list): Force eager loading of
lazy bytecode.
* src/bytecode.c (exec_byte_code): Remove lazy bytecode checks.
* src/eval.c (fetch_and_exec_byte_code, Ffetch_bytecode): Remove.
(funcall_lambda): Call exec_byte_code directly, avoiding checks.
* lisp/subr.el (fetch-bytecode): New definition, obsolete no-op.
* lisp/emacs-lisp/disass.el (disassemble-1):
* lisp/emacs-lisp/bytecomp.el (byte-compile-unfold-bcf):
Remove calls to fetch-bytecode.
(byte-compile-dynamic): Update doc string.
(byte-compile-close-variables, byte-compile-from-buffer)
(byte-compile-insert-header, byte-compile-output-file-form)
(byte-compile--output-docform-recurse, byte-compile-output-docform)
(byte-compile-file-form-defmumble):
Remove effects of byte-compile-dynamic.
* doc/lispref/compile.texi (Dynamic Loading): Remove node now that
the entire `byte-compile-dynamic` facility has been rendered inert.
* etc/NEWS: Announce changes.

(cherry picked from commit 9bcc9690a8076a22398c27a7ccf836ee95eb16a2)

15 months agoAllow equal user-defined hash table tests with different names
Mattias Engdegård [Wed, 31 Jan 2024 11:21:12 +0000 (12:21 +0100)]
Allow equal user-defined hash table tests with different names

Hash tables using different user-defined tests defined identically
sometimes ended up using the wrong test (bug#68668).

* src/fns.c (get_hash_table_user_test): Take test name into account
when matching the test object.
* test/src/fns-tests.el (fns--define-hash-table-test): New.

(cherry picked from commit 7e85311a9113a4720ec9d7b06188646fc7bdae0b)

15 months agoDon't hang when display objects are displaced by line or wrap-prefixes
Po Lu [Wed, 31 Jan 2024 06:34:19 +0000 (14:34 +0800)]
Don't hang when display objects are displaced by line or wrap-prefixes

This fixes a hang that would frequently rear its ugly head while
displaying messages in the `telega.el' instant messenger client,
which inserts images approaching the width of the window with
line and wrap prefixes.

* src/xdisp.c (move_it_in_display_line_to): If a line or wrap
prefix is set in place, do not generate continuation lines until
a minimum of one glyph has been produced outside that prefix.
(move_it_to): Remove the previous workaround that could not
recover from errors caused by display strings.
(display_line): Synchronize with move_it_in_display_line_to;
remove old workaround that only provided for oversized wrap
prefixes comprising `space' display objects.

(cherry picked from commit 5f24c9a4c82f7106e22cac8a5201db8307239837)

15 months agoFix treesit--indent-1 regarding local parsers
Yuan Fu [Wed, 31 Jan 2024 06:18:33 +0000 (22:18 -0800)]
Fix treesit--indent-1 regarding local parsers

Take this code as an example:

1 class Foo
2 {
3     /**
4      * Block comment
5      */
6     function foo($c) {
7     }
8 }

Suppose the block comment is covered by a local parser.  When we
indent line 3, treesit--indent-1 will try to get the local parser at
the BOL, and it'll get the local parser.  But it shouldn't use the
local parser to indent this line, it should use the host parser of
that local parser instead.

So now, if treesit--indent-1 gets a local parser, but the local
parser's root node's start coincides with BOL, treesit--indent-1 will
use the host parser to indent this line.

We also need to make treesit--update-ranges-local to save the host
parser along with the local parser, and make
treesit-local-parsers-at/on extract and return the host parser.

I also switch the two cases in the cond form in treesit--indent-1:
(null (treesit-parser-list)) and (car local-parsers), (car
local-parsers) now takes precedence.

* lisp/treesit.el (treesit-local-parsers-at):
(treesit-local-parsers-on): Add WITH-HOST parameter.
(treesit--update-ranges-local): Save the host parser to the local
overlay.
(treesit--indent-1): If the root node of the local parser is at BOL,
use the host parser instead.

(cherry picked from commit f63bcf2dfeb26de511f468adc237e6ea8a3cb6cc)

15 months agoUpdate from Gnulib by running admin/merge-gnulib
Paul Eggert [Wed, 31 Jan 2024 01:22:50 +0000 (17:22 -0800)]
Update from Gnulib by running admin/merge-gnulib

(cherry picked from commit dd177b7b88c81ab71e1d5a97b872d85d524fee9b)

15 months ago; Spelling fixes
Paul Eggert [Wed, 31 Jan 2024 01:09:37 +0000 (17:09 -0800)]
; Spelling fixes

(cherry picked from commit 17771b2a425e776c81e7454d942ec238264ce12b)

15 months ago* lisp/emacs-lisp/inline.el (inline-const-val): Improve docstring
Stefan Monnier [Tue, 30 Jan 2024 18:14:32 +0000 (13:14 -0500)]
* lisp/emacs-lisp/inline.el (inline-const-val): Improve docstring

(cherry picked from commit 3afbab2f1d6ce7d75cadf12af096314123b6d56f)

15 months ago; Rename a lexical variable in vhdl-mode.el
Eli Zaretskii [Tue, 30 Jan 2024 14:15:59 +0000 (16:15 +0200)]
; Rename a lexical variable in vhdl-mode.el

* lisp/progmodes/vhdl-mode.el (vhdl-speedbar-insert-hierarchy):
Rename a variable to avoid shadowing a global.  (Bug#68810)

(cherry picked from commit c8b9ec923f2838321aafd6c0912c7e6371145ce0)