1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-24 22:40:51 -08:00
Commit graph

164761 commits

Author SHA1 Message Date
Ulrich Müller
c8ec0017cb Avoid using bash in the emacsclient desktop file
* etc/emacsclient-mail.desktop (Exec): Use sh and sed instead
of bash, because the latter may not be available everywhere.
2023-03-08 19:37:27 +01:00
Eli Zaretskii
a588937094 Fix documentation of the 'line-height' text property
* doc/lispref/display.texi (Line Height): More accurate
documentation of the value t of 'line-height' text property.
(Bug#62048)
2023-03-08 19:29:33 +02:00
Gregory Heytings
971ded31c4 Add 'declare' specs to with- and without-restriction
* lisp/subr.el (with-restriction):
(without-restriction): Add 'declare' specs.
2023-03-08 11:00:40 +01:00
Yuan Fu
f9b7913656
Fix empty line indentation in c-ts-mode (bug#61997)
* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--indent-styles): Handle the empty line case.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.

* doc/lispref/modes.texi (Parser-based Indentation): Update manual.
* lisp/treesit.el (treesit-simple-indent-presets): Support null as
a value for NODE-TYPE in the 'match' matcher.
2023-03-07 16:42:44 -08:00
Yuan Fu
90504f9d89
Fix tree-sitter indent preset prev-line (bug#61998)
* lisp/treesit.el (treesit-simple-indent-presets): Fix return value.
2023-03-07 16:27:24 -08:00
Manuel Giraud
ed3bab3cc7 Revert 'forward-sentence-default-function' to return point (bug#62027)
* lisp/textmodes/paragraphs.el
(forward-sentence-default-function): Revert to return the
position of point.
(count-sentences): Adapt to this change.
2023-03-07 21:31:15 +02:00
Michael Albinus
bfe62b1041 ; * etc/NEWS: Fix typos. 2023-03-07 18:50:44 +01:00
Ulrich Müller
3c1693d08b 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.
2023-03-07 18:25:37 +01:00
Eli Zaretskii
ab417c8a6e 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.
2023-03-07 14:39:27 +02:00
João Távora
bd07cec844 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 bf81df86e5
     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.
2023-03-06 22:58:11 +00:00
Andrea Corallo
0e3c7ac13d * 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.
2023-03-06 17:29:36 +01:00
Andrea Corallo
4a7e657389 * lisp/emacs-lisp/comp.el (comp-prettyformat-insn): Fix (bug#61917) 2023-03-06 17:23:15 +01:00
Eli Zaretskii
8a8a994cfa Revert "Fix configuration of webp libraries"
This reverts commit de4277af00.
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.
2023-03-06 17:31:57 +02:00
Po Lu
de4277af00 Fix configuration of webp libraries
* configure.ac: Link with libwebpdecoder along with
libwebpdemux.  (bug#61988)
2023-03-06 21:42:29 +08:00
Yuan Fu
1c67e4f895
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.
2023-03-05 15:22:36 -08:00
Yuan Fu
d724d7d678
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.
2023-03-05 15:07:58 -08:00
Yuan Fu
7292b24c80
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.
2023-03-05 15:01:54 -08:00
Yuan Fu
75cdc1afbe
; 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.
2023-03-05 14:46:18 -08:00
Kyle Meyer
b1b3af5b90 Update to Org 9.6.1-40-g3d817c 2023-03-05 17:34:13 -05:00
Yuan Fu
80e1037df4
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.
2023-03-05 14:17:57 -08:00
Michael Albinus
5b8e0b3154 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.
2023-03-05 17:31:26 +01:00
Eli Zaretskii
2258ed01f4 ; Minor fix of last change
* lisp/emacs-lisp/comp.el (comp-subr-trampoline-install): Fix
wording.  (Bug#61880)
2023-03-05 12:24:39 +02:00
Andrea Corallo
9c18af0cfa * 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.
2023-03-05 11:06:37 +01:00
Eli Zaretskii
5af695c747 ; * lib-src/etags.c (print_help): Fix indentation. 2023-03-05 08:43:03 +02:00
Yuan Fu
836044f329
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.
2023-03-04 15:03:12 -08:00
Eli Zaretskii
64980a59b6 ; * lisp/files.el (hack-local-variables): Fix typo in the doc string. 2023-03-04 22:03:14 +02:00
João Távora
a7cd125d49 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.
2023-03-04 19:15:48 +00:00
João Távora
6c66dbd02c 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.
2023-03-04 19:15:48 +00:00
Dmitry Gutov
246f5b541c Update ts modes missed in 4c16fd3a51 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.
2023-03-04 19:45:39 +02:00
João Távora
0bfba49ca7 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.
2023-03-04 12:49:00 +00:00
Eli Zaretskii
ea5fd375bb 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.
2023-03-04 12:16:51 +02:00
Yuan Fu
4c16fd3a51
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.
2023-03-04 01:20:02 -08:00
Yuan Fu
f47b393015
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.
2023-03-04 01:20:01 -08:00
Eli Zaretskii
e0bf2da3db ; 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)
2023-03-04 10:43:25 +02:00
João Távora
bd5115e134 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.
2023-03-04 00:16:41 +00:00
Stefan Monnier
adc04ad524 * 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`.
2023-03-03 19:13:03 -05:00
João Távora
b3e930d328 Revert inadvertent change to lisp/icomplete.el in previous commit
The change

   commit 3a651773d2
   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.
2023-03-03 23:36:26 +00:00
Yuan Fu
da8e4b6fe4
Revert previous change in go-ts-mode.el
Reverts 59365f9285 and
56cd810b9d.

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

* lisp/progmodes/go-ts-mode.el (treesit-ready-p): Revert change.
2023-03-03 14:01:05 -08:00
F. Jason Park
7548446194 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.
2023-03-03 13:49:18 -08:00
Eli Zaretskii
585faf4c17 ; More doc improvements for OClosures
* doc/lispref/functions.texi (OClosures):
* doc/lispref/commands.texi (Using Interactive):
* etc/NEWS: Some more docs improvements for OClosures.
2023-03-03 21:44:54 +02:00
Jim Porter
2840895c1a 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.
2023-03-03 09:25:22 -08:00
F. Jason Park
452b5ed103 ; 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.
2023-03-03 05:33:33 -08:00
F. Jason Park
1e9484f2fd ; * etc/ERC-NEWS: Mention more deprecations. 2023-03-03 05:33:33 -08:00
Eli Zaretskii
119b3a4dba Minor copyedits of documentation of OClosures
* doc/lispref/functions.texi (OClosures): Improve wording,
indexing, and markup; add details.
2023-03-03 15:23:22 +02:00
João Távora
3a651773d2 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.
2023-03-03 13:14:34 +00:00
Yuan Fu
9e105d483f
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.
2023-03-02 19:59:37 -08:00
Eli Zaretskii
a72a55e3e4 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.
2023-03-02 21:34:22 +02:00
João Távora
67befc1f5a Eglot: use shell-file-name in eglot--cmd (bug#61748)
* lisp/progmodes/eglot.el (eglot--cmd): Use shell-file-name.
2023-03-02 13:42:15 +00:00
Eli Zaretskii
1c7b2673bd 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)
2023-03-02 14:35:15 +02:00
Eli Zaretskii
756225e377 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.
2023-03-02 14:21:33 +02:00