]> git.eshelyaron.com Git - emacs.git/log
emacs.git
16 months ago; * lisp/files.el (find-buffer-visiting): Fix whitespace of last change.
Eli Zaretskii [Sat, 30 Dec 2023 11:04:58 +0000 (13:04 +0200)]
; * lisp/files.el (find-buffer-visiting): Fix whitespace of last change.

(cherry picked from commit 06f2bb9c24104b87b458506f3bdee1aaba7bbf97)

16 months agofind-buffer-visiting: Fix test breakage introduced in b7a737ef49
Ihor Radchenko [Sat, 30 Dec 2023 10:31:51 +0000 (11:31 +0100)]
find-buffer-visiting: Fix test breakage introduced in b7a737ef49

* lisp/files.el (find-buffer-visiting): Fix code branch checking for
buffers referring to the same file number.  We should check the found
buffer with the file number, not current.

Link: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#412
(cherry picked from commit 46a93aa7b0753e7e1ba7c557709b2680ebb24fde)

16 months ago; Skip commit 5f80541fbc46a7854da00b0f8e67c0daa89d454a
Eshel Yaron [Tue, 2 Jan 2024 07:53:25 +0000 (08:53 +0100)]
; Skip commit 5f80541fbc46a7854da00b0f8e67c0daa89d454a

16 months ago; Skip commit fafeafd2bc2a4b1440c9aa03b846244626ee12a3
Eshel Yaron [Tue, 2 Jan 2024 07:53:04 +0000 (08:53 +0100)]
; Skip commit fafeafd2bc2a4b1440c9aa03b846244626ee12a3

16 months ago; Auto-commit of loaddefs files.
Eli Zaretskii [Sat, 30 Dec 2023 09:56:52 +0000 (04:56 -0500)]
; Auto-commit of loaddefs files.

(cherry picked from commit 95fd7d7ef8518f5276f151513849409b1ad1ff4b)

16 months agoImprove performance let-binding `case-fold-search' (bug#66117)
Ihor Radchenko [Fri, 15 Dec 2023 10:47:45 +0000 (11:47 +0100)]
Improve performance let-binding `case-fold-search' (bug#66117)

* src/buffer.h: Remove case_fold_search_ buffer object slot.
* src/buffer.c (bset_case_fold_search): Remove - no longer needed.
(init_buffer_once): Remove removed buffer slot init.
(syms_of_buffer): Use DEFVAR_LISP to define `case-fold-search' and
declare it buffer-local.
* src/minibuf.c (syms_of_minibuf): Remove DEFSYM call for
`case-fold-search' symbol.  It now lives in `syms_of_buffer'.
* src/editfns.c (Fcompare_buffer_substrings):
(Fchar_equal):
* src/search.c (looking_at_1):
(string_match_1):
(search_command):
(Fre__describe_compiled): Adjust C queries to `case-fold-search' value
to use C globals instead of BVAR macro.
* doc/lispref/internals.texi (Buffer Internals): Do not list
`case_fold_search' slot.

See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66117#259

When used as buffer slot, let-binding `case-fold-search' would scale
with the number of live buffers and can be slow.  This change makes
let-binding much faster at the cost of slightly slower `set-buffer'.

(cherry picked from commit aa0037aaf7c2cd7052925fdeca73c77c91254de1)

16 months ago; Fix last change
Eli Zaretskii [Sat, 30 Dec 2023 08:01:31 +0000 (10:01 +0200)]
; Fix last change

