1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-24 13:32:41 -08:00
Commit graph

165763 commits

Author SHA1 Message Date
Eli Zaretskii
89f54e8157 A better fix for bug#60096
* lisp/startup.el (initial-scratch-message):
* lisp/simple.el (get-scratch-buffer-create): Revert last changes.

* src/window.c (Fset_window_configuration): Force recalculation of
Vwindow_list after restoring the windows.
* src/buffer.c (other_buffer_safely): Make sure we always return a
valid buffer, even if 'get-scratch-buffer-create' signals an
error.
2022-12-16 16:29:51 +02:00
Eli Zaretskii
1b9ca1e5e6 ; Fix printing Lisp types in .gdbinit
* src/alloc.c (valid_lisp_object_p): Support printing
stack-allocated strings and cons cells.
2022-12-16 14:14:42 +02:00
João Távora
7575c85efd Bump Eglot version to 1.10
* lisp/progmodes/eglot.el (Version): Bump to 1.10
(Package-Requires): Bump required versions of jsonrpc and project.
2022-12-16 09:29:40 +00:00
João Távora
a0806bc7ea Eglot: fix discrepant eglot-guess-contact/eglot-command-history
Due to a typo, the defvar eglot--command-history wasn't actually used
in eglot-guess-contact as intended.  That function used a
single-dash-name version of the variable instead.

This worked fine, except that two variables were created instead of
one, and the one actually being used didn't have any docstring.

Rename the variable to eglot-command-history to fix this.  It's better
than renaming the reference in eglot-guess-contact which would lose
user's history for M-x eglot.

