1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-22 23:04:12 -07:00
Commit graph

96231 commits

Author SHA1 Message Date
Jim Porter
6df535788a Fix usage reporting for Eshell commands
* lisp/eshell/esh-cmd.el (eshell-exec-lisp): Call
'elisp-get-fnsym-args-string'; the old function was renamed to this.
2024-12-08 20:23:46 -08:00
Jim Porter
b6c91cdf54 Return non-zero exit status when Eshell's "which" fails to find a command
* lisp/eshell/esh-cmd.el (eshell/which): Set exit status to 1 if we
couldn't find any of the commands (bug#74739).
2024-12-08 20:21:31 -08:00
Stefan Kangas
9b4af418dd Make setting tex-dvi-view-command to an sexp obsolete
This is more in line with how we generally handle user options for
commands to call.  Later, we can get rid of the 'eval' call.

* lisp/textmodes/tex-mode.el (tex-view): Warn if tex-dvi-view-command is
set to an sexp instead of a string; say that this use is obsolete.
(tex-dvi-view-command): Change the default value to a string.  Update
docstring to reflect the above obsoletion.
2024-12-09 04:25:04 +01:00
Michael Albinus
4960af1c96 Fix calling processes inside ffap
* lisp/ffap.el (ffap--url-file-handler): Handle also
`unhandled-file-name-directory'.  (Bug#74208)
2024-12-08 18:22:17 +01:00
Yuan Fu
b953bcb170
Allow treesit--font-lock-level-setter to be an alist
* lisp/treesit.el (treesit-font-lock-level): Allow the
value to be an alist mapping major modes to font lock levels.
(treesit--font-lock-level-setter): Rewrite.
(treesit--compute-font-lock-level): New function.
(treesit-font-lock-recompute-features): Use new function.

* doc/lispref/modes.texi (Parser-based Font Lock): Minor fix.
2024-12-07 23:36:02 -08:00
Eli Zaretskii
6f6b641975 Merge from origin/emacs-30
4f2a21cc2a Don't restrict 'lua-ts-send-file' to 'lua-ts-mode'
2024-12-07 09:16:18 -05:00
Eli Zaretskii
284b6647d2 Merge from origin/emacs-30
3cf177442c ; * lisp/help-at-pt.el (display-local-help): Fix last cha...
02c53b9aab ; * lisp/help-at-pt.el (display-local-help): Doc fix.
130c2a13dc ; * doc/emacs/building.texi (Compilation Mode): Fix last ...
df7f02a795 Add tags to 'compilation-transform-file-match-alist' cust...
7c50e4cc8c Improve 'compilation-transform-file-match-alist' document...
a73d08bb67 Improve 'compilation-hidden-output' docstring
d50293b0f1 ; Improve documentation of 'epa-mail-verify'
2024-12-07 09:16:18 -05:00
john muhl
4f2a21cc2a Don't restrict 'lua-ts-send-file' to 'lua-ts-mode'
* lisp/progmodes/lua-ts-mode.el (lua-ts-send-file): Remove
restriction on interactive use.  Unlike related send-* commands
it can be useful to send a file to the Lua interpreter outside of
a 'lua-ts-mode' buffer.  (Bug#74705)
2024-12-07 15:28:14 +02:00
Vincenzo Pupillo
84fc77f34f Remove unnecessary function call from 'php-ts-mode'
* lisp/progmodes/php-ts-mode.el (php-ts-mode): Remove
unnecessary function call 'treesit-font-lock-recompute-features'.
(Bug#74688)

(cherry picked from commit c87c5b95e1)
2024-12-07 15:17:35 +02:00
Vincenzo Pupillo
c87c5b95e1 Remove unnecessary function call from 'php-ts-mode'
* lisp/progmodes/php-ts-mode.el (php-ts-mode): Remove
unnecessary function call 'treesit-font-lock-recompute-features'.
(Bug#74688)
2024-12-07 15:15:41 +02:00
Daniel Mendler
e7fdf6b68c progmodes/js: Use 'completing-read' instead of 'ido-completing-read'
* lisp/progmodes/js.el (js--read-symbol): Don't use Ido.
(Bug#74615)
2024-12-07 14:51:36 +02:00
Eli Zaretskii
8c3e10b575 ; Fix last change
* lisp/progmodes/flymake-cc.el (flymake-cc-command): Fix doc
string and customization tags.  (Bug#74378)
2024-12-07 14:43:34 +02:00
Pengji Zhang
bf976ca743 Allow lambdas for 'flymake-cc-command'
* lisp/progmodes/flymake-cc.el (flymake-cc-command): Use
customization type 'function' instead of 'symbol' to allow
other callable objects in addition to named functions, and
update the doc string accordingly.
(flymake-cc): Use 'functionp' to check if 'flymake-cc-command'
is callable.  (Bug#74378)
2024-12-07 14:37:36 +02:00
Eli Zaretskii
d84c5c24b5 ; * lisp/dired-aux.el (shell-command-guess-open): Fix :type (bug#74720). 2024-12-07 06:50:27 -05:00
Eli Zaretskii
d185d90190 Update info-lookup's support for 'latex-mode'
* lisp/info-look.el (latex-mode): Update URLs of LaTeX manuals and
the corresponding names of the index nodes.
2024-12-07 11:04:44 +02:00
Michael Albinus
9ddec89e42 Better handling of "%" in Tramp user or host names
* lisp/net/tramp.el (tramp-format-spec): New defun.
(tramp-dissect-file-name, tramp-compute-multi-hops)
(tramp-expand-args):
* lisp/net/tramp-cmds.el (tramp-default-rename-file): Use it.
2024-12-06 11:56:05 +01:00
Juri Linkov
61d0676297 * lisp/emacs-lisp/lisp-mode.el (lisp-fdefs): Fix font-lock (bug#74307).
Move '(not "\\")' inside the group to not exclude the last character
for "\\<>" and similar constructs.
2024-12-05 20:15:12 +02:00
Robert Pluim
3cf177442c ; * lisp/help-at-pt.el (display-local-help): Fix last change. 2024-12-05 11:21:51 +01:00
Yuan Fu
ed9eaaa996
Validate font-lock rules when setting up tree-sitter major mode
When tree-sitter grammar make breaking changes, major modes
breaks completely: no highlighting is shown.  This new function
will run in treesit-major-mode-setup, validate each
font-lock features, and disable the ones that are not compatible
with the new grammar, so that the rest of the features still
work.  It also displays a warning explaining the situation,
which looks like this:

    Warning (treesit-font-lock-rules-mismatch): Emacs cannot
    compile every font-lock rules because a mismatch between the
    grammar and the rules.  This is most likely due to a
    mismatch between the font-lock rules defined by the major
    mode and the tree-sitter grammar.

    This error can be fixed by either downgrading the
    grammar (tree-sitter-c) on your system, or upgrading the
    major mode package.  The following are the temporarily
    disabled features:

    - `preprocessor' for c.

