]> git.eshelyaron.com Git - emacs.git/log
emacs.git
20 months ago; * etc/NEWS: Fix typos.
Michael Albinus [Tue, 7 Mar 2023 17:50:44 +0000 (18:50 +0100)]
; * etc/NEWS: Fix typos.

20 months agoFix Elisp code injection vulnerability in emacsclient-mail.desktop
Ulrich Müller [Tue, 7 Mar 2023 17:25:37 +0000 (18:25 +0100)]
Fix Elisp code injection vulnerability in emacsclient-mail.desktop

A crafted mailto URI could contain unescaped double-quote
characters, allowing injection of Elisp code.  Therefore, any
'\' and '"' characters are replaced by '\\' and '\"', using Bash
pattern substitution (which is not available in the POSIX shell).

We want to pass literal 'u=${1//\\/\\\\}; u=${u//\"/\\\"};' in the
bash -c command, but in the desktop entry '"', '$', and '\' must
be escaped as '\\"', '\\$', and '\\\\', respectively (backslashes
are expanded twice, see the Desktop Entry Specification).

Reported by Gabriel Corona <gabriel.corona@free.fr>.

* etc/emacsclient-mail.desktop (Exec): Escape backslash and
double-quote characters.

20 months agoFix problem with debuginfod queries in "M-x gdb"
Eli Zaretskii [Tue, 7 Mar 2023 12:39:27 +0000 (14:39 +0200)]
Fix problem with debuginfod queries in "M-x gdb"