* lisp/progmodes/eglot.el (eglot-command-history): Rename from
eglot--command-history.
2022-12-16 09:29:40 +00:00
João Távora
8bf4cdcf79 Avoid recursive process filters in lisp/jsonrpc.el (bug#60088)
jsonrpc.el may lose JSON-RPC messages because of recursive process
filters.  The problem happens in jsonrpc.el's jsonrpc--process-filter.

The code of the process filter didn't expect to be called recursively
and fails in that case.

But that can happen if the three conditions are verified.

1. the client code invoked by its jsonrpc--connection-receive inside
   the process filter callee immediately sends follow-up input to
   process within the same Lisp stack.  This is a common scenario,
   especially during LSP initialiation sequence used by Eglot, a
   jsonrpc.el client.

2. that follow-up message is large enough for process-send-string to
   send the input in bunches (output from processes can arrive in
   between bunches).

3. the process happens to have already some more output ready

The fix in this commit detects recursive invocations and immediately
re-schedules them as non-recursive calls to the
jsonrpc--process-filter (but started from timers).

* lisp/jsonrpc.el (jsonrpc--process-filter): Rework.
(Version): Bump to 1.0.16.
2022-12-16 08:53:10 +00:00
Stefan Kangas
033071692c ; Fix typos 2022-12-16 08:29:28 +01:00
Theodor Thornhill
f4a513344d
Add lambda_expression-rule to java-ts-mode (bug#60091)
* lisp/progmodes/java-ts-mode.el (java-ts-mode--indent-rules): New
rule.
2022-12-15 19:26:42 -08:00
Jostein Kjønigsen
546aed3543 eglot: Add support for new language server csharp-ls
C# has two popular language servers: Omnisharp Roslyn (already
supported) and csharp-ls (newer, more performant).

* lisp/progmodes/eglot.el: Add new C# language server
csharp-ls.  (Bug#60089)
2022-12-16 03:09:28 +01:00
Yuan Fu
cb761eb7ac
Use the new tree-sitter commands
* lisp/progmodes/c-ts-mode.el (c-ts-mode--defun-valid-p)
(c-ts-mode--defun-skipper): New functions.
(c-ts-base-mode): Setup defun navigation.
* lisp/progmodes/sh-script.el (bash-ts-mode): Setup defun navigation.
* lisp/treesit.el (treesit-beginning-of-defun)
(treesit-end-of-defun): Change to new implementation, which is
intended to be used as commands.
(treesit-major-mode-setup): Setup remap for beginning/end-of-defun
commands.
2022-12-15 17:44:07 -08:00
Yuan Fu
037407ad95
Add "function" feature to python-ts-mode (bug#59977)
* lisp/progmodes/python.el (python--treesit-settings): Add feature.
(python-ts-mode): Add feature.  And fix indentation for the
python-indent-guess-indent-offset code.
2022-12-15 17:29:44 -08:00
Randy Taylor
fee2efe1b0
Add go-ts-mode and go-mod-ts-mode (Bug#60025)
* admin/notes/tree-sitter/build-module/batch.sh:
* admin/notes/tree-sitter/build-module/build.sh: Add go-mod support.
* etc/NEWS: Mention them.
* lisp/progmodes/eglot.el (eglot-server-programs): Add them.
* lisp/progmodes/go-ts-mode.el: New major modes with
tree-sitter support.
2022-12-15 17:20:50 -08:00
Yuan Fu
e8f7ab67ad
Add basic support for hideshow in python-ts-mode (bug#60044)
* lisp/progmodes/python.el (python-base-mode): Add setup for
python-ts-mode.
2022-12-15 17:16:28 -08:00
Theodor Thornhill
cac070b23e
Add "this" keyword to java-ts-mode (bug#60086)
* lisp/progmodes/java-ts-mode.el
(java-ts-mode--font-lock-settings): Add the node to the keyword
feature.
2022-12-15 17:12:10 -08:00
Dmitry Gutov
c8d75046a2 When completing relative project file names, use relative history
* lisp/progmodes/project.el: Require 'cl-lib'.

* lisp/progmodes/project.el (project--read-file-cpd-relative):
Pre-process history entries around completing-read (bug#58447).

This includes both filtering by common-parent-directory prefix and
mapping into relative names.
2022-12-16 00:46:20 +02:00
Eli Zaretskii
3b618d0e3e Avoid segfaults due to invalid selected-window's buffer
* lisp/startup.el (initial-scratch-message): Don't use \\[...]
commands for substitute-command-keys.
* lisp/simple.el (get-scratch-buffer-create): Don't call
substitute-command-keys on initial-scratch-message, to avoid
signaling an error in rare cases.  (Bug#60096)
2022-12-15 23:39:58 +02:00
Juri Linkov
99aa00e6e3 Revert 21b387c39b with last-minute hasty changes (bug#60048).
* lisp/simple.el (completion-list-mode-map): Unbind [up] and [down].
(previous-line-completion, next-line-completion): Remove.
2022-12-15 21:27:36 +02:00
Alan Mackenzie
386d6e74d8 Replace an erroneous eq with an equal in cc-defs.el
* lisp/progmodes/cc-defs.el (c-looking-at-non-alphnumspace): Replace eq with
equal in the XEmacs branch.
2022-12-15 19:23:19 +00:00
Juri Linkov
eb06947063 * lisp/tab-bar.el ([tab-bar]): Use 'make-sparse-keymap' instead of 'ignore'.
This helps to avoid the error in 'where-is-internal' that should
not call :filter unnecessarily (bug#9923).
2022-12-15 21:10:28 +02:00
Stefan Monnier
26243f7b65 compile.el: Fix regression with nb of errors in modeline
* lisp/progmodes/compile.el (compilation-mode-line-errors): Mark it as
risky-local, like `defconst` used to do for us.
2022-12-15 13:36:14 -05:00
Juri Linkov
6e2923d80f Make tab-bar-tab-group-format-function backwards-compatible (bug#60073)
* lisp/tab-bar.el (tab-bar--format-tab-group): Add condition-case
with wrong-number-of-arguments for backwards-compatibility.
(tab-bar-tab-group-format-default): Simplify.
2022-12-15 20:03:24 +02:00
Gabriel do Nascimento Ribeiro
b211a63455 Make tab-bar-tab-group-format-function also handle current group
* lisp/tab-bar.el (tab-bar--format-tab-group): Call
'tab-bar-tab-group-format-default' to format current group tab.
(tab-bar-tab-group-format-default): Update function to also handle
current group tab (bug#60073).
2022-12-15 20:00:21 +02:00
Philip Kaludercic
367022f316 Ensure package directories for source packages from checkouts
* lisp/emacs-lisp/package-vc.el (package-vc-install-from-checkout):
Set the :dir entry, since `package-vc--unpack-1' assumes the field is
set, as is the case when invoking `package-vc--unpack'.
2022-12-15 18:31:13 +01:00
Randy Taylor
3a633bdd6d ; * etc/NEWS: Fix recent changes. 2022-12-15 19:05:43 +02:00
Michael Albinus
6aa5d16c64 * test/README (SELECTOR): Add eglot-tests.el to remote file using libraries. 2022-12-15 16:37:36 +01:00
Michael Albinus
bb27be36dd Fix bug#60060 in Tramp
* lisp/net/tramp-sh.el (tramp-sh-handle-file-local-copy):
Delete `tmpfile' in case of error.  (Bug#60060)
2022-12-15 16:37:16 +01:00
Michael Albinus
d4c2aa4f91 ; * lisp/net/tramp-crypt.el: Fix comment. 2022-12-15 16:36:38 +01:00
Manuel Giraud
8404253d17 * .gitignore: Ignore GDB history files. 2022-12-15 12:55:08 +02:00
Eli Zaretskii
12684c3a19 Mention 'tree-sitter' in user manual and NEWS
* doc/emacs/programs.texi (Program Modes): Mention tree-sitter and
the modes supported by it.
* etc/NEWS: Mention tree-sitter in the Installation Changes
section.
2022-12-15 10:47:11 +02:00
Eli Zaretskii
49d7e0cec6 ; * etc/NEWS: Rearrange entries for tree-sitter supported modes. 2022-12-15 10:25:27 +02:00
Eli Zaretskii
0ad2112a2f ; Announce 'toml-ts-mode' in NEWS. 2022-12-15 10:09:25 +02:00
Stefan Kangas
98ea7054a7 ; Auto-commit of loaddefs files. 2022-12-15 05:11:35 +01:00
Stefan Kangas
a15cd55044 ; Don't quote nil in comments 2022-12-15 02:35:00 +01:00
Stefan Kangas
da39200c4b ; Checkdoc fixes in dired-aux.el
* lisp/dired-aux.el (dired-compare-directories, dired-do-chmod)
(dired-do-chgrp, dired-do-chown, dired-do-touch)
(dired-minibuffer-default-add-shell-commands)
(dired-read-shell-command, dired-mark-prefix)
(dired-mark-postfix, dired-mark-separator, dired-kill-line)
(dired-reset-subdir-switches, dired-add-entry)
(dired-remove-file)
(dired-create-destination-dirs-on-trailing-dirsep)
(dired-maybe-insert-subdir, dired-tree-up, dired-tree-down):
Checkdoc fixes.
2022-12-15 02:35:00 +01:00
Dmitry Gutov
fd403a5c5a Fix ruby-add-log-current-method after nested class definition
* lisp/progmodes/ruby-mode.el (ruby--add-log-current-indent):
New function.
(ruby-add-log-current-method): Use it.
Check for "class" and "module" indentation to filter out the
definitions which don't include the given position.  Also try to
match "def" only once (for performance), because if the closest
one doesn't include the given position, none will.

* test/lisp/progmodes/ruby-mode-tests.el
(ruby-add-log-current-method-after-inner-class-outside-methods)
(ruby-add-log-current-method-after-inner-class-outside-methods-with-text):
New tests.
2022-12-15 03:21:44 +02:00
Theodor Thornhill
2ca06aed7b
Add indent rules to js/typescript/tsx-ts-mode (bug#60074)
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): Add in binary_expression and
jsx_fragment.
* lisp/progmodes/js.el (js--treesit-indent-rules): Add the same rules.
2022-12-14 14:39:29 -08:00
Jostein Kjønigsen
a54d5f500c
Improve fontification in csharp-ts-mode (bug#59897)
Fixes highlighting of generic methods like the one below:

instance.MethodWithTypeArguments<Type>(...);
InClassMethodWithTypeArguments<Type>(...);

* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
Add new rule.
2022-12-14 14:30:52 -08:00
Yuan Fu
3db2f560bb
Revert "Add expression for generic_name in csharp-ts-mode"
I applied the wrong commit, the next commit will be the right one,
sorry about that!

This reverts commit 647b6a8099.
2022-12-14 14:28:29 -08:00
Jostein Kjønigsen
1985762fbd
Introduce support for TOML config-format
This commit introduces support for the semi-popular TOML
config-format[1] through a new major-mode: toml-ts-mode.

I've read through the full spec[2], and from what I can see this
major-mode should provide correct syntax-highligting for every sort of
config-declaration which adheres to the specification.

Besides that it also adds support for imenu and basic tree-sitter
based navigation.

[1] https://toml.io/en/
[2] https://toml.io/en/v1.0.0
2022-12-14 14:24:09 -08:00
Arash Esbati
622838b957 Fix handling of % when searching in .tex or .dtx files
* lisp/textmodes/reftex.el (reftex-compile-variables): Consider %
when building the regexp for searching only in .dtx files.
(AUCTeX bug#59638)
2022-12-14 21:17:30 +01:00
Daniel Martín
3b226b6024
Treat C++ classes as defuns in C Tree-sitter mode (bug#60047)
* lisp/progmodes/c-ts-mode.el (c-ts-base-mode): Add "class_specifier"
as a node of type "defun".
2022-12-14 11:42:58 -08:00
Daniel Martín
480f41c7de
Add < and > to the syntax table in c++-ts-mode (bug#60049)
* lisp/progmodes/c-ts-mode.el (c++-ts-mode--syntax-table): Add a
specific syntax table for C++.  Consider "<" and ">" open/close
delimiters (C++ templates).
(c++-ts-mode): Use the new syntax table.
2022-12-14 11:42:58 -08:00
Jostein Kjønigsen
fbf0d3b796 Improve fontifications in Typescript mode
* lisp/progmodes/typescript-ts-mode.el: Improve fontification of
variables.  (Bug#59831)
2022-12-14 21:00:58 +02:00
Eli Zaretskii
f93a5180a6 Update the documentation of overlays (bug#59996)
* src/buffer.c (Foverlay_recenter, Foverlay_lists): Update the doc
strings.

* lisp/subr.el (copy-overlay): Update comment.

* doc/lispref/internals.texi (Buffer Internals): Remove buffer
fields relevant to the old implementation; add the new interval
tree field.
* doc/lispref/display.texi (Overlays, Managing Overlays): Update
text to be consistent with the new implementation of overlays.
(Managing Overlays): Remove documentation of 'overlay-recenter'.

* etc/NEWS: Mention incompatible aspects of overlay
reimplementation.
2022-12-14 20:13:47 +02:00
Eli Zaretskii
d51b66ed54 ; Improve description of scoping and let-bindings
* doc/lispref/variables.texi (Local Variables, Variable Scoping):
Explain the move to lexical-binding and elaborate on 'let*'.
Suggested by Michael Heerdegen <michael_heerdegen@web.de>.
(Bug#60027)
2022-12-14 17:46:16 +02:00
Eli Zaretskii
752f9dde63 ; Fix a typo in window.el
* lisp/window.el (switch-to-prev-buffer-skip-p): Fix typo.
Patch by Shuguang Sun <shuguang79@qq.com>.  (Bug#59985)
2022-12-14 17:08:46 +02:00
F. Jason Park
102a3e3b44 Don't send erc-sasl-user as USER command argument
* lisp/erc/erc-sasl.el (erc-sasl--send-cap-ls): Add internal switch
for sending an opening "CAP LS".  The rationale for not enabling this
by default is twofold: one, it more strongly implies that ERC supports
IRCv3 client capability negotiation, which is somewhat disingenuous;
and, two, We'd still be "faking it" by firing and forgetting, and more
balls in the air makes things less predictable.
(erc--register-connection): Possibly send a "CAP LS" before anything
depending on the value of `erc-sasl--send-cap-ls'.  Also, don't
attempt to send `erc-session-username' when it holds an SASL username
because the latter may contain protocol-defying characters.
* test/lisp/erc/resources/base/local-modules/fourth.eld: change user
parameter of "USER" command to reflect nick when `erc-sasl-user' is
set to `:user'.  (Bug#59976.)
2022-12-14 06:40:55 -08:00
F. Jason Park
f0c9088878 Set erc-network to a "given" ID instead of failing
* lisp/erc/erc-networks.el (erc-networks--determine): Return the
so-called "given" ID from a non-nil `:id' keyword arg passed to `erc'
or `erc-tls'.
(erc-networks--allow-unknown-network): Add internal variable to
allow IRC session to continue despite the network being unknown.
(erc-networks--set-name): Tell the user about falling back to a given
ID when the network can't be determined.  When that's so, end the
session by destroying the connection unless
`erc-networks--allow-unknown-network' is enabled.  (Bug#59976.)
(erc-networks--ensure-announced): Include the fallback announced
server name in the error message.
* test/lisp/erc/erc-networks-tests.el (erc-networks--set-name): Add
dummy server process and don't expect an error to be signaled.
* test/lisp/erc/erc-scenarios-misc.el
(erc-scenarios-networks-announced-missing): Don't expect an error to
be signaled.
* test/lisp/erc/resources/networks/announced-missing/foonet.eld:
Remove "mode" match pattern.
2022-12-14 06:40:55 -08:00
F. Jason Park
09c0c6b2ba Limit casemapping to appropriate ranges in ERC
* lisp/erc/erc-common.el (erc-downcase): Use case table for
`erc-downcase' so that case conversions are limited to the ASCII
interval.
* lisp/erc/erc.el (erc-casemapping--rfc1459-strict,
erc--casemapping-rfc1459): Make these case tables instead of
translation tables.  The functions in case-table.el modify the
standard syntax table, but that doesn't seem to make sense here,
right?
* test/lisp/erc/erc-tests.el (erc-downcase): Add cases showing
mappings outside of the ASCII range.  (Bug#59976.)
2022-12-14 06:40:55 -08:00
F. Jason Park
44b04c0ac1 Actually accept non-symbols as IDs in erc-open
* lisp/erc/erc.el (erc-generate-new-buffer-name): Despite what it says
in the documentation, only symbols were being accepted as valid `:id'
entry-point arguments.  This uses the interned `princ' representation
of the argument instead.
* test/lisp/erc/erc-scenarios-base-netid-samenet.el
(erc-scenarios-common--base-network-id-same-network): Randomly specify
a string for the ID param instead of a non-nil symbol when opening a
new connection.
* test/lisp/erc/resources/erc-scenarios-common.el
(erc-scenarios-common-assert-initial-buf-name): Adjust helper to allow
for non-symbol IDs.  (Bug#59976.)
2022-12-14 06:40:55 -08:00
F. Jason Park
75f26646d4 ; Be nicer when updating browse-url var in erc-compat
* lisp/erc/erc-compat.el: Be more cautious about modifying
`browse-url-default-handlers' when loading erc-compat on Emacs 28.  A
user may have already added an entry for irc:// URLs before loading
`erc-compat'.
2022-12-14 06:40:55 -08:00