* lisp/treesit.el (treesit-validate-font-lock-rules): New function.
(treesit-major-mode-setup): Validate font-lock rules.
2024-12-04 22:39:28 -08:00
Yuan Fu
5d535334f3
; Use cpp instead of c++ for c-ts-mode--simple-indent-rules
* lisp/progmodes/c-ts-mode.el (c-ts-mode--simple-indent-rules):
Use cpp to be more inline with other functions in c-ts-mode.el.
2024-12-04 22:39:28 -08:00
Yuan Fu
10b4d3045e
Make tree-sitter-explorer support selecting local parser
Now treesit-explore-mode will prompt the user to select a parser
to explore, rather than a language.  It'll also include the
local parsers at point for selection.

* lisp/treesit.el (treesit--explorer-language): Change to
treesit--explorer-parser.
(treesit--explorer--nodes-to-highlight):
(treesit--explorer-refresh): Change to use parser.
(treesit--explorer-generate-parser-alist): New function.
(treesit-explorer-switch-parser): New command.
(treesit-explore-mode): Use switch-parser to setup.
* doc/lispref/parsing.texi (Language Grammar): Mention
treesit-explorer-switch-parser.
2024-12-04 22:39:28 -08:00
Juri Linkov
25b4bf7fcd * lisp/tab-line.el (tab-line-tabs-fixed-window-buffers): More optimizations.
Use :size arg of 'make-hash-table' as a hint how many buffers
the table will have.  Add ':in-place t' to 'sort'.
2024-12-04 20:38:41 +02:00
Eli Zaretskii
02c53b9aab ; * lisp/help-at-pt.el (display-local-help): Doc fix. 2024-12-04 19:51:31 +02:00
Robert Pluim
df7f02a795 Add tags to 'compilation-transform-file-match-alist' custom type
* lisp/progmodes/compile.el (compilation-filter-start): Add some
more meaningful tags, and switch to using 'radio' instead of
'choice'.
2024-12-04 17:00:16 +01:00
Robert Pluim
7c50e4cc8c Improve 'compilation-transform-file-match-alist' documentation
* doc/emacs/building.texi (Compilation Mode): Document
'compilation-transform-file-match-alist'.
* lisp/progmodes/compile.el
(compilation-transform-file-match-alist):
Expand docstring and add some examples.
2024-12-04 14:55:27 +01:00
Robert Pluim
a73d08bb67 Improve 'compilation-hidden-output' docstring
* lisp/progmodes/compile.el (compilation-hidden-output): Escape
the newline so the example value is more suitable for copying.
2024-12-04 14:50:41 +01:00
Eli Zaretskii
d50293b0f1 ; Improve documentation of 'epa-mail-verify'
* doc/misc/epa.texi (Mail-mode integration):
* lisp/epa-mail.el (epa-mail-verify): Improve documentation of
'epa-mail-verify'.  (Bug#74630)
2024-12-04 15:21:13 +02:00
Robert Pluim
c7d9ffcf82 Improve docstrings of functions for moving to message headers
* lisp/gnus/message.el (message-goto-to, message-goto-from,
message-goto-subject, message-goto-cc, message-goto-bcc,
message-goto-fcc, message-goto-reply-to,
message-goto-newsgroups, message-goto-distribution,
message-goto-followup-to, message-goto-mail-followup-to,
message-goto-keywords, message-goto-summary): Mention that these
will insert an empty header if the header is not found.
(message-position-on-field): Explain that this inserts an empty
header if the header is missing, and that insertion is done
after the headers mentioned in AFTERS.

(cherry picked from commit 9f266e2d7c)
2024-12-04 14:10:21 +02:00
Juri Linkov
d706be4b34 Remove obsolete 'display-comint-buffer-action' (bug#74361)
* lisp/window.el (display-comint-buffer-action):
(display-tex-shell-buffer-action):
Remove obsolete defcustoms.

* lisp/cmuscheme.el (run-scheme, switch-to-scheme):
* lisp/shell.el (shell):
* lisp/eshell/eshell.el (eshell):
* lisp/progmodes/inf-lisp.el (inferior-lisp):
* lisp/progmodes/project.el (project-shell, project-eshell):
* lisp/progmodes/sh-script.el (sh-show-shell):
Replace 'display-comint-buffer-action' with a list of
'display-buffer--same-window-action' and '(category . comint)'.

* lisp/org/ol-eshell.el (org-eshell-open): Add '(category . comint)'.

* lisp/textmodes/tex-mode.el (tex-display-shell)
(tex-recenter-output-buffer):
Replace 'display-tex-shell-buffer-action' with a list of
'display-buffer-in-previous-window' and '(category . tex-shell)'.
2024-12-04 09:40:33 +02:00
Juri Linkov
69e1f78752 Add new keyword :continue-only to defvar-keymap for repeat-mode (bug#74140)
* doc/lispref/keymaps.texi (Creating Keymaps): Add :continue-only
to :repeat part of defvar-keymap.

* lisp/keymap.el (defvar-keymap): Add support for new :repeat
keyword :continue-only.

* lisp/repeat.el (repeat-post-hook): The property 'repeat-continue-only'
is handled as a list of repeat-maps.

* test/lisp/repeat-tests.el (repeat-tests-repeat-map): Use new
:repeat keyword :continue-only.
2024-12-03 20:12:03 +02:00
Robert Pluim
9f266e2d7c Improve docstrings of functions for moving to message headers
* lisp/gnus/message.el (message-goto-to, message-goto-from,
message-goto-subject, message-goto-cc, message-goto-bcc,
message-goto-fcc, message-goto-reply-to,
message-goto-newsgroups, message-goto-distribution,
message-goto-followup-to, message-goto-mail-followup-to,
message-goto-keywords, message-goto-summary): Mention that these
will insert an empty header if the header is not found.
(message-position-on-field): Explain that this inserts an empty
header if the header is missing, and that insertion is done
after the headers mentioned in AFTERS.
2024-12-03 15:48:25 +01:00
Tomas Volf
0033ce9ef8 Actually remove the Mail-Followup-To header iff empty
* lisp/gnus/message.el (message-send-mail): Pass a fixed string
instead of regexp to 'message-remove-header' (Bug#74658).

Copyright-paperwork-exempt: yes
2024-12-03 15:48:25 +01:00
Andrea Corallo
04d035acd7 * lisp/progmodes/c-ts-mode.el (treesit-node-match-p): Declare. 2024-12-03 09:25:51 +01:00
Dmitry Gutov
8534bb2d6b project-try-vc--search: Fix inside recursive submodule setup
* lisp/progmodes/project.el (project-try-vc--search): Loop when
looking for submodule parent repository (bug#74614).
2024-12-03 04:31:25 +02:00
Andrea Corallo
f9e7f57f57 * Declare few treesit-* function to clean-up wanrnings
* lisp/progmodes/c-ts-common.el (treesit-parser-language)
(treesit-node-match-p, treesit-node-child, treesit-node-eq)
(treesit-parser-root-node, treesit-node-parser): Declare.
2024-12-02 21:53:47 +01:00
Michael Albinus
a582034dc5 Fix password prompt in comint
* lisp/comint.el (comint-password-prompt-regexp): Don't use "'s"
as keyword.  Add default OpenSSH format.  Adapt :version.
(comint-watch-for-password-prompt): Adapt prompt composition.
(Bug#74626)
2024-12-02 19:26:06 +01:00
Michael Albinus
e618d5ae94 Fix password prompt in comint (don't merge)
* lisp/comint.el (comint-watch-for-password-prompt): Use whole
string for setting the prompt.  (Bug#74626)
2024-12-02 19:21:54 +01:00
Yuan Fu
9acf6eff01
Standardize and promote c-ts-mode's custom matcher and anchor
Specifically, standalone-parent and prev-sibling.  The c-ts-mode
custom version skips labels and proproc directives.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--standalone-parent-skip-preproc): Rename to
c-ts-mode--standalone-parent, and make it skip labels too.
(c-ts-mode--preproc-indent-rules): Rename standalone-parent and
prev-sibling.
(c-ts-mode--label-indent-rules): Use custom standalone-parent
and prev-sibling.
2024-12-01 17:53:23 -08:00
Yuan Fu
994258f556
Remove unused functions in c-ts-mode
Remove functions that became unused due to the previous change.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--standalone-grandparent):
(c-ts-mode--else-heuristic):
(c-ts-mode--first-sibling):
(c-ts-mode--parent-is-not-top-compound):
(c-ts-mode--indent-styles):
(c-ts-mode--top-level-label-matcher): Remove functions.
(c-ts-mode--simple-indent-rules): Move two label rules into
c-ts-mode--label-indent-rules.
(c-ts-mode--label-indent-rules): Add rules
2024-12-01 17:53:23 -08:00
Yuan Fu
63d69bd154
Use new baseline indent rule in c-ts-mode
Rework the indent rules in c-ts-mode using
c-ts-common-baseline-indent-rule.  Also reworked internal
functions for setting indent styles to make it simpler and (more
importantly) more readable.  Now there's a single function,
c-ts-mode--simple-indent-rules, that returns a value that can go
straight to treesit-simple-indent-rules.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--indent-style-setter): Simplify.
(c-ts-mode--get-indent-style): Remove function.
(c-ts-mode--prompt-for-style): Use a hard-coded list of styles.
This is a tiny downgrade from the computed lists but is
acceptable.
(c-ts-mode-set-style): Use c-ts-mode--simple-indent-rules.
(c-ts-mode--standalone-grandparent): Docstring change.
(c-ts-mode--for-loop-indent-rule): New function.
(c-ts-mode--preproc-indent-rules): New variable.  Copied from
old indent rules and added some new rule.
(c-ts-mode--macro-heuristic-rules):
(c-ts-mode--simple-indent-rules):
(c-ts-mode--parenthesized-expression-indent-rule):
(c-ts-mode--label-indent-rules): New functions.
(c-ts-mode):
(c++-ts-mode): Use c-ts-mode--simple-indent-rules.
2024-12-01 17:53:22 -08:00
Yuan Fu
e37cd4fa59
Add baseline tree-sitter indent rule for C-like languages
I found a really good baseline indent rule that handles a wide
range of situations very well.  Now major modes can just start
with this rule and add exceptions on top.

This is worth mentioning in the manual, but that'll be a large
change, and doesn't have to be included in this commit.

* lisp/progmodes/c-ts-common.el:

(c-ts-common-list-indent-style): New variable.
(c-ts-common--standalone-parent):
(c-ts-common--prev-standalone-sibling):
(c-ts-common-parent-ignore-preproc):
(c-ts-common-baseline-indent-rule): New function.

* lisp/treesit.el (treesit--indent-prev-line-node): New function.
(treesit-simple-indent-presets): Add new preset.
2024-12-01 17:53:22 -08:00
Yuan Fu
4afdb7e80f
; Minor simplification for tree-sitter indent preset column-0
* lisp/treesit.el (treesit-simple-indent-presets): Simplify.
2024-12-01 17:53:22 -08:00
Yuan Fu
d0b918d8f3
Add treesit-explore command
* lisp/treesit.el (treesit-explore): New function.
* doc/lispref/parsing.texi (Language Grammar): Advertize this
command instead of the minor mode.
2024-12-01 17:53:22 -08:00
Yuan Fu
1e44c63fca
Allow treesit-simple-indent's rule to be a single function
* lisp/treesit.el (treesit-simple-indent-rules): Allow the rule
to be a single function.  Also replace cl-loop with dolist plus
catch-throw.
(treesit--indent-rules-optimize): Handle the case when a rule is
a function.
* doc/lispref/modes.texi (Parser-based Indentation): Update
manuel.
2024-12-01 17:53:21 -08:00
Yuan Fu
1d42512569
Refactor treesit--indent-1
* lisp/treesit.el (treesit--indent-largest-node-at): New
function.
(treesit--indent-1): Extract code out into the new function.
2024-12-01 17:53:21 -08:00
Jørgen Kvalsvik
c65c5d0222
Improve c-ts-mode compound indents (bug#74507)
Properly indent the body of compound expressions, even when then
compound expression is not at the beginning of line and the
parent is not an if/for/while/etc., and matches the behavior of
c-mode.

This fixes a problem that is common with macros and in testing
frameworks. For example, you expect this to indent:

TEST_CASE(1) {
    assert (...);
}

If the compound statement is the function body itself, don't
apply this new rule and instead guide by the parent and first
sibling.

I'm sure there are subtle interactions that aren't handled
properly by checking for "function_definition" rather than
something more general, but it does fix the test case and the
check can be improved as more cases are found.

* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--parent-is-not-top-compound): New function.
(c-ts-mode--indent-styles): Use it.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New
compound statement test.
2024-12-01 17:53:21 -08:00
Yuan Fu
4afd1eca36
Merge from emacs-30
cf4f1387a6 ; Update tree-sitter manual
3c7687c1dd Allow passing nil to treesit-node-match-p (bug#74612)
748b19e56e Update to version 2.58 of librsvg API (bug#74606)
4c67f636c0 Fix decoding of non-ASCII email attachments
bd8a6f70fb Prevent "Selecting deleted buffer" error with dabbrev-expand
0a753603a5 ; (dictionary-search-interface): Fix bug#74511.
2024-12-01 17:52:16 -08:00
Stefan Monnier
676ff9fd7c (asm-mode): Support file-local asm-comment-char (bug#74447)
* lisp/progmodes/asm-mode.el (asm-mode): Move comment settings
to `:after-hook`.
2024-12-01 18:58:04 -05:00
F. Jason Park
3bf4ea9543 Reserve erc-normalize-port for equality comparisons
* etc/ERC-NEWS: Add entry explaining changes to entry point 'erc-tls'
and library functions `erc-normalize-port' and `erc-compute-port'.
* lisp/erc/erc.el (erc-normalize-port): Map "ircu" to 6665 instead of
6667, and add related IANA service mappings.  Return 0 for unknown
nonempty strings.
(erc-open): Pass `erc-session-port' through `erc-string-to-port' before
handing it to `erc-server-connect'.  This prevents the network machinery
from ever seeing a numeric string, like "6667".
(erc-select-read-args): Since `erc-compute-port' no longer relies on
`erc-normalize-port', ensure its input is a number.  Use
`erc-port-equal' instead of `eql'.
(erc-tls): Respect a configured non-nil `erc-port' option when the user
does not provide a :port keyword argument from Lisp code.
(erc-determine-parameters): Use `erc-compute-port' for initializing
`erc-session-port'.
(erc-compute-port): Don't pass the result through `erc-normalize-port',
which can convert it to an unintuitive form.
(erc--url-default-connect-function): Use `erc-compute-port' instead of
`erc-normalize-port'.
(erc-handle-irc-url): Use `erc-port-equal' for comparison.
* test/lisp/erc/erc-scenarios-auth-source.el
(erc-scenarios-common--auth-source): Allow tests to convey the automatic
port number to `erc-open' via `erc-port'.
(erc-scenarios-base-auth-source-server--dialed): Use `erc-port' option
instead of passing a :port parameter to entry-point command.
* test/lisp/erc/erc-tests.el (erc-normalize-port): New test.
(Bug#74516)
2024-12-01 10:56:08 -08:00
Trevor Arjeski
d899519221 Allow querying auth-source with port as string in ERC
* lisp/erc/erc.el (erc--auth-source-determine-params-defaults): Allow
arbitrary strings for `ers-session-port'.  Previously, if a port/service
was any string other than "irc", the auth-source query would fail for a
seemingly unknown reason.  Restricting the value to "irc" is unnecessary
since "irc" is already added to the list of ports, and
`make-network-process' already consults /etc/services for well-known
service names, like "ircs-u", etc.  This change allows a user to (setopt
erc-port "1234"), intentionally or accidentally, while still being able
to use .authinfo for password management.  (Bug#74516)

Copyright-paperwork-exempt: yes
2024-12-01 10:51:18 -08:00