* src/buffer.c (Ffind_buffer): Doc fix.  (Bug#66117)

* test/manual/etags/c-src/emacs/src/lisp.h (get_truename_buffer):
Revert removal of prototype: that breaks the test results.

(cherry picked from commit 784acce8425fb3143719d34be1e39be499564dfb)

16 months agoImprove performance of `find-buffer-visiting' (bug#66117)
Ihor Radchenko [Sun, 8 Oct 2023 08:48:42 +0000 (11:48 +0300)]
Improve performance of `find-buffer-visiting' (bug#66117)

* src/buffer.c (Fget_truename_buffer): Expose `get_truename_buffer' to
Elisp.
(Ffind_buffer): New subr searching for a live buffer with a given
value of buffer-local variable.
(syms_of_buffer): Register the new added subroutines.
* src/filelock.c (lock_file): Use the new `Fget_truename_buffer' name.
* src/lisp.h:
* test/manual/etags/c-src/emacs/src/lisp.h: Remove no-longer-necessary
extern declarations for `get_truename_buffer'.
* lisp/files.el (find-buffer-visiting): Refactor, using subroutines to
search for buffers instead of slow manual Elisp iterations.

(cherry picked from commit b7a737ef49e787120ea7a7e9f4d4ef04dd1a0723)

16 months ago* lisp/textmodes/remember.el: Remove org-remember support.
Ihor Radchenko [Thu, 28 Dec 2023 10:58:42 +0000 (11:58 +0100)]
* lisp/textmodes/remember.el: Remove org-remember support.

org-remember has been removed from Org mode proper and then from
org-contrib 10 years ago in
https://git.sr.ht/~bzg/org-contrib/commit/be8736195e
(Bug#68076)

(cherry picked from commit 0cb252cf21efec49f693f5a8873ed02c1bcbd713)

16 months agoFix previous page and next page tooltips in doc-view.el
Daniel Martín [Mon, 25 Dec 2023 10:43:39 +0000 (11:43 +0100)]
Fix previous page and next page tooltips in doc-view.el

* lisp/doc-view.el (doc-view-tool-bar-map): Fix toolbar items to go to
next and previous pages in a document.  (Bug#68018)

(cherry picked from commit 35f8629a3f42b1d053cd5c9e6445f0240131be42)

16 months agoAdd tests for `let' (bug#66117)
Ihor Radchenko [Sat, 23 Dec 2023 14:29:36 +0000 (15:29 +0100)]
Add tests for `let' (bug#66117)

* test/src/eval-tests.el (eval-tests/default-value): New test.

(cherry picked from commit bb0a5eb41f183b37015d09190b56ac8ce6e3c5c8)

16 months agoRevert "Fix treesit-node-field-name and friends (bug#66674)"
Yuan Fu [Sat, 30 Dec 2023 03:52:07 +0000 (19:52 -0800)]
Revert "Fix treesit-node-field-name and friends (bug#66674)"

This reverts commit 9874561f39e62c1c9fada6c2e013f93d9ea65729.

See bug#67990.  Basically our original code is correct, the error is
in libtree-sitter, which only manifests in certain cases.

https://github.com/tree-sitter/tree-sitter/pull/2104
(cherry picked from commit 530315287254da2e6b0767ad343fa55f79be8536)

16 months agoSimplify code relating to UI thread synchronization
Po Lu [Sat, 30 Dec 2023 02:57:11 +0000 (10:57 +0800)]
Simplify code relating to UI thread synchronization

* java/org/gnu/emacs/EmacsContextMenu.java (display):

* java/org/gnu/emacs/EmacsDialog.java (display):

* java/org/gnu/emacs/EmacsService.java (getEmacsView)
(getLocationOnScreen, getClipboardManager)
(requestDirectoryAccess): Replace manual synchronization within
Runnable objects by usage of FutureTask.
(syncRunnable): Accept FutureTask<V> in place of Runnables, and
obtain and return results from calls to its get method.

(cherry picked from commit 94e3d1159334d08fd1d54464bf6173755ba606b7)

16 months agoRevert "Silence warning when requiring ruby-ts-mode"
Stefan Kangas [Sat, 30 Dec 2023 00:06:41 +0000 (01:06 +0100)]
Revert "Silence warning when requiring ruby-ts-mode"

This reverts commit bf81706988f6b1b9d6e8033c8227f0129e04ef03.

We deliberately don't silence these warnings, so that a user who loads
the mode without having the grammar installed sees the warning and
realizes the problem in time to fix it.

(cherry picked from commit fe2b68d405251498518b279a17a87f4cbcf82479)

16 months ago; Skip commit d7ff14fcba6f0830eeadb98981bb626cf7314c53
Eshel Yaron [Tue, 2 Jan 2024 07:30:20 +0000 (08:30 +0100)]
; Skip commit d7ff14fcba6f0830eeadb98981bb626cf7314c53

16 months agoImprove documentation of 'require-with-check'
Eli Zaretskii [Fri, 29 Dec 2023 19:19:50 +0000 (21:19 +0200)]
Improve documentation of 'require-with-check'

* doc/lispref/loading.texi (Named Features): Document
'require-with-check'.

* etc/NEWS: Fix wording of entry about 'require-with-check'.

(cherry picked from commit 291763feca34174290345055a6748436839f7606)

16 months ago* lisp/progmodes/eglot.el (toplevel): Fix usual last minute typo
Stefan Monnier [Fri, 29 Dec 2023 16:21:38 +0000 (11:21 -0500)]
* lisp/progmodes/eglot.el (toplevel): Fix usual last minute typo

(cherry picked from commit b0bead793f880a9434c38caeaa744f7d7a0e519b)

16 months ago(require-with-check): New function (bug#67696)
Stefan Monnier [Fri, 29 Dec 2023 16:17:51 +0000 (11:17 -0500)]
(require-with-check): New function (bug#67696)

* lisp/files.el (require-with-check): New function.
* lisp/progmodes/eglot.el: Use it (and prefer #' to quote function names).

(cherry picked from commit 2a8e6c8c84ed33674e525625644d5ce84ee8c59a)

16 months ago; Fix style of comments and doc strings in last change in ses.el
Eli Zaretskii [Fri, 29 Dec 2023 12:32:56 +0000 (14:32 +0200)]
; Fix style of comments and doc strings in last change in ses.el

* lisp/ses.el (ses-cell-set-formula): Fix comments style.
(cl-member): Fix byte-compilation warning.

* test/lisp/ses-tests.el
(ses-set-formula-write-cells-with-changed-references): Doc fix.

(cherry picked from commit f27dd1f954bcc6f35f4248370a7fe09de5f66096)

16 months agoFix 13 years old bug#5852 !
Vincent Belaïche [Fri, 29 Dec 2023 11:11:51 +0000 (12:11 +0100)]
Fix 13 years old bug#5852 !

Sometimes recalculating a cell does not change its value, however it
still have to be written to the data area when the reference list is
changed

* lisp/ses.el (ses-cell-set-formula): Fix bug#5852, at last !

* test/lisp/ses-tests.el
(ses-set-formula-write-cells-with-changed-references): Rename test
from ses-bug5852, do not expect failure, and update description.

(cherry picked from commit 825b896acfe2b2d2b3a8f29b4ed1d5810d222663)

16 months agoSimplify test ses-bug5852
Vincent Belaïche [Fri, 29 Dec 2023 11:29:20 +0000 (12:29 +0100)]
Simplify test ses-bug5852

* test/lisp/ses-tests.el (ses-bug5852): Siumplify test to
demonstrate that the bug is not connected to yanking, but has to
do with ses-cell-set-formula.

(cherry picked from commit b96087d42714ebd4cbf610fc01eebc4f2adae5f7)

16 months agoAdd test reproducting bug #5852
Vincent Belaïche [Thu, 28 Dec 2023 18:08:46 +0000 (19:08 +0100)]
Add test reproducting bug #5852

(cherry picked from commit 0ffcfd015d383e4f04ea41af7ac480a27c6f5da5)

16 months ago; Declare unused cperl-mode function obsolete
Stefan Kangas [Fri, 29 Dec 2023 10:39:28 +0000 (11:39 +0100)]
; Declare unused cperl-mode function obsolete

* lisp/progmodes/cperl-mode.el (cperl-font-lock-unfontify-region-function):
Make unused function obsolete.

(cherry picked from commit ae9657e1f4a01552d5ab1602fffa817f1fe2e56c)

16 months ago; Delete some commented out code from ange-ftp.el
Stefan Kangas [Fri, 29 Dec 2023 10:25:53 +0000 (11:25 +0100)]
; Delete some commented out code from ange-ftp.el

* lisp/net/ange-ftp.el: Delete some code commented out since 2002.

(cherry picked from commit 5cf22cacda0d14155794cba8c26549e05f073440)

16 months agoDon't recommend using `cperl-hairy`
Stefan Kangas [Fri, 29 Dec 2023 10:24:48 +0000 (11:24 +0100)]
Don't recommend using `cperl-hairy`

Enabling `cperl-hairy` makes cperl-mode break many Emacs conventions
and can be confusing to new users.  Let's not say that this is the
"recommended mode of use", instead leaving it up to the user.

* lisp/progmodes/cperl-mode.el (cperl-mode): Don't recommend using
`cperl-hairy'.

(cherry picked from commit 82eb4f00203f912cc0be902c8151c07c4792425d)

16 months agoObey USE_MY_METRICS in compound glyphs
Po Lu [Fri, 29 Dec 2023 06:58:19 +0000 (14:58 +0800)]
Obey USE_MY_METRICS in compound glyphs

* src/sfnt.c (struct sfnt_compound_glyph_context): New fields
holding the positions of both phantom points.
(sfnt_decompose_compound_glyph): New argument METRICS_RETURN;
return the metrics of components with USE_MY_METRICS within this
field.
(sfnt_decompose_glyph): New argument METRICS_RETURN, which
serves the same purpose.
(sfnt_build_glyph_outline): Apply glyph advance and origin
distortion to METRICS, and return the metrics as altered by
compound glyphs in there.
(sfnt_lookup_glyph_metrics): Trim away two unused parameters,
PIXEL_SIZE and HEAD, whose functionality has been superseeded by
sfnt_scale_metrics and the implicit scaling the interpreter
performs.
(sfnt_interpret_compound_glyph_2): Save phantom points within
fields provided to that end in CONTEXT.
(sfnt_interpret_compound_glyph_1): Save and source phantom
points for each glyph to and from the context.
(sfnt_test_get_metrics, main): Adjust tests correspondingly.

* src/sfnt.h: Update prototypes.

* src/sfntfont.c (sfntfont_get_metrics): Remove obsolete
parameters.
(sfntfont_get_glyph_outline): Don't change temp by the metrics
distortions, which is now the task of sfnt_decompose_glyph.

(cherry picked from commit ea3d211f3f7ecc5b59d5affc1aed812a2ded62b0)

16 months ago; * src/buffer.c (syms_of_buffer) <default-directory>: Doc fix (bug#68088).
Eli Zaretskii [Thu, 28 Dec 2023 19:46:59 +0000 (21:46 +0200)]
; * src/buffer.c (syms_of_buffer) <default-directory>: Doc fix (bug#68088).

(cherry picked from commit fa0bb88302b5d9e02190f60cf50ce8a85e849cdf)

16 months agoFix extraction of files with wildcards in names from zip archives
Eli Zaretskii [Thu, 28 Dec 2023 14:51:45 +0000 (16:51 +0200)]
Fix extraction of files with wildcards in names from zip archives

* lisp/arc-mode.el (archive-zip-extract): Quote wildcard
characters in file names as [C].  (Bug#67926)

(cherry picked from commit 714942b1c3767ee6c70a5644d6a4460dedbe4422)

16 months agoFix rectangle commands when 'indent-tabs-mode' is non-nil
Eli Zaretskii [Thu, 28 Dec 2023 08:56:33 +0000 (10:56 +0200)]
Fix rectangle commands when 'indent-tabs-mode' is non-nil

* lisp/rect.el (delete-rectangle, kill-rectangle): Temporarily
bind 'indent-tabs-mode' to nil.  (Bug#67925)

(cherry picked from commit 24e71050ea9f82979fadd320e8aaf9c8d58b72f2)

16 months agoFix 'delete-rectangle' with multi-column characters
Eli Zaretskii [Thu, 28 Dec 2023 08:50:59 +0000 (10:50 +0200)]
Fix 'delete-rectangle' with multi-column characters

* lisp/rect.el (delete-rectangle-line): Support multi-column
characters, when STARTCOL is in the middle of such a character.
(Bug#67925)

(cherry picked from commit 6abf1c038f6c74f2e56078228cdf8a0cda40c6b3)

16 months agoSideline implied invisible-intangible coupling in ERC
F. Jason Park [Thu, 28 Dec 2023 02:44:29 +0000 (18:44 -0800)]
Sideline implied invisible-intangible coupling in ERC

* etc/ERC-NEWS: Add entry explaining removal of automatic `intangible'
propertizing of t-valued `invisible' messages.
* lisp/erc/erc.el (erc--insert-invisible-as-intangible-p): New flag
variable, a temporary escape hatch to regain pre-5.6 behavior
involving the modification of certain `invisible' messages.
(erc--insert-line): Gate unfavorable behavior behind
`erc--insert-invisible-as-intangible-p' flag.  Add comment clarifying
deferred initialization of `insert-position', which was part of the
many changes introduced as part of bug#60936.

(cherry picked from commit 775bd4b631e9303c20e4ebddd179960276065448)

16 months agoMove ERC test utilities to common file
F. Jason Park [Sun, 24 Dec 2023 20:21:49 +0000 (12:21 -0800)]
Move ERC test utilities to common file

* lisp/erc/erc-common.el (erc--define-catalog): Update name of
reference to convenience command now located in `erc-tests-common'.
* test/lisp/erc/erc-button-tests.el: Require common test-util library
`erc-tests-common', located under test/lisp/erc/resources.
; (erc-button-alist--url,
; erc-button-tests--erc-button-alist--function-as-form,
; erc-button-tests--erc-button-alist--nil-form,
; erc-button--display-error-notice-with-keys): Use common helper
; `erc-tests-common-init-server-proc' from test-utils library.
* test/lisp/erc/erc-fill-tests.el: Require `erc-tests-common'.
(erc-fill-tests--wrap-populate): Use helper
`erc-tests-common-init-server-proc'.
(erc-fill-tests--save-p): Remove.  See replacement
`erc-tests-common-snapshot-save-p' in erc-tests-common.
(erc-fill-tests--graphic-dir): Add trailing slash.
(erc-fill-tests--compare): Move body to generalized utility
`erc-tests-common-snapshot-compare' in erc-tests-common.
* test/lisp/erc/erc-goodies-tests.el: Require `erc-tests-common'.
(erc--get-inserted-msg-beg/readonly,
erc--get-inserted-msg-end/readonly,
erc--get-inserted-msg-bounds/readonly): Move here from erc-tests.el.
* test/lisp/erc/erc-networks-tests.el: Load `erc-tests-common'.
(erc-networks-tests--create-live-proc): Defer to
`erc-tests-common-init-server-proc' and drop optional buffer param.
(erc-networks-tests--clean-bufs): Defer to
`erc-tests-common-kill-buffers'.
(erc-networks--rename-server-buffer--existing--live): Call
`erc-networks-tests--create-live-proc' in server buffer.
* test/lisp/erc/erc-scenarios-internal.el: Load `erc-tests-common'.
(erc-scenarios-internal--run-graphical-all): Use
`erc-tests-common-create-subprocess' to create process.
* test/lisp/erc/erc-scenarios-sasl.el
(erc-scenarios-sasl--plain-fail): Silence error message.
* test/lisp/erc/erc-stamp-tests.el: Require `erc-tests-common'.
(erc-stamp-tests--insert-right, erc-timestamp-intangible--left): Use
`erc-tests-common-init-server-proc'.
(erc-tests--assert-get-inserted-msg/stamp,
erc-stamp-tests--assert-get-inserted-msg/stamp): Move from
erc-tests.el, renaming to latter.
(erc--get-inserted-msg-beg/stamp,
erc--get-inserted-msg-beg/readonly/stamp,
erc--get-inserted-msg-end/stamp,
erc--get-inserted-msg-end/readonly/stamp,
erc--get-inserted-msg-bounds/stamp,
erc--get-inserted-msg-bounds/readonly/stamp): Move here from
erc-tests.el.
* test/lisp/erc/erc-tests.el: Require `erc-tests-common'.
(erc-with-server-buffer): Use renamed test-helper utility
`erc-tests-common-init-server-proc'.
(erc-tests--send-prep, erc-tests--set-fake-server-process): Move to
`erc-tests-common' library and rename to
`erc-tests-common-prep-for-insertion' and
`erc-tests-common-init-server-proc', respectively.
; (erc-hide-prompt, erc--refresh-prompt,
; erc-setup-buffer--custom-action, erc--parsed-prefix,
; erc--update-channel-modes, erc--channel-modes,
; erc--channel-modes/graphic-p, erc-ring-previous-command): Use
; `erc-tests-common-prep-for-insertion' instead of
; `erc-tests--send-prep', and use `erc-tests-common-init-server-proc'
; instead of `erc-tests--set-fake-server-process'.
(erc-tests--with-process-input-spy): Move to `erc-tests-common' and
rename `erc-tests-common-with-process-input-spy'.
; (erc--check-prompt-input-functions, erc-send-current-line,
; erc--check-prompt-input-for-multiline-blanks,
; erc-send-whitespace-lines): Use renamed
; `erc-tests-common-with-process-input-spy' and
; `erc-tests-common-init-server-proc'.
; (erc-process-input-line): Use renamed
; `erc-tests-common-init-server-proc'.
(erc-tests--get-inserted-msg-setup,
erc-tests--assert-get-inserted-msg,
erc-tests--assert-get-inserted-msg/basic,
erc-tests--assert-get-inserted-msg-readonly-with): Move to
`erc-tests-common' and rename with "common" prefix, using single
instead of double hyphen.
(erc-tests--assert-get-inserted-msg/stamp): Move to `erc-stamp-tests'
and rename with "stamp" prefix.
(erc--get-inserted-msg-beg/stamp,
erc--get-inserted-msg-beg/readonly/stamp,
erc--get-inserted-msg-end/stamp,
erc--get-inserted-msg-end/readonly/stamp,
erc--get-inserted-msg-bounds/stamp,
erc--get-inserted-msg-bounds/readonly/stamp): Move to
`erc-stamp-tests'.
(erc--get-inserted-msg-beg/readonly,
erc--get-inserted-msg-end/readonly,
erc--get-inserted-msg-bounds/readonly): Move to `erc-goodies-tests'.
; (erc--get-inserted-msg-beg/basic,
; erc--get-inserted-msg-end/basic,
; erc--get-inserted-msg-bounds/basic): Use common helpers.
; (erc--route-insertion): Use renamed helper functions
; `erc-tests-common-with-process-input-spy' and
; `erc-tests-common-init-server-proc'.
(erc-tests--make-server-buf): Move to `erc-common-tests' and rename
with "common" prefix.
(erc-tests--make-client-buf): Remove unused function without supplying
replacement.
; (erc-handle-irc-url): Use renamed `erc-tests-common-make-server-buf'
; utility function.
; (erc-tests--assert-printed-in-subprocess): Use helper from common lib
; `erc-tests-common-create-subprocess code' to do the heavy lifting.
(erc-tests--string-to-propertized-parts,
erc-tests-pp-propertized-parts): Move to `erc-tests-common' and rename
with "common" prefix.
* test/lisp/erc/resources/erc-tests-common.el: New file containing
helper utilities and fixtures used by multiple files in test/lisp/erc.

(cherry picked from commit 7097be8ef601a20cdcd5d3a2bf2b1e33f2124981)

16 months agoAllow selecting graphical ERC tests manually
F. Jason Park [Sat, 23 Dec 2023 23:23:44 +0000 (15:23 -0800)]
Allow selecting graphical ERC tests manually

* test/lisp/erc/erc-fill-tests.el
(erc-fill-wrap--monospace, erc-fill-wrap--merge,
erc-fill-wrap-tests--merge-action,
erc-fill-wrap-tests--merge-action/indicator-pre,
erc-fill-wrap-tests--merge-action/indicator-post,
erc-fill-line-spacing, erc-fill-wrap-visual-keys--body,
erc-fill-wrap-visual-keys--prompt, erc-fill--left-hand-stamps): Tag as
:erc--graphcial.
* test/lisp/erc/erc-scenarios-internal.el
(erc-scenarios-internal--run-interactive-all): New test to assist ERC
contributors in -jN parallel runs.
* test/lisp/erc/erc-scenarios-scrolltobottom-relaxed.el
(erc-scenarios-scrolltobottom--relaxed): Tag as :erc--graphical.
* test/lisp/erc/erc-scenarios-scrolltobottom.el
(erc-scenarios-scrolltobottom--normal,
erc-scenarios-scrolltobottom--all): Tag as :erc--graphical.
* test/lisp/erc/erc-scenarios-status-sidebar.el
(erc-scenarios-status-sidebar--nickbar): Tag as :erc--graphical.
* test/lisp/erc/erc-tests.el (erc--channel-modes/graphic-p): Tag as
:erc--graphical.
* test/lisp/erc/resources/base/local-modules/first.eld: Timeouts.
* test/lisp/erc/resources/erc-scenarios-common.el
(erc-scenarios-common--graphical-p): New variable.
(erc-scenarios-common--make-bindings): Don't enable
`inhibit-interaction' when interactive.  Set
`erc-scenarios-common--graphical-p' flag when
`:erc--graphical' tag present and running interactively.
(erc-scenarios-common-with-cleanup): Account for variable
`erc-scenarios-common--graphical-p'.
(erc-scenarios-common-scrolltobottom--normal): Turn off
`erc-scrolltobottom-mode' when test finishes so as not to pollute when
running multiple interactive tests.
; * test/lisp/erc/resources/join/network-id/barnet.eld: Timeouts.

(cherry picked from commit c83a2d15097e39d2a46d898f7731ca592c59e5a7)

16 months agoReplace erc--get-inserted-msg-bounds with functions
F. Jason Park [Sun, 24 Dec 2023 19:49:26 +0000 (11:49 -0800)]
Replace erc--get-inserted-msg-bounds with functions

* lisp/erc/erc-fill.el (erc-fill--wrap-rejigger-region): Call
`erc--get-inserted-msg-end' instead of `erc--get-inserted-msg-bounds'
with `end' arg.
* lisp/erc/erc-truncate.el (erc-truncate-buffer-to-size): Call
`erc--get-inserted-msg-beg' with `point' instead of
`erc--get-inserted-msg-bounds' with `beg' arg.
* lisp/erc/erc.el (erc--get-inserted-msg-beg-at,
erc--get-inserted-msg-end-at): New macros.
(erc--get-inserted-msg-beg, erc--get-inserted-msg-end): New functions.
(erc--get-inserted-msg-bounds): Convert to function with different
signature, and refactor.  This was introduced for the yet unreleased
5.6 (Emacs 30) by bug#60936.
(erc--get-inserted-msg-prop): Use `erc--get-inserted-msg-beg' instead
of `erc--get-inserted-msg-bounds' with `beg' arg.
(erc--delete-inserted-message): Update call site of
`erc--get-inserted-msg-bounds' to match new signature.
(erc-cmd-CLEAR): Use `erc--get-inserted-msg-beg' instead of
`erc--get-inserted-msg-bounds' with `beg' arg.
* test/lisp/erc/erc-scenarios-match.el
(erc-scenarios-match--stamp-right-fools-invisible): Call
`erc--get-inserted-msg-end' instead of `erc--get-inserted-msg-bounds'.
* test/lisp/erc/erc-tests.el (erc-tests--get-inserted-msg-setup,
erc-tests--assert-get-inserted-msg,
erc-tests--assert-get-inserted-msg/basic,
erc-tests--assert-get-inserted-msg/stamp,
erc-tests--assert-get-inserted-msg-readonly-with): New helper
functions.
(erc--get-inserted-msg-beg/basic, erc--get-inserted-msg-beg/readonly,
erc--get-inserted-msg-beg/stamp,
erc--get-inserted-msg-beg/readonly/stamp,
erc--get-inserted-msg-end/basic, erc--get-inserted-msg-end/stamp,
erc--get-inserted-msg-end/readonly,
erc--get-inserted-msg-end/readonly/stamp,
erc--get-inserted-msg-bounds/readonly,
erc--get-inserted-msg-bounds/stamp,
erc--get-inserted-msg-bounds/readonly/stamp): New tests.
(erc--get-inserted-msg-bounds, erc--get-inserted-msg-bounds/basic):
Move `beg' and `end' cases to separate test variants and rename former
to latter.

(cherry picked from commit 7576926bea34c45ea9b035b59b8a9d3967311f60)

16 months agoImprove multi-window erc-keep-place-indicator-mode
F. Jason Park [Sat, 23 Dec 2023 20:46:33 +0000 (12:46 -0800)]
Improve multi-window erc-keep-place-indicator-mode

* lisp/erc/erc-goodies.el (erc-keep-place-indicator-follow): Describe
condition causing an indicator update.
(erc--keep-place-indicator-on-window-configuration-change,
erc--keep-place-indicator-on-window-buffer-change): Rename former to
latter, add required WINDOW parameter, and don't move indicator if
buffer appears in multiple windows.  Also, don't bother checking
whether either buffer is a mini because the manual says window change
functions don't run for minibuffer replacements.
(erc--keep-place-indicator-setup): Hook on
`window-buffer-change-functions' instead of
`window-configuration-change-hook'.
(erc-keep-place-mode, erc-keep-place-disable): Remove member from
`window-buffer-change-functions' instead of
`window-configuration-change-hook'.
(erc-keep-place): Use `visible' FRAME arg of `get-buffer-window'.
Don't twiddle `window-prev-buffers' when
`erc-keep-place-indicator-mode' is non-nil.  This feature was
originally introduced by bug#59943.
* test/lisp/erc/erc-goodies-tests.el
(erc-goodies-tests--assert-kp-indicator-on,
erc-goodies-tests--assert-kp-indicator-off): Update hook name.
* test/lisp/erc/erc-scenarios-keep-place-indicator.el: New file.
* test/lisp/erc/resources/keep-place/follow.eld: New file.

(cherry picked from commit 65735efdca017f2ec0aa1022b7e82f68fbe0084d)

16 months ago; Fix typos
Stefan Kangas [Thu, 28 Dec 2023 00:20:20 +0000 (01:20 +0100)]
; Fix typos

(cherry picked from commit 8f571769e155a214ae2f9f760dd179b687d9982e)

16 months agoAbbreviate the VC revision in vc-annotate's buffer name
Jim Porter [Thu, 14 Dec 2023 19:31:27 +0000 (11:31 -0800)]
Abbreviate the VC revision in vc-annotate's buffer name

* lisp/vc/vc-hooks.el (vc-use-short-revision): New variable.
(vc-short-revision): New function.

* lisp/vc/vc-annotate.el (vc-annotate-use-short-revision): New
option...
(vc-annotate): ... use it.

* lisp/vc/vc-git.el (vc-git--rev-parse): Consult
'vc-use-short-revision'.

* etc/NEWS: Announce this change (bug#67062).

(cherry picked from commit ea4cbb3aae3c7f72ef04337bc2db7292909ca9a1)

16 months ago; * doc/misc/eglot.texi (Performance): Fix a typo.
Eli Zaretskii [Wed, 27 Dec 2023 16:42:41 +0000 (18:42 +0200)]
; * doc/misc/eglot.texi (Performance): Fix a typo.

(cherry picked from commit 9e0eeb2d49ccd443bb667be9231fe932be67bb10)

16 months agoEglot: experimental support for Eglot-only subprojects
João Távora [Wed, 27 Dec 2023 15:19:01 +0000 (09:19 -0600)]
Eglot: experimental support for Eglot-only subprojects

* lisp/progmodes/eglot.el
(eglot-alternatives)
(eglot-server-programs): : Rework docstring.
(eglot--guess-contact): Pass project to eglot-server-programs function.
(project-root): Define for new experimental Eglot project type.

Github-reference: https://github.com/joaotavora/eglot/discussions/1337
(cherry picked from commit 4f017f5f0e89e07757dd2d5e0971219420920b79)

16 months agoEglot: bump to 1.16
João Távora [Wed, 27 Dec 2023 12:05:43 +0000 (06:05 -0600)]
Eglot: bump to 1.16

* etc/EGLOT-NEWS: Update.

* lisp/progmodes/eglot.el (Version): Bump to 1.15
(Package-Requires): Bump jsonrpc depedency to 1.23

(cherry picked from commit c5a4366b3f3c6ee4178d954e58eb226441d1d2ee)

16 months agoEglot: fix typo
João Távora [Wed, 27 Dec 2023 13:53:30 +0000 (07:53 -0600)]
Eglot: fix typo

* lisp/progmodes/eglot.el (eglot--guess-contact): Fix typo.

(cherry picked from commit d4485838e14718f0a4a53004c4ab4fc8d049ca18)

16 months agoEglot: introduce eglot-events-buffer-config
João Távora [Wed, 27 Dec 2023 12:38:31 +0000 (06:38 -0600)]
Eglot: introduce eglot-events-buffer-config

* doc/misc/eglot.texi (Eglot Variables): Reword.
(Performance): Reword.

* lisp/progmodes/eglot.el (eglot-events-buffer-size): Obsolete.
(eglot-events-buffer-config): New customization variable.
(eglot--connect): Use eglot-events-buffer-config.

(cherry picked from commit d9b5f618baa31e97a5d675c665c9094cf757d184)

16 months agoJsonrpc: bump to 1.0.23
João Távora [Wed, 27 Dec 2023 12:10:28 +0000 (06:10 -0600)]
Jsonrpc: bump to 1.0.23

* lisp/jsonrpc.el (Version): Bump to 1.0.23

(cherry picked from commit 731cfee3b45361158d88bded3c32c9a48ace7bdb)

16 months ago; Fix typo
Stefan Kangas [Tue, 26 Dec 2023 21:09:57 +0000 (22:09 +0100)]
; Fix typo

(cherry picked from commit 44517037aed6caada1d18bc6e39cc52413df6f84)

16 months ago; Fix last change.
Eli Zaretskii [Tue, 26 Dec 2023 12:51:37 +0000 (14:51 +0200)]
; Fix last change.

(cherry picked from commit ccf46acefd2272afa18832cd6dd4d35b0803e70a)

16 months ago; * etc/DEBUG: Improve advice for debugging native-compilation (bug#67900).
Eli Zaretskii [Tue, 26 Dec 2023 12:49:50 +0000 (14:49 +0200)]
; * etc/DEBUG: Improve advice for debugging native-compilation (bug#67900).

(cherry picked from commit c86b039dffc23354ae898f358eadbe5b58e67aa3)

16 months agoExplain status "r" in `epa-list-keys`
Stefan Kangas [Mon, 25 Dec 2023 15:04:18 +0000 (16:04 +0100)]
Explain status "r" in `epa-list-keys`

* lisp/epa.el (epa-list-keys): Add revoked status to description.
Suggested by CHENG Gao <chenggao@icloud.com>.

(cherry picked from commit 9afba605bbc3db354476dddeffacfa036259c101)

16 months ago; * lisp/dired.el (dired--make-directory-clickable): Reformat comment.
Eli Zaretskii [Mon, 25 Dec 2023 13:07:21 +0000 (15:07 +0200)]
; * lisp/dired.el (dired--make-directory-clickable): Reformat comment.

(cherry picked from commit 627142219683441a907f9a96239fdb188202e129)

16 months agoFix mouse clicks on directory line in Dired
Jared Finder [Sat, 16 Dec 2023 20:10:03 +0000 (12:10 -0800)]
Fix mouse clicks on directory line in Dired

The option 'dired-kill-when-opening-new-dired-buffer' should be
also honored when clicking the mouse to kill prev buffer.
* lisp/dired.el (dired--make-directory-clickable): Call
'dired--find-possibly-alternative-file' instead of 'dired', in
the click callback.  (Bug#67856)

(cherry picked from commit fcbb00448998cdfffcf7455192bfebf98ef27a1e)

16 months agoFix 'split-root-window-right' and 'split-root-window-below'
Eli Zaretskii [Mon, 25 Dec 2023 12:59:26 +0000 (14:59 +0200)]
Fix 'split-root-window-right' and 'split-root-window-below'

* lisp/window.el (split-root-window-right)
(split-root-window-below): Fix the 'interactive' spec to avoid
misbehaving when invoked with no prefix argument.  (Bug#67452)

(cherry picked from commit be8a7155b48198b08bbc4844b2ce60c127405fb7)

16 months agoMark icalendar.el as maintained by emacs-devel
Stefan Kangas [Sun, 24 Dec 2023 13:57:49 +0000 (14:57 +0100)]
Mark icalendar.el as maintained by emacs-devel

* lisp/calendar/icalendar.el: Mark emacs-devel as the maintainer.
Ref: https://debbugs.gnu.org/34315#152

(cherry picked from commit eb19984c4dbba3c5237a679167fd8583bdb6ad70)

16 months ago; Fix footnotes in ELisp Intro manual
Eli Zaretskii [Sun, 24 Dec 2023 08:46:04 +0000 (10:46 +0200)]
; Fix footnotes in ELisp Intro manual

(cherry picked from commit 03dc914fd37735f9f768519bf5bf86913d5c9dbe)

16 months agoFix usage of `setq-default' and offer more suggestions
Xiyue Deng [Sun, 24 Dec 2023 00:12:44 +0000 (16:12 -0800)]
Fix usage of `setq-default' and offer more suggestions

cd61af0 changed from default-major-mode to major-mode in the first
code sample but didn't change the rest.  This patch fixes this and add
some explanations of why use `setq-default' instead of `setq'.  In
addition, it gives background on suggesting using text-mode as default
mode and suggest other alternatives.

* doc/lispintro/emacs-lisp-intro.texi (Text and Auto-fill): Fix usage
of `setq-default' and offer more suggestions.  (Bug#67848)

(cherry picked from commit ceacf75395834c452b43932c19df7e3202a16094)

16 months agoFix python-ts-mode triple quote syntax (bug#67262)
Yuan Fu [Sat, 23 Dec 2023 23:49:32 +0000 (15:49 -0800)]
Fix python-ts-mode triple quote syntax (bug#67262)

* lisp/progmodes/python.el (python--treesit-syntax-propertize): New function.
(python-ts-mode): Activate python--treesit-syntax-propertize.

(cherry picked from commit 2701da0eee54d85f79104c7a91610bf591159a51)

16 months agoIncrement parser timestamp when narrowing changes (bug#67977)
Yuan Fu [Sun, 24 Dec 2023 00:47:04 +0000 (16:47 -0800)]
Increment parser timestamp when narrowing changes (bug#67977)

When narrowing changes, parse reparses, so the timestamp should
definitely increment, just like in ts_record_changes.

Failing to increment this timestamp, outdated nodes would think they
are still up-to-date, and try to print their type name.  Printing
their type name involves accessing the old parse tree, which is
already freed during the last reparse.

I also found that we don't increment timestamp when changing parser
ranges and fixed that as well.

* src/treesit.c (treesit_sync_visible_region):
(Ftreesit_parser_set_included_ranges): Increment timestamp.
* src/treesit.h (Lisp_TS_Parser): Add some comments.

(cherry picked from commit 683c7c96871cc374b0e00f5084e43a70fc3ec36a)

16 months agoruby-ts-mode: Fix indentation for string_array closer
Dmitry Gutov [Sun, 24 Dec 2023 02:22:34 +0000 (04:22 +0200)]
ruby-ts-mode: Fix indentation for string_array closer

* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
Fix indentation for string_array closer.

(cherry picked from commit 8ae42c825e1e058d3c736837a023bdc2617b85a2)

16 months agotreesit-major-mode-setup: Use 'treesit--syntax-propertize-notifier'
Dmitry Gutov [Sun, 24 Dec 2023 02:07:15 +0000 (04:07 +0200)]
treesit-major-mode-setup: Use 'treesit--syntax-propertize-notifier'

* lisp/treesit.el (treesit-major-mode-setup): Make sure
'treesit--syntax-propertize-notifier' is used (bug#66732)

(cherry picked from commit 9cfa498e0ab4876e38f46b4ee9e26804512fd666)

16 months agoruby-ts-mode: Fix an out-of-bounds error with heredoc at eob
Dmitry Gutov [Sun, 24 Dec 2023 01:58:49 +0000 (03:58 +0200)]
ruby-ts-mode: Fix an out-of-bounds error with heredoc at eob

* lisp/progmodes/ruby-ts-mode.el (ruby-ts--syntax-propertize):
Fix an out-of-bounds error with heredoc at eob.

(cherry picked from commit da2e440462b643427de94433f5e8d0e1330c7450)

16 months agoCorrectly refontify changed region in tree-sitter modes (bug#66732)
Yuan Fu [Sun, 17 Dec 2023 01:15:04 +0000 (17:15 -0800)]
Correctly refontify changed region in tree-sitter modes (bug#66732)

We already have treesit--font-lock-notifier that should mark changed
regions to be refontified, but it's called too late in the redsiplay &
fontification pipeline.  Here we add treesit--pre-redisplay that
forces reparse and calls notifier functions in
pre-redisplay-functions, which is early enough for the marking to take
effect.

Similarly, we force reparse in
syntax-propertize-extend-region-functions so syntax-ppss will have the
up-to-date syntax information when it scans the buffer text.  We also
record the lowest start position of the affected regions, and make
sure next syntex-propertize starts from that position.

* lisp/treesit.el (treesit--pre-redisplay-tick):
(treesit--syntax-propertize-start): New variable.
(treesit--syntax-propertize-notifier):
(treesit--pre-redisplay):
(treesit--pre-syntax-ppss): New functions.
(treesit-major-mode-setup): Add hooks.

* lisp/progmodes/ruby-ts-mode.el (ruby-ts-mode): Remove notifier.
(ruby-ts--parser-after-change): Remove notifier function.

(cherry picked from commit 6ea507296a7e8bd55df8961793b02cf54d0f3c72)

16 months ago; Fix 'mode-line-format-right-align' with ElDoc
Eshel Yaron [Mon, 1 Jan 2024 21:14:59 +0000 (22:14 +0100)]
; Fix 'mode-line-format-right-align' with ElDoc

* lisp/emacs-lisp/eldoc.el (eldoc-minibuffer-message): Avoid nesting
'mode-line-format', since that breaks 'mode-line-format-right-align'.

16 months agoRevert e8df6c311fcf59bf23d31b9db2bb8fec9d78fbe7
Yuan Fu [Wed, 27 Dec 2023 06:37:19 +0000 (22:37 -0800)]
Revert e8df6c311fcf59bf23d31b9db2bb8fec9d78fbe7

(cherry picked from commit 8044140b54bfe7e88c28a49cc0dc4ae129029e4f)

16 months agoFix Tramp error in project-find-file
Dmitry Gutov [Wed, 27 Dec 2023 00:20:39 +0000 (02:20 +0200)]
Fix Tramp error in project-find-file

* lisp/progmodes/project.el (project--read-file-cpd-relative):
Avoid new Tramp connections (bug#68041).

(cherry picked from commit 5213e92f203b0ec934860d6026bdc5d3cddc0173)

16 months agoRevert "Eglot: Make 'try-completion' less broken"
João Távora [Tue, 26 Dec 2023 14:10:04 +0000 (08:10 -0600)]
Revert "Eglot: Make 'try-completion' less broken"

This reverts commit 4dcbf61c1518dc53061707aeff8887517e050003.

It's not correct, breaks tests.  I declare it impossible to make C-M-i
use of 'try-completion' behave sanely with LSP in its current state.
YMMV.  Use a completion tooltip, like Company.

(cherry picked from commit d376462c7183752bf44b9bd20bf5020fe7eaf75a)

16 months agoSupport interactively sorting minibuffer completions
Eshel Yaron [Wed, 27 Dec 2023 09:11:36 +0000 (10:11 +0100)]
Support interactively sorting minibuffer completions

* lisp/minibuffer.el (minibuffer-completions-sort-function): New var.
(minibuffer-read-sort-order-with-completion)
(minibuffer-completions-sort-orders): New user options.
(minibuffer-sort-completions): New command.
(minibuffer-local-completion-map): Bind it to 'C-x C-v'.
(display-completion-list, minibuffer-completion-help): Take
'minibuffer-completions-sort-function' into account.
(completions-header-format): Add '%t' format spec construct,
substituted with a description of the current sort order.
* lisp/menu-bar.el (minibuffer-local-completion-map): Add menu bar
menu entry for sorting completions candidates.
* doc/emacs/mini.texi (Completion Commands): Document new command.
Improve documentation and indexing of 'minibuffer-complete-and-exit'.
(Completion Exit, Completion Options): Update
* doc/lispref/minibuf.texi (Completion Commands): Document new user
options and command.
* etc/NEWS: Announce new feature.

16 months ago; (completion-metadata): Mention 'narrow-completions-function'.
Eshel Yaron [Wed, 27 Dec 2023 09:05:14 +0000 (10:05 +0100)]
; (completion-metadata): Mention 'narrow-completions-function'.

16 months ago; Document 'completions-sort' value 'historical' in the manual
Eshel Yaron [Wed, 27 Dec 2023 07:20:08 +0000 (08:20 +0100)]
; Document 'completions-sort' value 'historical' in the manual

16 months ago; Document buffer name completion narrowing by major mode
Eshel Yaron [Tue, 26 Dec 2023 15:48:35 +0000 (16:48 +0100)]
; Document buffer name completion narrowing by major mode

16 months agoEglot: Make 'try-completion' less broken
João Távora [Tue, 26 Dec 2023 13:47:29 +0000 (07:47 -0600)]
Eglot: Make 'try-completion' less broken

The 'try-completion' completion operation, used mostly in vanilla
'completion-at-point' invoked with C-M-i is close to impossible to get
right in LSP because of the arbitrary edits handled in
':exit-function'.

When this operation is invoked on the table, returning the pattern
argument unchanged somehow (TM) makes a sole completion show the
*Completions* buffer, where selecting it will recover context
necessary for `:exit-function' and call that function.  It doesn't
break any other cases I know, and that's good enough for now.

https://github.com/joaotavora/eglot/issues/1339

* lisp/progmodes/eglot.el (eglot-completion-at-point): Return pattern
when 'try-completion' is invoked.

(cherry picked from commit 4dcbf61c1518dc53061707aeff8887517e050003)

16 months agoNarrow buffer completions by major mode with 'C-x n m'
Eshel Yaron [Tue, 26 Dec 2023 15:14:58 +0000 (16:14 +0100)]
Narrow buffer completions by major mode with 'C-x n m'

* lisp/minibuffer.el (buffers-except-current-if-switching): Doc fix.
(minibuffer-narrow-buffer-completions): New function.
* src/minibuf.c (Finternal_complete_buffer): Use it.
(syms_of_minibuf): Update.

16 months ago; * src/ftfont.c (ftfont_glyph_metrics): Comment on advance rounding.
Po Lu [Tue, 26 Dec 2023 06:09:42 +0000 (14:09 +0800)]
; * src/ftfont.c (ftfont_glyph_metrics): Comment on advance rounding.

(cherry picked from commit 60199ac01d711d3240146afedd830b774eb5c5d2)

16 months agoConsistently round glyph advances in the SFNT font backend
Po Lu [Tue, 26 Dec 2023 06:07:58 +0000 (14:07 +0800)]
Consistently round glyph advances in the SFNT font backend

* src/sfnt.h (SFNT_ROUND_FIXED): New macro.

* src/sfntfont.c (sfntfont_get_glyph_outline): Don't apply
advance width distortion before the glyph is instructed or
decomposed.  Round advance width as measured between both
phantom points subsequent to instruction code execution.
(sfntfont_draw): Don't take the advance's ceiling when advancing
origin point.

(cherry picked from commit cd91ecedcbdf03ae13f45cb173360b11f13a0bc0)

16 months agoEglot: partial fix for middle-of-symbol completions
João Távora [Tue, 26 Dec 2023 00:31:29 +0000 (00:31 +0000)]
Eglot: partial fix for middle-of-symbol completions

* lisp/progmodes/eglot.el (eglot-completion-at-point): Fix
completion reversion in :exit-function.

In a rust-ts-mode buffer such as this main.rs file

  fn main() {
    let v: usize = 1;
    v.c<cursor-here>1234.1234567890
  }

the server wants to edit the line to read, after C-M-i and selecting
"count_ones"

    v.count_ones<cursor-here>.1234567890

But it couldn't apply the edit to the correct initial state because
that state wasn't correctly restored.  This commit fixes that.

However, if the initial state is

    v.count_on1234.1234567890

then completion still fails, because the 'try-completion' call in
eglot-completion-at-point will just return complete to "count_ones"
and Emacs doesn't consider this a completion "exit", so it'll
completely ignore the exit function.

I think 'try-completion' (and 'test-completion') simply can't be used
here (for one, they obey styles, and styles are off-limits in LSP),
but I'll leave that for another commit.

Github-reference: https://github.com/joaotavora/eglot/issues/1339
(cherry picked from commit a6ef458e3831001b0acad57cf8fa75b77a4aff3f)

16 months ago; admin/cherry.el: Improve messages.
Eshel Yaron [Tue, 26 Dec 2023 07:01:11 +0000 (08:01 +0100)]
; admin/cherry.el: Improve messages.

16 months agoAdd Python to `recentf-arrange-rules`
Stefan Kangas [Mon, 25 Dec 2023 18:26:14 +0000 (19:26 +0100)]
Add Python to `recentf-arrange-rules`

* lisp/recentf.el (recentf-arrange-rules): Add rule for Python.

(cherry picked from commit 2d15389554432277227af0567cd7da8b21d5930d)

16 months agoNarrow bookmark completions by bookmark type with 'C-x n m'
Eshel Yaron [Mon, 25 Dec 2023 19:20:54 +0000 (20:20 +0100)]
Narrow bookmark completions by bookmark type with 'C-x n m'

* lisp/bookmark.el (bookmark-narrow-completions-by-type): New
function.
(bookmark-completing-read): Use it as a 'narrow-completions-function'.
* doc/emacs/regs.texi (Bookmarks): Document it, as well as bookmark
types in general.
* etc/NEWS: Mention it.

16 months agoApply TTF advance width rounding to uninstructed glyphs
Po Lu [Mon, 25 Dec 2023 07:38:15 +0000 (15:38 +0800)]
Apply TTF advance width rounding to uninstructed glyphs

* src/sfnt.c (sfnt_scale_metrics):

* src/sfntfont.c (sfntfont_get_glyph_outline): Round advance and
floor lbearing scaling glyph metrics.
(sfntfont_measure_pcm): Don't round or truncate metrics which
have already been.

(cherry picked from commit 1be132731d31c3752b275735e5dbe1f60d1988c3)

16 months agoOptimize font edge filling loop
Po Lu [Mon, 25 Dec 2023 03:21:15 +0000 (11:21 +0800)]
Optimize font edge filling loop

* src/sfnt.c (sfnt_fedge_sort): Delete function.
(sfnt_poly_edges_exact): Don't sort edges, iterate through each
instead.
(main): Adjust tests.

(cherry picked from commit 995dd36da1df70c55ef2e72d4ff5b2641cc83292)

16 months agoFix ses-formula-record
Vincent Belaïche [Sun, 24 Dec 2023 12:02:14 +0000 (13:02 +0100)]
Fix ses-formula-record

* lisp/ses.el (ses-is-cell-sym-p): Tighten test with checking
argument is a local variable.
(ses-formula-record): Fix definition.
(ses-rename-cell): Loosen test on new-name, conversely to
'ses-is-cell-sym-p' tightening.

(cherry picked from commit 62f2c4386259f998442e8098d8a368835a36fb65)

16 months agoFix test about need for explicit printing inserted lines
Vincent Belaïche [Sun, 24 Dec 2023 21:05:54 +0000 (22:05 +0100)]
Fix test about need for explicit printing inserted lines

* lisp/ses.el (ses--blank-line-needs-printing-p): New
function. Does not consider that printer `nil' produces a non
empty string, as `ses-print-cell' removes nil printer by oring to
fallback.
(ses-insert-row): Replace the complex and erroneous test about
blank newline needing printing by a call to
'ses--blank-line-needs-printing-p'.

(cherry picked from commit a11d34b53e5c32dfc7b8a6eb0c64c087b9b046ba)

16 months agoMore doc on ses+ and argument order
Vincent Belaïche [Sat, 23 Dec 2023 18:38:56 +0000 (19:38 +0100)]
More doc on ses+ and argument order

* doc/misc/ses.texi (Standard formula functions): Indicate that
'ses+' reverses argument order.

(cherry picked from commit 44676555f9f5cf268104ccdd8eca1666336853ad)

16 months ago; Support removing individual completions restrictions
Eshel Yaron [Mon, 25 Dec 2023 11:24:51 +0000 (12:24 +0100)]
; Support removing individual completions restrictions

* lisp/minibuffer.el (minibuffer-widen-completions): New optional
argument ALL, if nil prompt for individual restrictions to remove.
Also, take into account completions boundaries when calling
'minibuffer-completion-help'.
* doc/emacs/mini.texi (Completion Commands, Narrow Completions):
Update documentation.
* lisp/menu-bar.el (map): Update help text.

16 months ago; Respect 'completion-boundaries' in 'completions-auto-update'
Eshel Yaron [Mon, 25 Dec 2023 11:07:48 +0000 (12:07 +0100)]
; Respect 'completion-boundaries' in 'completions-auto-update'

* lisp/minibuffer.el (minibuffer-regexp-mode): Use new helper function
'minibuffer--completion-help' to compute completion boundaries.

16 months ago; Respect 'completion-boundaries' in narrow-completions commands
Eshel Yaron [Mon, 25 Dec 2023 10:59:49 +0000 (11:59 +0100)]
; Respect 'completion-boundaries' in narrow-completions commands

* lisp/minibuffer.el (minibuffer--completion-boundaries): New helper
function, return 'completion-boundaries' for minibuffer input as
a pair of buffer positions in the minibuffer.
(minibuffer--add-completions-predicate)
(minibuffer-narrow-completions-by-regexp)
(minibuffer-narrow-completions-to-current): Use it.

16 months ago* src/eval.c (signal_or_quit): Fix naming inconsistency with docs
Stefan Monnier [Sun, 24 Dec 2023 15:13:22 +0000 (10:13 -0500)]
* src/eval.c (signal_or_quit): Fix naming inconsistency with docs

The var's docstring and etc/NEWS refer to "*Redisplay-trace*",
so better use that (which is also more in line with usual practice
of Emacs buffer names).

(cherry picked from commit ba3d3c699e12e2b236a353aa4dbfd1937d47f080)

16 months agocheckdoc: Avoid false positive for keybinding in docstring
Stefan Kangas [Sun, 24 Dec 2023 13:27:48 +0000 (14:27 +0100)]
checkdoc: Avoid false positive for keybinding in docstring

* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Avoid false positive when a variable contains a keybinding (for
example, "C-g").  (Bug#68002)
* test/lisp/emacs-lisp/checkdoc-tests.el
(checkdoc-docstring-avoid-false-positive-ok): New test.

(cherry picked from commit 13e46e2c1d33a3a48ecdcb56b745dbc53a4a3831)

16 months agoMake stty settings configurable in Tramp's make-process
Michael Albinus [Sun, 24 Dec 2023 10:35:16 +0000 (11:35 +0100)]
Make stty settings configurable in Tramp's make-process

* lisp/net/tramp-sh.el (tramp-pipe-stty-settings): New defcustom.
(tramp-sh-handle-make-process): Use it.  (Bug#62093)

(cherry picked from commit 2a1a7a8524c0307c09c91e89816b2b2b8bfb85bc)

16 months agoFix toolbar for Log Edit mode
Eli Zaretskii [Sun, 24 Dec 2023 08:32:45 +0000 (10:32 +0200)]
Fix toolbar for Log Edit mode

* lisp/vc/log-edit.el (log-edit-tool-bar-map): Fix buttons and
help messages.

* etc/images/README (Files): Fix whitespace.

(cherry picked from commit 9b8e0a54318fe909f321a9d437875c99f1bd4451)

16 months ago; * src/eval.c (Fdefvar): Doc fix (bug#67991).
Eli Zaretskii [Sun, 24 Dec 2023 07:31:32 +0000 (09:31 +0200)]
; * src/eval.c (Fdefvar): Doc fix (bug#67991).

(cherry picked from commit 43cacc31be36f62034b4a163d05b56de1ef1bdf9)

16 months agoIntroduce a toolbar for Log Edit mode
Po Lu [Sun, 24 Dec 2023 07:21:24 +0000 (15:21 +0800)]
Introduce a toolbar for Log Edit mode

* etc/NEWS: Announce new change.

* etc/images/README: List the sources of the new image files.

* etc/images/commit.xpm:
* etc/images/commit.pbm:
* etc/images/gen-changelog.xpm:
* etc/images/gen-changelog.pbm:
* etc/images/ins-changelog.xpm:
* etc/images/ins-changelog.pbm:
* etc/images/load-changelog.xpm:
* etc/images/load-changelog.pbm:
* etc/images/view-diff.xpm: New files.

* lisp/vc/log-edit.el (log-edit-menu): Insert a menu item for
"Generate ChangeLog".
(log-edit-tool-bar-map): New keymap.
(log-edit-mode): Install this keymap as the tool bar map.

(cherry picked from commit b7fc3ab787d8dd926e1912e51e99f0efcf57cb02)

16 months agojit-lock-force-redisplay: Make it work
Dmitry Gutov [Sat, 23 Dec 2023 20:53:35 +0000 (22:53 +0200)]
jit-lock-force-redisplay: Make it work

* lisp/jit-lock.el (jit-lock-force-redisplay):
Make sure the buffer change is really performed (bug#66732).

(cherry picked from commit 5c3ff1494b69bf45b99125f2423174222badfa43)

16 months agoOptionally continue on error in erc-auth-source-search
F. Jason Park [Sat, 23 Dec 2023 02:18:20 +0000 (18:18 -0800)]
Optionally continue on error in erc-auth-source-search

* doc/misc/erc.texi (auth-source): Add new "Troubleshooting"
subsection.
* lisp/erc/erc.el (erc-open): Initialize markers before determining
session parameters.  Otherwise, functions that rely on
`erc-inset-marker' being non-nil, like `erc-check-text-conversion',
may fail during auth-source lookups.
(erc-auth-source-search): When non-interactive, ask the user whether
to continue connecting anyway.  (Bug#67978)

(cherry picked from commit 5fb9d6c5e72e8a21b8426a3fd5ec5c8f4679d8b6)

16 months agoFix overlapping logs from erc-truncate-buffer-on-save
F. Jason Park [Wed, 20 Dec 2023 06:33:48 +0000 (22:33 -0800)]
Fix overlapping logs from erc-truncate-buffer-on-save

* lisp/erc/erc-button.el (erc-button--display-error-notice-with-keys):
Currently, internal "error notices" do not have timestamps.  However,
this causes alignment issues for non-`fill-wrap' users of left-sided
stamps.  The heuristic used by this change for detecting such stamps
is weak and prone to false negatives.
* lisp/erc/erc-log.el (erc-log-mode, erc-log-enable): Set explicit
depth for `erc--pre-clear-functions' to 50.
(erc-save-buffer-in-logs): Fix partial regression in which redundant
text would appear in logs that have undergone truncation via an
interactive call to this command when the deprecated option
`erc-truncate-on-save' is non-nil.
* lisp/erc/erc-stamp.el (erc-stamp-mode, erc-stamp-enable): Set
depth for `erc--pre-clear-functions' to 40.
(erc-stamp--reset-on-clear): Only add `erc-stamp--insert-date-hook'
when `erc-stamp--date-mode' is active.
* lisp/erc/erc.el (erc-cmd-CLEAR): Rework to honor but improve upon
the old behavior when called from lisp.  Do this by attempting to find
the beginning of the current message and excluding it from the
truncated portion of the buffer.  A NEWS entry describing this
behavior already exists for 5.6.
* test/lisp/erc/erc-scenarios-log.el
(erc-scenarios-log--save-buffer-in-logs/truncate-on-save): New test.
These changes originate from bug#60936.

(cherry picked from commit 9cd47017c705fe0efe8f42c143807a489ed69016)

16 months agoReplace some uses of erc-error
F. Jason Park [Tue, 19 Dec 2023 04:50:26 +0000 (20:50 -0800)]
Replace some uses of erc-error

* lisp/erc/erc-button.el
(erc-button--display-error-notice-with-keys-and-warn): Use
`erc--lwarn' so the warnings buffer is overridable for testing.
* lisp/erc/erc-sasl.el (erc-sasl-mode, erc-sasl-enable): Signal an
`error' instead of calling `erc-error', which continues execution.  In
this special case, the session cannot continue initializing, since
connection registration can't reasonably be expected to complete
successfully.
(erc-sasl--destroy): Don't run `erc-quit-hook', and issue a warning of
level `:error' to get users' attention instead of calling `ding'.
* lisp/erc/erc-speedbar.el
(erc-speedbar--emulate-sidebar-set-window-preserve-size): Don't set
window parameters.  Doing this basically made
`erc-speedbar-toggle-nicknames-window-lock' unusable.
(erc-speedbar--toggle-nicknames-sidebar): Manually unlock the window
after toggling.
(erc-nickbar-mode, erc-nickbar-enable, erc-nickbar-disable): Don't
`ding' when called in a non-ERC buffer, and make sure to call
`erc-speedbar--ensure' from an ERC buffer.  Also, don't disable
minor-mode var when speedbar buffer doesn't exist because that doesn't
ensure it'll be created the next time around, and users may count on
the activation state remaining consistent.
(erc-speedbar-toggle-nicknames-window-lock): Make usable from lisp
with explicit numeric arg.
* lisp/erc/erc-status-sidebar.el (erc-bufbar-mode, erc-bufbar-enable):
Only create the side window from an erc-mode buffer to ensure the
ratio is preserved when burying the current buffer, e.g., with
`custom-buffer-done'.
* lisp/erc/erc.el (erc--warnings-buffer-name, erc--lwarn): New
function, an analog of `lwarn', that allows for overriding the
warnings buffer with the new variable `erc--warnings-buffer-name'.
(erc-cmd-SERVER): Add comment.
* test/lisp/erc/erc-scenarios-sasl.el
(erc-scenarios-sasl--plain-fail): Expect warning instead of error.
* test/lisp/erc/erc-scenarios-status-sidebar.el
(erc-scenarios-status-sidebar--bufbar): Refresh when interactive as
well.
* test/lisp/erc/resources/sasl/plain-failed.eld: Expect EOF instead of
"CAP END".  (Bug#63595)

(cherry picked from commit 34fe0b5c87ca991436d999d451276838529c96c2)

16 months agoPopulate erc--msg-prop-overrides for CTCP replies
F. Jason Park [Mon, 18 Dec 2023 05:49:13 +0000 (21:49 -0800)]
Populate erc--msg-prop-overrides for CTCP replies

* lisp/erc/erc-backend.el (erc-server-PRIVMSG): Don't set string
intended for insertion to the undefined return value of
`erc-process-ctcp-reply' and `erc-process-ctcp-query'.  Rework control
flow slightly for clarity.
* lisp/erc/erc.el (erc-process-ctcp-reply): Bind
`erc--msg-prop-overrides' and populate with `erc--ctcp' and `erc--cmd'
"msg props" for the benefit of `erc-display-message' calls made by
the various CTCP reply handlers.  (Bug#67677)

(cherry picked from commit 23d692ed0149e9cda327141082cafdba1e1266fe)

16 months ago; Fix some doc strings in ERC
F. Jason Park [Tue, 19 Dec 2023 03:38:30 +0000 (19:38 -0800)]
; Fix some doc strings in ERC

* lisp/erc/erc-networks.el: Lose some unneeded forward declarations.
* lisp/erc/erc.el (erc-open-socks-tls-stream): Don't conflate SOCKS
with TOR by mentioning a ".onion" address for the `host' parameter.
* test/lisp/erc/erc-tests.el
(erc--check-prompt-input-for-multiline-blanks): Extend timeout.

(cherry picked from commit 717f917d1de5272d6c24e8a32af1cc698989c41e)

16 months ago; * src/xdisp.c (draw_glyphs): Fix coding style.
Po Lu [Sat, 23 Dec 2023 12:50:16 +0000 (20:50 +0800)]
; * src/xdisp.c (draw_glyphs): Fix coding style.

(cherry picked from commit 13182ae976859114601c12abff27378a31db3c2f)

16 months ago* doc/man/emacsclient.1: Fix --tramp option.
Michael Albinus [Sat, 23 Dec 2023 11:04:37 +0000 (12:04 +0100)]
* doc/man/emacsclient.1: Fix --tramp option.

(cherry picked from commit a4751657389cf47c18416fa5d148ad2a67e14565)

16 months agoFix alignment of columns in Dired display with ls-lisp
Eli Zaretskii [Sat, 23 Dec 2023 11:03:09 +0000 (13:03 +0200)]
Fix alignment of columns in Dired display with ls-lisp

* lisp/dired.el (dired-align-file): Don't realign the first column
of file's data.  (Bug#67953)

(cherry picked from commit b09765a7114a92fbb71dad50a44a66938723624d)

16 months ago; Skip commit 44be4e92eca68ec4498c424573f0505aca69d39c
Eshel Yaron [Sat, 23 Dec 2023 13:20:36 +0000 (14:20 +0100)]
; Skip commit 44be4e92eca68ec4498c424573f0505aca69d39c

16 months agoRespect mouse-face on SVG image glyphs (bug#67794)
Manuel Giraud [Tue, 19 Dec 2023 11:25:24 +0000 (12:25 +0100)]
Respect mouse-face on SVG image glyphs (bug#67794)

* src/dispextern.h:
* src/image.c (image_spec_value): Export 'image_spec_value'.
* src/xdisp.c (draw_glyphs): Maybe update SVG image glyphs with
mouse face features before drawing.

(cherry picked from commit e69fafdbc8893a0456535605082c7d7c469fdabd)