* lisp/progmodes/gdb-mi.el (gdb-debuginfod-enable-setting): New
defcustom.
(gdb-debuginfod-message): New function.
(gdb-init-1): Initialize gdb-debuginfod-enable.  Ask the user
about debuginfod queries and display any error messages.
(Bug#61973)

* etc/NEWS: Announce the change.

20 months agoFix regression in Fido mode (bug#62015)
João Távora [Mon, 6 Mar 2023 22:28:47 +0000 (22:28 +0000)]
Fix regression in Fido mode (bug#62015)

To understand the regression consider this recipe where the 'fo'
pattern is typed by the user in the last step.

   emacs -Q
   C-x b foo RET
   C-x b afoo RET
   C-x b *scratch* RET
   M-x fido-mode RET
   C-x b fo

This used to offer both 'foo' and 'afoo' as candidates but now only
offered 'foo'.  This is because the pattern 'fo' matches 'foo', but
not 'afoo' with 'basic' completion style.

Fido mode, however, prioritizes 'flex' completion style, and that is
not happening here as it used to.

This was introduced in this commit

     commit bf81df86e52fdc995bec8d9646f84d114cb896d1
     Author: João Távora <joaotavora@gmail.com>
     Date:   Wed Dec 7 10:43:59 2022 +0000

         Don't override completion-category-defaults in fido-mode

I took away the nil setting of 'completion-category-defaults; in Fido
mode's minibuffer. It seemed generally the correct thing to do, and
was done mainly because Eglot added its style preferences to that
variable instead of completion-category-overrides directly, which is a
nono.  So, to be able use the Fido UI with Eglot successfully,
'completion-category-defaults' should stay untouched.  Or so I
thought.

However, I failed to notice that, for most categories, the default
value of 'completion-category-defaults' prioritizes the 'basic'
completion style.

For example, in the 'buffer' category, the default value has the
styles list '(basic substring)'.  This means that if a pattern matches
accoring to the 'basic' style, 'substring' will not be tried.  And
neither will 'completion-styles' which in Fido mode's case happens to
be 'flex'.

The solution in this commit is to craft a value for completion
category defaults that is just like the default one, but prioritizes
'flex' completion for every category.

* lisp/icomplete.el (icomplete--fido-ccd): New helper.
(icomplete--fido-mode-setup): Use it.

20 months ago* Fix `emacs-lisp-native-compile-and-load' for (bug#61917)
Andrea Corallo [Mon, 6 Mar 2023 16:27:32 +0000 (17:27 +0100)]
* Fix `emacs-lisp-native-compile-and-load' for (bug#61917)

* lisp/progmodes/elisp-mode.el (emacs-lisp-native-compile-and-load):
Don't load if no compialtion happened.

20 months ago* lisp/emacs-lisp/comp.el (comp-prettyformat-insn): Fix (bug#61917)
Andrea Corallo [Mon, 6 Mar 2023 15:51:07 +0000 (16:51 +0100)]
* lisp/emacs-lisp/comp.el (comp-prettyformat-insn): Fix (bug#61917)

20 months agoRevert "Fix configuration of webp libraries"
Eli Zaretskii [Mon, 6 Mar 2023 15:31:57 +0000 (17:31 +0200)]
Revert "Fix configuration of webp libraries"

This reverts commit de4277af009115ceba7fe920163c05c608ea9524.
It breaks WebP support at least on my system.
There's no reason to require libwebpdecoder library to be
installed, since we don't use the functions from it, at least
not in libwebp 1.2.1.

20 months agoFix configuration of webp libraries
Po Lu [Mon, 6 Mar 2023 13:42:29 +0000 (21:42 +0800)]
Fix configuration of webp libraries

* configure.ac: Link with libwebpdecoder along with
libwebpdemux.  (bug#61988)

20 months agoFix c-ts-mode indentation
Yuan Fu [Sun, 5 Mar 2023 23:22:36 +0000 (15:22 -0800)]
Fix c-ts-mode indentation

Mentioned in bug#61893.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--anchor-prev-sibling): Handle
"#elif" and "#else".
* test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts: Add an
"#elif" to the test.

20 months agoFix c-ts-mode indentation
Yuan Fu [Sun, 5 Mar 2023 23:07:58 +0000 (15:07 -0800)]
Fix c-ts-mode indentation

Mentioned in bug#61893, although not the subject of it.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--anchor-prev-sibling): Fix the child index for preproc_else
and preproc_elif case.
* test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts:
New test.

20 months agoFix c-ts-mode indentation
Yuan Fu [Sun, 5 Mar 2023 23:01:54 +0000 (15:01 -0800)]
Fix c-ts-mode indentation

Not the subject of it, but mentioned in bug#61893.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--anchor-prev-sibling): Skip
the sibling if it doesn't start on it's own line.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.

20 months ago; Change font-lock-variable-name-face to font-lock-variable-use-face
Yuan Fu [Sun, 5 Mar 2023 22:42:28 +0000 (14:42 -0800)]
; Change font-lock-variable-name-face to font-lock-variable-use-face

* lisp/progmodes/sh-script.el:
(sh-mode--treesit-settings): Change font-lock-variable-name-face to
font-lock-variable-use-face.

20 months agoUpdate to Org 9.6.1-40-g3d817c
Kyle Meyer [Sun, 5 Mar 2023 22:22:06 +0000 (17:22 -0500)]
Update to Org 9.6.1-40-g3d817c

20 months agoAdd string-interpolation feature to bash-ts-mode
Yuan Fu [Sun, 5 Mar 2023 22:16:58 +0000 (14:16 -0800)]
Add string-interpolation feature to bash-ts-mode

* lisp/progmodes/sh-script.el:
(bash-ts-mode): Add string-interpolation feature.
(sh-mode--treesit-settings): Add rule for string-interpolation feature.

20 months agoFix tramp-sh-handle-insert-directory
Michael Albinus [Sun, 5 Mar 2023 16:31:26 +0000 (17:31 +0100)]
Fix tramp-sh-handle-insert-directory

* lisp/net/tramp-sh.el (tramp-sh-handle-insert-directory): Remove also
//DIRED-OPTIONS// line when there is no //DIRED// line.

20 months ago; Minor fix of last change
Eli Zaretskii [Sun, 5 Mar 2023 10:24:39 +0000 (12:24 +0200)]
; Minor fix of last change

* lisp/emacs-lisp/comp.el (comp-subr-trampoline-install): Fix
wording.  (Bug#61880)

20 months ago* Warn when certain primitives are redefined (bug#61880)
Andrea Corallo [Sun, 5 Mar 2023 09:46:18 +0000 (10:46 +0100)]
* Warn when certain primitives are redefined (bug#61880)

* lisp/emacs-lisp/comp.el (comp-warn-primitives): New constant.
(comp-subr-trampoline-install): Warn when a sensitive primitive is
being redefined.

20 months ago; * lib-src/etags.c (print_help): Fix indentation.
Eli Zaretskii [Sun, 5 Mar 2023 06:43:03 +0000 (08:43 +0200)]
; * lib-src/etags.c (print_help): Fix indentation.

20 months agoFix c-ts-mode preproc directive indentation
Yuan Fu [Sat, 4 Mar 2023 22:39:44 +0000 (14:39 -0800)]
Fix c-ts-mode preproc directive indentation

Mentioned in bug#61893, although not the subject of that report.  This
change fixes indentation for nested directives.  For example, when the
directive involves elif and the like, the elif is nested in the if
directive, so simply using grand-parent and great-grand-parent for
anchor is insufficient, because the nesting can grow arbitrarily.

The test added also covers the last preproc fix.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--standalone-parent-skip-preproc): New function.
(c-ts-mode--indent-styles): New rules.
* test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts: New test.

20 months ago; * lisp/files.el (hack-local-variables): Fix typo in the doc string.
Eli Zaretskii [Sat, 4 Mar 2023 20:03:14 +0000 (22:03 +0200)]
; * lisp/files.el (hack-local-variables): Fix typo in the doc string.

20 months agoMore robustly unspoof HOME in Eglot tests (bug#61637)
João Távora [Sat, 4 Mar 2023 19:14:48 +0000 (19:14 +0000)]
More robustly unspoof HOME in Eglot tests (bug#61637)

A fair number of LSP servers allow user-local installations instead of
system wide installations.  Emacs's technique of spoofing the HOME env
var to some non-existent or non-home directory during 'make check'
breaks these tests.  That's because the executables are still found by
executable-find, but their invocation will rarely be successful as
HOME isn't what they expect it to be.

Eglot tests already had a technique for dealing with this,
"unspoffing" HOME just for the invocations of LSP server but it
stopped working a while back.  So make it more robust.

Eventually, we'll want to decide wether these local servers should be
considered in 'make check' runs at all, or whether there is a way to
use them with a spoofed HOME.

* test/lisp/progmodes/eglot-tests.el (eglot--call-with-fixture):
More robustly unspoof HOME.

20 months agoTurn on Eglot inlay hints by default
João Távora [Sat, 4 Mar 2023 15:05:15 +0000 (15:05 +0000)]
Turn on Eglot inlay hints by default

This is like any other server-provided feature, and may be turned off
client-side by setting eglot-ignored-server-capabilities like

   (add-to-list 'eglot-ignored-server-capabilities :inlayHintProvider)

* lisp/progmodes/eglot.el (eglot--maybe-activate-editing-mode):
Activate eglot-inlay-hints-mode.
(eglot-inlay-hints-mode): Instead of warning about missing
:inlayHintProvider, turn off eglot-inlay-hints-mode.

20 months agoUpdate ts modes missed in 4c16fd3a512 to use column-0
Dmitry Gutov [Sat, 4 Mar 2023 17:45:39 +0000 (19:45 +0200)]
Update ts modes missed in 4c16fd3a512 to use column-0

* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
* lisp/progmodes/go-ts-mode.el (go-ts-mode--indent-rules):
Change point-min anchor to column-0.

20 months agoRobustify Eglot for "transient" projects
João Távora [Sat, 4 Mar 2023 12:49:00 +0000 (12:49 +0000)]
Robustify Eglot for "transient" projects

When Eglot needs to synthesize a "transient" project for
default-directory sometimes the value of that variable is set to an
unexpanded value, sometimes not.  This can cause simple invocations
like.

   Emacs -Q ~/path/to-some-python-file.py -f eglot

to fail, because eglot--current-server will be looking for a project
in the registry called

    (transient . "~/path")

where in reality it is stored there as

    (transient . "/home/someuser/path")

The fix is to always expand default-directory in eglot--current-project.

* lisp/progmodes/eglot.el (eglot--current-project): Use
expand-file-name.

20 months agoFix documentation of 'normal-mode' in buffers that don't visit files
Eli Zaretskii [Sat, 4 Mar 2023 10:16:51 +0000 (12:16 +0200)]
Fix documentation of 'normal-mode' in buffers that don't visit files

* lisp/files.el (normal-mode):
* lisp/subr.el (run-mode-hooks):
* doc/emacs/modes.texi (Choosing Modes): Mention the caveat with
'normal-mode' in buffers not visiting files.  (Bug#61925)
* lisp/files.el (hack-local-variables): Doc fix.

20 months agoChange tree-sitter indent anchor 'point-min' to 'column-0'
Yuan Fu [Sat, 4 Mar 2023 09:09:00 +0000 (01:09 -0800)]
Change tree-sitter indent anchor 'point-min' to 'column-0'

Point-min isn't necessarily at column 0, using line-beginning-position
is better. column-0 is also more intuitive.

* doc/lispref/modes.texi (Parser-based Indentation): Update manual.
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles):
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules):
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--indent-rules):
* lisp/progmodes/typescript-ts-mode.el:
(typescript-ts-mode--indent-rules): Change point-min to column-0.
* lisp/treesit.el (treesit-simple-indent-presets): Change point-min to
column-0.

20 months agoFix go-ts-mode multi-line string indentation (bug#61923)
Yuan Fu [Sat, 4 Mar 2023 08:37:03 +0000 (00:37 -0800)]
Fix go-ts-mode multi-line string indentation (bug#61923)

* lisp/progmodes/go-ts-mode.el:
(go-ts-mode--indent-rules): Add indent rule for multi-line sting.

20 months ago; More accurate doc strings for 'window-at' and 'window-at-x-y'.
Eli Zaretskii [Sat, 4 Mar 2023 08:43:25 +0000 (10:43 +0200)]
; More accurate doc strings for 'window-at' and 'window-at-x-y'.

* lisp/window.el (window-at-x-y):
* src/window.c (Fwindow_at): Doc fix.  (Bug#61948)

20 months agoRemove Eglot activation check from find-file-hook
João Távora [Sat, 4 Mar 2023 00:09:32 +0000 (00:09 +0000)]
Remove Eglot activation check from find-file-hook

Adding eglot--maybe-activate-editing-mode to find-file-hook isn't
really necessary, since it is already in
'after-change-major-mode-hook', and that also runs every time we find
a file.

This reduces the number of project.el logic that runs every time the
user visits a file.

* lisp/progmodes/eglot.el (find-file-hook): No need to add
eglot--maybe-activate-editing-mode here.

20 months ago* src/intervals.c (set_intervals_multibyte_1): Fix bug#61887
Stefan Monnier [Sat, 4 Mar 2023 00:13:03 +0000 (19:13 -0500)]
* src/intervals.c (set_intervals_multibyte_1): Fix bug#61887

When `total_length` is 0 there should be no subtree at all, but
`delete_interval` only deletes one interval, so make sure we don't end
up with some stale child of `i`.

20 months agoRevert inadvertent change to lisp/icomplete.el in previous commit
João Távora [Fri, 3 Mar 2023 23:36:26 +0000 (23:36 +0000)]
Revert inadvertent change to lisp/icomplete.el in previous commit

The change

   commit 3a651773d29afb48ac4229cd19e532bd57a4ee2d
   Author: João Távora <joaotavora@gmail.com>
   Date:   Fri Mar 3 13:13:35 2023 +0000

       Eglot: pay better attention to hints' paddingLeft/Right (bug#61924)

Inadvertently added a line to this file, which shouldn't (yet) bet
added.

* lisp/icomplete.el (icomplete--vertical-minibuffer-setup): Remove
truncate-lines.

20 months agoRevert previous change in go-ts-mode.el
Yuan Fu [Fri, 3 Mar 2023 21:59:54 +0000 (13:59 -0800)]
Revert previous change in go-ts-mode.el

Reverts 59365f928565f1be551b1697b9246b00cb87a9b7 and
56cd810b9d1a4d537bee5a2fd954d6e0d346631a.

Reverting because the use of treesit-ready-p is very much intentional.

* lisp/progmodes/go-ts-mode.el (treesit-ready-p): Revert change.

20 months agoRelease ERC 5.5
F. Jason Park [Tue, 14 Feb 2023 07:27:50 +0000 (23:27 -0800)]
Release ERC 5.5

* doc/misc/erc.texi: Update ERCVER to 5.5.
* lisp/erc/erc.el: Increment main version header to 5.5.  Update
Compat version in package-requires header to 29.1.3.4.  Update
`customize-package-emacs-version-alist' entry by mapping ERC 5.5 to
Emacs 29.1.
(erc-version): Update value to 5.5.

20 months ago; More doc improvements for OClosures
Eli Zaretskii [Fri, 3 Mar 2023 19:44:54 +0000 (21:44 +0200)]
; More doc improvements for OClosures

* doc/lispref/functions.texi (OClosures):
* doc/lispref/commands.texi (Using Interactive):
* etc/NEWS: Some more docs improvements for OClosures.

20 months agoDon't create GUI frames in batch sessions
Jim Porter [Tue, 28 Feb 2023 19:35:21 +0000 (11:35 -0800)]
Don't create GUI frames in batch sessions

This resolves an issue with running test/lisp/server-tests.el when
'DISPLAY' is set: the tests would start the Emacs server in a batch
session, and then request a new GUI frame.  However, that caused the
tests to terminate with SIGIO, since a batch Emacs doesn't set a SIGIO
handler.

Ref: <https://lists.gnu.org/archive/html/emacs-devel/2023-02/msg00879.html>

* lisp/frame.el (make-frame): Always create a terminal frame in batch
sessions.

20 months ago; Fix wrong error name in erc-server-908 doc string.
F. Jason Park [Fri, 3 Mar 2023 07:37:06 +0000 (23:37 -0800)]
; Fix wrong error name in erc-server-908 doc string.

* lisp/erc/erc-sasl.el (erc-server-908): Correct well-known name for
908 numeric in doc string.
(erc--register-connection): Fold overlong line.

20 months ago; * etc/ERC-NEWS: Mention more deprecations.
F. Jason Park [Fri, 3 Mar 2023 07:33:28 +0000 (23:33 -0800)]
; * etc/ERC-NEWS: Mention more deprecations.

20 months agoMinor copyedits of documentation of OClosures
Eli Zaretskii [Fri, 3 Mar 2023 13:23:22 +0000 (15:23 +0200)]
Minor copyedits of documentation of OClosures

* doc/lispref/functions.texi (OClosures): Improve wording,
indexing, and markup; add details.

20 months agoEglot: pay better attention to hints' paddingLeft/Right (bug#61924)
João Távora [Fri, 3 Mar 2023 13:13:35 +0000 (13:13 +0000)]
Eglot: pay better attention to hints' paddingLeft/Right (bug#61924)

* lisp/progmodes/eglot.el (eglot--update-hints-1): Consider
:json-false, which is a non-nil value.

20 months agoFix c-ts-mode indentation for statement after preproc (bug#61893)
Yuan Fu [Fri, 3 Mar 2023 03:59:11 +0000 (19:59 -0800)]
Fix c-ts-mode indentation for statement after preproc (bug#61893)

Originally our c-ts-mode--anchor-prev-sibling only specially handled
labeled_statements, now we add special case for preproc in the similar
fasion: instead of using the preproc directive as anchor, use the last
statement in that preproc as the anchor. Thus effectively ignore the
preproc.

There should be an accompanying test, but there are some problem in
the elif preproc directive indent so it would pass, we'll add the test
when that is fixed.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--anchor-prev-sibling): Add special case for preproc
directives.

20 months agoFix c/c++-ts-mode's mode lighter
Eli Zaretskii [Thu, 2 Mar 2023 19:34:22 +0000 (21:34 +0200)]
Fix c/c++-ts-mode's mode lighter

* lisp/progmodes/c-ts-mode.el (c-ts-mode-set-modeline): Remove
trailing blank from comment-start when indicating the comment
style on the mode line.

20 months agoEglot: use shell-file-name in eglot--cmd (bug#61748)
João Távora [Thu, 2 Mar 2023 13:27:14 +0000 (13:27 +0000)]
Eglot: use shell-file-name in eglot--cmd (bug#61748)

* lisp/progmodes/eglot.el (eglot--cmd): Use shell-file-name.

20 months agoAvoid signaling errors in url-basic-auth when password is nil
Eli Zaretskii [Thu, 2 Mar 2023 12:35:15 +0000 (14:35 +0200)]
Avoid signaling errors in url-basic-auth when password is nil

* lisp/url/url-auth.el (url-basic-auth): Handle nil PASS.
Suggested by Ellis Kenyo <me@elken.dev>.  (Bug#61411)

20 months agoFix wdired-tests on MS-Windows
Eli Zaretskii [Thu, 2 Mar 2023 12:21:33 +0000 (14:21 +0200)]
Fix wdired-tests on MS-Windows

* test/lisp/wdired-tests.el (wdired-test-bug32173-01)
(wdired-test-bug32173-02, wdired-test-unfinished-edit-01)
(wdired-test-bug39280): Run test-dir through file-truename, to
avoid failures due to MS-Windows "numeric tails" (mis)feature and
similar issues, which make file names fail to compare 'equal'.
(wdired-test-bug34915, wdired-test-bug61510): Skip if symlinks
fail.

20 months agoImprovements to xwidget on macOS (bug#60703)
Andrew De Angelis [Fri, 24 Feb 2023 03:47:41 +0000 (22:47 -0500)]
Improvements to xwidget on macOS (bug#60703)

* src/nsxwidget.m ()
([XwWebView initWithFrame:configuration:xwidget:])
(nsxwidget_init):  Fixed memory leaks: when sending an alloc
message to an object, send an autorelease message to any objects
we won't explictly release.
([XwWebView webView:didFinishNavigation:]): Second string to
store in 'store_xwidget_event_string' is "load finished" rather
than empty string.
([XwWebView webView:didStartProvisionalNavigation:])
([XwWebView webView:didReceiveServerRedirectForProvisionalNavigation:])
([XwWebView webView:didCommitNavigation:]): New functions.
(nsxwidget_webkit_estimated_load_progress): New function.
(nsxwidget_webkit_stop_loading): New function.
* src/xwidget.c (Fxwidget_webkit_estimated_load_progress): Call
'nsxwidget_webkit_estimated_load_progress' if we're on MacOS.
(Fxwidget_webkit_stop_loading): Call 'nsxwidget_webkit_stop_loading'
if we're on MacOS.
(syms_of_xwidget): Define symbol for function.
'xwidget_webkit_estimated_load_progress' if we're on MacOS.
* src/nsxwidget.h: Signature for functions
'nsxwidget_webkit_estimated_load_progress' and
'nsxwidget_webkit_stop_loading'.
* lisp/xwidget.el (xwidget-webkit-current-url): Message URL rather
than return value of 'kill-new' (which is always nil).

20 months ago; Avoid byte-compilation warning in c-ts-mode.el
Eli Zaretskii [Thu, 2 Mar 2023 07:33:04 +0000 (09:33 +0200)]
; Avoid byte-compilation warning in c-ts-mode.el

* lisp/progmodes/c-ts-mode.el (treesit-node-first-child-for-pos):
Declare.

20 months ago* lisp/progmodes/go-ts-mode.el: Use treesit-language-available-p.
Yuan Fu [Wed, 1 Mar 2023 22:38:22 +0000 (14:38 -0800)]
* lisp/progmodes/go-ts-mode.el: Use treesit-language-available-p.

treesit-ready-p does more checks than language grammar availability.

20 months agoDon’t signal warning when loading go-ts-mode.el without grammar
Yuan Fu [Wed, 1 Mar 2023 22:34:56 +0000 (14:34 -0800)]
Don’t signal warning when loading go-ts-mode.el without grammar

* lisp/progmodes/go-ts-mode.el: Add a QUIET flag to the call of
treesit-ready-p, so that it doesn't signal a warning if
go-mod (tree-sitter grammar) is not available.

20 months agoFix c-ts-mode empty line indentation (bug#61893)
Yuan Fu [Wed, 1 Mar 2023 22:01:47 +0000 (14:01 -0800)]
Fix c-ts-mode empty line indentation (bug#61893)

* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Make the
"rest sibling" matchers catch the case where NODE is nil, when
indenting an empty line.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.

20 months agoImprove tree-sitter's prev-sibling indent anchor
Yuan Fu [Wed, 1 Mar 2023 21:55:53 +0000 (13:55 -0800)]
Improve tree-sitter's prev-sibling indent anchor

Now it handles the case where NODE is nil when indenting an empty
line: it tries to get the previous sibling nonetheless.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--anchor-prev-sibling):
* lisp/treesit.el (treesit-simple-indent-presets): Add an or form to
handle more cases.

20 months ago* lisp/icomplete.el (fido-mode): Enable in-buffer completion (bug#45763).
João Távora [Mon, 27 Feb 2023 18:40:48 +0000 (20:40 +0200)]
* lisp/icomplete.el (fido-mode): Enable in-buffer completion (bug#45763).

Backport:
(cherry picked from commit b5c13032538377b0037c745715613693a1580f81)

20 months ago* lisp/icomplete.el: Fix in-buffer completion.
Juri Linkov [Mon, 27 Feb 2023 18:32:53 +0000 (20:32 +0200)]
* lisp/icomplete.el: Fix in-buffer completion.

(icomplete-force-complete-and-exit, icomplete-force-complete): Use
'icomplete--field-beg/end' when not in the minibuffer to not erase
the current buffer.  Also disable 'completion-in-region-mode' instead
of calling 'exit-minibuffer' (bug#45764, bug#51575, bug#61479).

Backport:
(cherry picked from commit a7a984c0ebebb891e2052d8416544f0bd7002007)

20 months ago* src/profiler.c (malloc_probe): Make it safe for GC (bug#60237)
Stefan Monnier [Wed, 1 Mar 2023 17:36:58 +0000 (12:36 -0500)]
* src/profiler.c (malloc_probe): Make it safe for GC (bug#60237)

20 months ago* lisp/emacs-lisp/debug-early.el (debug-early-backtrace): Fix bug#61847
Stefan Monnier [Wed, 1 Mar 2023 17:31:09 +0000 (12:31 -0500)]
* lisp/emacs-lisp/debug-early.el (debug-early-backtrace): Fix bug#61847

The `noerror` arg of `require` doesn't do what Stefan naively thought
when he wrote this code, so use `condition-case` instead.
Also check for `cl-defmethod` since `cl-prin1` can't be loaded before
that anyway.

20 months agoRevert "Don't disable eldoc when doing edebug"
Eli Zaretskii [Wed, 1 Mar 2023 15:35:51 +0000 (17:35 +0200)]
Revert "Don't disable eldoc when doing edebug"

This reverts commit 6fd1fb8a6837acde8e1c9ab26618ec0f36121c72.
It turns out ElDoc does show messages inside Edebug, if you
are (un)lucky enough to have point where ElDoc has something
to show.  Bug#56459 needs to be fixed in some more complex
way.

20 months ago; Eglot: improve bug-reference-url-format/bug-reference-url-regexp
João Távora [Wed, 1 Mar 2023 13:24:07 +0000 (13:24 +0000)]
; Eglot: improve bug-reference-url-format/bug-reference-url-regexp

* lisp/progmodes/eglot.el (eglot--debbugs-or-github-bug-uri): New helper.

20 months agoEglot: work around Tramp instability bug#61350
João Távora [Wed, 1 Mar 2023 11:12:51 +0000 (11:12 +0000)]
Eglot: work around Tramp instability bug#61350

Unconditionally disable ControlMaster for the Eglot's Tramp
connection.

* lisp/progmodes/eglot.el (tramp-ssh-controlmaster-options)
(use-tramp-ssh-controlmaster-options): Forward declare
(eglot--connect): Set variables to unconditionally disable ControlMaster.

20 months agoFix treesit-indent-region
Yuan Fu [Wed, 1 Mar 2023 07:51:06 +0000 (23:51 -0800)]
Fix treesit-indent-region

Fix it for the case where there is no suitable rule for the line.
Right now treesit-indent-region would indent the line to column 0.
After the change the indentation is not altered.

* lisp/treesit.el (treesit-indent-region): Handle the case where
ANCHOR or OFFSET is nil specially.

20 months agoReplace C++ comments with C style equivalents
Po Lu [Wed, 1 Mar 2023 06:28:04 +0000 (14:28 +0800)]
Replace C++ comments with C style equivalents

* src/alloc.c (Fmake_byte_code, purecopy):
* src/bytecode.c (exec_byte_code):
* src/xdisp.c (face_at_pos): Do not use C++-style comments!

20 months ago; Auto-commit of loaddefs files.
Stefan Kangas [Wed, 1 Mar 2023 04:07:53 +0000 (05:07 +0100)]
; Auto-commit of loaddefs files.

20 months agoEglot: fix M-x eglot-show-workspace-configuration (bug#61866)
João Távora [Wed, 1 Mar 2023 01:22:15 +0000 (01:22 +0000)]
Eglot: fix M-x eglot-show-workspace-configuration (bug#61866)

Now consult .dir-locals.el every time the workspace configuration is
needed:

- workspace/configuration server request
- workspace/didChangeConfiguration signal
- M-x eglot-show-workspace-configuration

The major-mode/hack-dir-local-variables-non-file-buffer trick is used.
When there is more than one, the server connection's "main" major mode
is used to find the relevant .dir-locals.el section.

* lisp/progmodes/eglot.el (eglot--lookup-mode): Fix docstring.
(eglot--connect): Simplify.
(eglot-show-workspace-configuration): Fix.
(eglot--workspace-configuration): Remove.
(eglot--workspace-configuration-plist): Rework.
(eglot-handle-request): Simplify.

20 months agoruby-mode: Fix method call indentation in rhs of multiple assignment
Dmitry Gutov [Tue, 28 Feb 2023 21:00:42 +0000 (23:00 +0200)]
ruby-mode: Fix method call indentation in rhs of multiple assignment

* lisp/progmodes/ruby-mode.el (ruby-smie-rules): Special-case
assignment that follows a comma-separated list (bug#61871).

* test/lisp/progmodes/ruby-mode-resources/ruby.rb: Add case.

20 months ago* lisp/net/tramp.el (tramp-remote-path): Improve docstring.
Michael Albinus [Tue, 28 Feb 2023 15:42:11 +0000 (16:42 +0100)]
* lisp/net/tramp.el (tramp-remote-path): Improve docstring.

20 months agoMinor change in 'dired--find-possibly-alternative-file'
Felix [Sun, 26 Feb 2023 13:14:59 +0000 (14:14 +0100)]
Minor change in 'dired--find-possibly-alternative-file'

* lisp/dired.el (dired--find-possibly-alternative-file): Don't
kill the buffer if the directory is shown in other windows.

Copyright-paperwork-exempt: yes

20 months agoImplement prefix arg for 'c-ts-mode-toggle-comment-style'
Felix [Mon, 27 Feb 2023 15:15:02 +0000 (16:15 +0100)]
Implement prefix arg for 'c-ts-mode-toggle-comment-style'

* lisp/progmodes/c-ts-mode.el (c-ts-mode-toggle-comment-style):
Actually implement the optional numeric arg mentioned in the
docstring.

Copyright-paperwork-exempt: yes

20 months agoDefaults to zero for image-dired--number-of-thumbnails
Manuel Giraud [Thu, 23 Feb 2023 15:42:48 +0000 (16:42 +0100)]
Defaults to zero for image-dired--number-of-thumbnails

* lisp/image/image-dired.el (image-dired--number-of-thumbnails):
Defaults zero to avoid wrong type argument error.  (Bug#61734)

20 months ago; Add a doc string for 'ediff-window-display-p' obsolescence
Eli Zaretskii [Tue, 28 Feb 2023 13:15:27 +0000 (15:15 +0200)]
; Add a doc string for 'ediff-window-display-p' obsolescence

* lisp/vc/ediff-init.el (ediff-window-display-p): Document how to
prevent Ediff from creating additional frames, now that this
function can no longer be used or advised for that.  (Bug#61850)

20 months agoRename the newly added -ref- faces to -use-
Dmitry Gutov [Tue, 28 Feb 2023 02:07:55 +0000 (04:07 +0200)]
Rename the newly added -ref- faces to -use-

* lisp/font-lock.el (font-lock-variable-use-face)
(font-lock-property-use-face): Rename from font-lock-variable-ref-face
and font-lock-property-ref-face.  Update all references (bug#61655).

20 months agoEglot: support multiple labels in same inlay hint
João Távora [Mon, 27 Feb 2023 14:54:53 +0000 (14:54 +0000)]
Eglot: support multiple labels in same inlay hint

Mainly the rust-analyzer LSP server uses this.  There are still more
things we could support, like tooltips and stuff.

* lisp/progmodes/eglot.el (lsp-interface-alist): Add
InlayHintLabelPart.
(eglot--update-hints-1): Support multiple labels for same hint.

20 months agoEglot: don't paint hints outside requested region (bug#61812)
João Távora [Mon, 27 Feb 2023 14:23:35 +0000 (14:23 +0000)]
Eglot: don't paint hints outside requested region (bug#61812)

* lisp/progmodes/eglot.el (eglot--lambda): Add cl-block.
(eglot--update-hints-1): Return early if hint is outside the
requested inlay hint range.

20 months ago; * doc/misc/gnus.texi: Fix last change.
Eli Zaretskii [Mon, 27 Feb 2023 12:32:57 +0000 (14:32 +0200)]
; * doc/misc/gnus.texi: Fix last change.

20 months ago; Add `nnimap-user' to Gnus manual
Arash Esbati [Mon, 27 Feb 2023 09:10:13 +0000 (10:10 +0100)]
; Add `nnimap-user' to Gnus manual

* doc/misc/gnus.texi (Customizing the IMAP Connection): Document
backend variable `nnimap-user' which was introduced with commit
5e68f8614f in 2011.
Add index entries for all backend variables.  (bug#61837)

20 months ago; * lisp/progmodes/c-ts-mode.el (treesit-node-prev-sibling): Declare.
Eli Zaretskii [Mon, 27 Feb 2023 12:11:13 +0000 (14:11 +0200)]
; * lisp/progmodes/c-ts-mode.el (treesit-node-prev-sibling): Declare.

20 months agoEglot: protect against unintended field text motion (bug#61726)
João Távora [Mon, 27 Feb 2023 11:29:32 +0000 (11:29 +0000)]
Eglot: protect against unintended field text motion (bug#61726)

Suggested-by: Augusto Stoffel <arstoffel@gmail.com>
* lisp/progmodes/eglot.el (eglot--bol): New helper.
(eglot-utf-8-linepos, eglot-utf-16-linepos)
(eglot-utf-32-linepos, eglot-move-to-utf-8-linepos)
(eglot-move-to-utf-16-linepos, eglot-move-to-utf-32-linepos)
(eglot-handle-notification, eglot--xref-make-match)
(eglot-completion-at-point): Use it.

20 months ago; And yet another fix to eglot-current-linepos-function's docstring
João Távora [Mon, 27 Feb 2023 11:04:44 +0000 (11:04 +0000)]
; And yet another fix to eglot-current-linepos-function's docstring

bug#61726

* lisp/progmodes/eglot.el (eglot-current-linepos-function):
Another fix.

20 months agoFix description of 'desktop-save-mode'
Eli Zaretskii [Mon, 27 Feb 2023 11:31:47 +0000 (13:31 +0200)]
Fix description of 'desktop-save-mode'

* doc/emacs/misc.texi (Saving Emacs Sessions): Adjust to changes
in 'desktop-path'.  Reported by Petteri Hintsanen <petterih@iki.fi>.

20 months agoAdjust tree-sitter defun navigation (bug#61617)
Yuan Fu [Mon, 27 Feb 2023 08:14:32 +0000 (00:14 -0800)]
Adjust tree-sitter defun navigation (bug#61617)

Before this change, when you use a tree-sitter navigation function to
move to the next beginning of a thing, it jumps over the immediate
next thing and lands you at the beginning of the next-next thing.

Eg, when point is at the "|", and we evaluate
(treesit--navigate-thing pos 1 'beg), we go from

|  (thing) (thing)

to

   (thing) |(thing)

But some might expect point to go to

   |(thing) (thing)

instead, which makes sense.  Also, that's how Emacs expect defun
navigation functions to work.  The discrepancy in expectation causes
bug#61617.

In this change I made tree-sitter navigation functions to work as what
Emacs expects.  And what I described for moving to the next beginning
of thing is similarly applicable to moving to the end of previous end
of thing.

* lisp/treesit.el (treesit-beginning-of-defun)
(treesit-end-of-defun): Handle the case where defun-skipper moves
point back to where we started, by adding a retry.

(treesit--navigate-thing): Add a single condition checking for
progress to the condition form responsible for checking whether to
skip the next defun.  Namely (eq pos (funcall advance next)))).

* test/src/treesit-tests.el:
(treesit--ert-defun-navigation-nested-master)
(treesit--ert-defun-navigation-top-level-master): Change tests to
reflect the new expectation.

20 months agoSimplify c-ts-mode--top-level-label-matcher
Yuan Fu [Mon, 27 Feb 2023 02:24:49 +0000 (18:24 -0800)]
Simplify c-ts-mode--top-level-label-matcher

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--top-level-label-matcher): Make more assumptions and remove
the loop, so it's faster in large files.

20 months agoNew tree-sitter indent anchor standalone-parent used by c-ts-mode
Yuan Fu [Mon, 27 Feb 2023 02:05:13 +0000 (18:05 -0800)]
New tree-sitter indent anchor standalone-parent used by c-ts-mode

When writing c-ts-mode Theo used parent-bol which works well except
one case:

1 for (int i=0;
2      i < 5;
3      i++) {
4   func(i);
5 }

In this case, when indenting "func(i)", parent-bol returns the start
of "i++" on line 3, instead of the "correct" anchor, the start of
"for" on line 1.  parent-bol would have worked if the "for (...) {"
part is in one line.

To support this case I tried numerous things and added a bunch of
stuff, culminating in c-ts-common-statement-offset.  It's complicated,
requires extra setup, and slow.

Not anymore! I think the new anchor standalone-parent really captures
the logic behind how people expect indentation to work. It's simple
and fast, and requires no setup.

* doc/lispref/modes.texi (Parser-based Indentation): Update manual.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--standalone-grandparent): New anchor.
(c-ts-mode--indent-styles): Replace c-ts-common-statement-offset with
standalone-parent.
(c-ts-base-mode): Add comment.

* lisp/treesit.el:
(treesit-simple-indent-presets): New anchor standalone-parent.

20 months agoruby-smie-rules: Fix misindentation of a method call after assignment
Dmitry Gutov [Mon, 27 Feb 2023 00:05:56 +0000 (02:05 +0200)]
ruby-smie-rules: Fix misindentation of a method call after assignment

* lisp/progmodes/ruby-mode.el (ruby-smie-rules): Fix indentation of a
method call after assignment with ruby-after-operator-indent=nil
(bug#61822).

* test/lisp/progmodes/ruby-mode-resources/ruby-after-operator-indent.rb:
Add corresponding example.

20 months ago* lib-src/etags.c (process_file_name): Free malloc'ed vars (bug#61819).
Eli Zaretskii [Sun, 26 Feb 2023 18:03:20 +0000 (20:03 +0200)]
* lib-src/etags.c (process_file_name): Free malloc'ed vars (bug#61819).

20 months ago; Improve documentation of loading *.eln files
Eli Zaretskii [Sun, 26 Feb 2023 17:51:59 +0000 (19:51 +0200)]
; Improve documentation of loading *.eln files

* doc/lispref/loading.texi (How Programs Do Loading):
* doc/emacs/building.texi (Lisp Libraries): Some additional
details about what happens with natively-compiled files.

20 months ago; Another doc fix in eglot.el
Eli Zaretskii [Sun, 26 Feb 2023 14:48:07 +0000 (16:48 +0200)]
; Another doc fix in eglot.el

* lisp/progmodes/eglot.el (eglot-current-linepos-function):
Another doc fix.

20 months ago; Fix last change
João Távora [Sun, 26 Feb 2023 14:05:07 +0000 (14:05 +0000)]
; Fix last change

bug#61726

* lisp/progmodes/eglot.el (eglot-current-linepos-function): Fix docstring.

20 months ago; Fix last change
Eli Zaretskii [Sun, 26 Feb 2023 13:24:11 +0000 (15:24 +0200)]
; Fix last change

* lisp/progmodes/eglot.el (eglot-current-linepos-function)
(eglot-utf-8-linepos, eglot-utf-16-linepos)
(eglot-utf-32-linepos, eglot-move-to-linepos-function)
(eglot-move-to-utf-8-linepos, eglot-move-to-utf-32-linepos): Doc
fixes.  (Bug#61726)

20 months agoEglot: rename and redocument encoding-related functions (bug#61726)
João Távora [Sun, 26 Feb 2023 12:50:42 +0000 (12:50 +0000)]
Eglot: rename and redocument encoding-related functions (bug#61726)

* lisp/progmodes/eglot.el (eglot-current-column): Obsolete.
(eglot-lsp-abiding-column): Obsolete.
(eglot-current-column-function): Obsolete.
(eglot-current-linepos-function): Rename from eglot-current-column-function.
(eglot-utf-8-linepos): Rename from eglot-bytewise-column.
(eglot-utf-16-linepos): Rename from eglot-lsp-abiding-column.
(eglot-utf-32-linepos): Rename from eglot-current-column.
(eglot-move-to-current-column): Obsolete.
(eglot-move-to-lsp-abiding-column): Obsolete.
(eglot-move-to-column-function): Obsolete.
(eglot-move-to-linepos-function): Rename from eglot-move-to-column-function.
(eglot-move-to-utf-8-linepos): Rename from eglot-move-to-bytewise-column.
(eglot-move-to-utf-16-linepos): Rename from eglot-move-to-lsp-abiding-column.
(eglot-move-to-utf-32-linepos): Rename from eglot-move-to-current-column.
(eglot--managed-mode): Adjust.
(eglot-client-capabilities): Trim whitespace.

* test/lisp/progmodes/eglot-tests.el (eglot-test-lsp-abiding-column)
(eglot-test-lsp-abiding-column-1): Use new function/variable names.

20 months agoEglot: support positionEncoding LSP capability (bug#61726)
Augusto Stoffel [Sun, 26 Feb 2023 11:47:32 +0000 (11:47 +0000)]
Eglot: support positionEncoding LSP capability (bug#61726)

* lisp/progmodes/eglot.el(eglot-client-capabilities):  Announce the
new capability.
(eglot-bytewise-column, eglot-move-to-bytewise-column): New functions.
(eglot--managed-mode): Set 'eglot-current-column-function' and
'eglot-move-to-bytewise-column' appropriately.

20 months agoEglot: use faster strategy for moving to LSP positions (bug#61726)
Eli Zaretskii [Sun, 26 Feb 2023 10:27:18 +0000 (10:27 +0000)]
Eglot: use faster strategy for moving to LSP positions (bug#61726)

Turns out we don't need encode-coding-region after all.

* lisp/progmodes/eglot.el (eglot-move-to-lsp-abiding-column): Rewrite.

Co-authored-by: Augusto Stoffel <arstoffel@gmail.com>
20 months agoFix mule-tests in UTF-8 locales
Eli Zaretskii [Sun, 26 Feb 2023 09:46:20 +0000 (11:46 +0200)]
Fix mule-tests in UTF-8 locales

* test/lisp/international/mule-tests.el
(sgml-html-meta-no-post-less-than-10lines): Fix test condition.

20 months agoFix 'vertical-motion' when display strings are around
Eli Zaretskii [Sun, 26 Feb 2023 09:34:14 +0000 (11:34 +0200)]
Fix 'vertical-motion' when display strings are around

* src/indent.c (Fvertical_motion): Correct bidi-related condition
for character position, when we didn't move vertically.  (Bug#61636)

20 months ago; * src/treesit.c (treesit_predicate_match): Fix typo.
Yuan Fu [Sun, 26 Feb 2023 09:12:18 +0000 (01:12 -0800)]
; * src/treesit.c (treesit_predicate_match): Fix typo.

20 months agopython-ts-mode: Fix single-quote string fontification
Dmitry Gutov [Sun, 26 Feb 2023 01:09:29 +0000 (03:09 +0200)]
python-ts-mode: Fix single-quote string fontification

* lisp/progmodes/python.el (python--treesit-fontify-string):
Look for ', not just ", as opening delimiter (bug#61796).

20 months ago; * etc/NEWS: Fix typos.
Michael Albinus [Sat, 25 Feb 2023 17:45:14 +0000 (18:45 +0100)]
; * etc/NEWS: Fix typos.

20 months agoFix infloop in bidi.c
Eli Zaretskii [Sat, 25 Feb 2023 15:19:15 +0000 (17:19 +0200)]
Fix infloop in bidi.c

* src/bidi.c (bidi_set_paragraph_end): Reset the isolate_level to
zero.  Whenever stack_idx is reset to zero, the isolate_level must
also be reset, since there cannot be any isolate status outside of
embeddings.  Failure to reset isolate_level will cause us infloop
when we see a PDI.  Reported by Matt Beshara <m@mfa.pw>.

20 months ago; Fix doc string of 'emacs-lisp-byte-compile'
Eli Zaretskii [Sat, 25 Feb 2023 13:51:04 +0000 (15:51 +0200)]
; Fix doc string of 'emacs-lisp-byte-compile'

* lisp/progmodes/elisp-mode.el (emacs-lisp-byte-compile): Doc
fix.  (Bug#61784)

20 months agoCheck the anchor along with the offset in treesit-indent-region
Daniel Martín [Sat, 25 Feb 2023 02:07:55 +0000 (03:07 +0100)]
Check the anchor along with the offset in treesit-indent-region

* lisp/treesit.el (treesit-indent-region): To compute a valid column,
having a non-nil offset is not enough, we need a non-nil anchor as
well.

20 months ago; Fix typos in docstrings in c-ts-common.el
Daniel Martín [Thu, 23 Feb 2023 17:30:36 +0000 (18:30 +0100)]
; Fix typos in docstrings in c-ts-common.el

* lisp/progmodes/c-ts-common.el:
(c-ts-common-statement-offset): Fix typo.

20 months ago; Set indent-tabs-mode to nil in c-ts-mode indent preproc test
Yuan Fu [Sat, 25 Feb 2023 03:43:22 +0000 (19:43 -0800)]
; Set indent-tabs-mode to nil in c-ts-mode indent preproc test

* test/lisp/progmodes/c-ts-mode-resources/indent-preproc.erts: Set
indent-tabs-mode to nil.

20 months agoAlign to prev sibling for c-ts-mode indentation
Yuan Fu [Sat, 25 Feb 2023 02:40:52 +0000 (18:40 -0800)]
Align to prev sibling for c-ts-mode indentation

As requested by a discussion on emacs-devel.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--anchor-prev-sibling): New function.
(c-ts-mode--indent-styles): Indent first child as before, indent the
rest to their previous sibling.  Remove bracketless statement rules
that I forgot to remove previously.

20 months agoFix c-ts-common-statement-offset and c-ts-common--node-is
Yuan Fu [Sat, 25 Feb 2023 03:31:34 +0000 (19:31 -0800)]
Fix c-ts-common-statement-offset and c-ts-common--node-is

* lisp/progmodes/c-ts-common.el:
(c-ts-common--node-is): Guard against case where the node has no field
name.
(c-ts-common-statement-offset): Do indent a level if the "if" in the
"else if" is on an independent line.