1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-15 19:31:29 -07:00
Commit graph

10788 commits

Author SHA1 Message Date
João Távora
ea7251ad6d Eglot: go back to setting eldoc-documentation-strategy again
This commits reverts part of

   commit e83c78b8c7
   Author: João Távora <joaotavora@gmail.com>
   Date:   Mon Feb 20 22:43:50 2023 +0000

       Eglot: respect user's Eldoc configuration by default

In that commit, I did what many longstanding issues and users were
suggesting and removed Eglot's override of two Eldoc user
configuration varibles.

I verified that Eglot's behaviour would stay mostly unaltered but my
tests were very incomplete.  In short there is no way that Eglot can
work acceptably with the default setting of
'eldoc-documentation-strategy', which is
'eldoc-documentation-default'.  So it must be changed, either globally
or locally in Eglot's minor mode.

This is true for any situation where both synchronous and asynchronous
documentation sources are present.  In Eglot's case there are two
asynchronous sources which have more importance than the synchronous
source.  So any other strategy except the
'eldoc-documentation-default' makes sense.

* lisp/progmodes/eglot.el (eglot--managed-mode): Set
eldoc-documentation-strategy to eldoc-documentation-compose.
2023-02-22 18:25:11 +00:00
Augusto Stoffel
d816429e2f * lisp/progmodes/python.el (python--import-sources): Fix regexp (bug#61648) 2023-02-22 15:31:02 +02:00
João Távora
e83c78b8c7 Eglot: respect user's Eldoc configuration by default
This change addresses the problems reported in many Elglot reports
dating back to early 2021 at least:

  https://github.com/joaotavora/eglot/issues/648
  https://github.com/joaotavora/eglot/issues/894
  https://github.com/joaotavora/eglot/issues/920
  https://github.com/joaotavora/eglot/issues/1031
  https://github.com/joaotavora/eglot/issues/1171

In one form or another, the reports point out that the multiple pieces
of information about the "thing at point" made available by the LSP
server are not all being considered by the ElDoc system.

The reason for this is Eglot setting/trampling the variables
'eldoc-documentation-strategy' and 'eldoc-documentation-functions' in
its minor more entry function.

The reason it did that is historical and is partially described in the
issues above.  But, evidently, it never made much sense, because so
many people want to override it, which requires setting
'eldoc-documentation-strategy' to the non-default value
'eldoc-documentation-compose'.

The problem was made worse by the fact that setting it as usual in
either the Customize menu or their init file didn't work, requiring a
fairly complex Elisp snippet.  That is now solved as of this commit.

If the user does not do any setting, then Eglot works basically the
same as before (i.e. shows only one piece of information).

It is arguable that the default value for
'eldoc-documentation-strategy' should change globally to
'eldoc-documentation-compose', but that has other subtle implications
and is not part of this commit.

* lisp/progmodes/eglot.el (eglot--managed-mode): Don't set Eldoc
variables greedily.
2023-02-20 22:44:30 +00:00
Eli Zaretskii
88ee92e61d ; * lisp/progmodes/rust-ts-mode.el (treesit-node-end): Declare. 2023-02-20 19:30:02 +02:00
Daniel Martín
d7010d64b2 Add declaration_list to c-ts-common-indent-type-regexp-alist
* lisp/progmodes/c-ts-mode.el (c-ts-base-mode): Consider a
"declaration_list" a block. (Bug#61635)
* test/lisp/progmodes/c-ts-mode-resources/indent.erts (Code): Add a
test case.
2023-02-20 15:07:56 +01:00
Theodor Thornhill
19480aa30e Typescript-ts-mode: Add switch case handling
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): New rules.
2023-02-20 13:41:50 +01:00
Theodor Thornhill
dfc850ca02 Fix object initializer for csharp-mode (bug#61541)
* lisp/progmodes/csharp-mode.el (csharp-guess-basic-syntax): Make sure
we check the openers as well as closers.
2023-02-20 13:41:30 +01:00
Theodor Thornhill
2e6093b425 Adjust jsx indentation
We can use the fact that 'treesit-indent-1' uses 'treesit-node-on'
when on a whitespace to set the actual current node as parent.  Now we
can correctly indent the 'jsx_text' nodes.  We also add some more
electric-indent-chars so that auto-indenting of jsx behaves a little
more fluently.

* lisp/progmodes/js.el (js--treesit-indent-rules): Add new rules.
(js-ts-mode): Add more indent-chars.
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): Add new rules.
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-base-mode): Add more indent-chars and layout rules.
2023-02-19 20:48:06 +01:00
Theodor Thornhill
c544df4fa3 Cleanup preproc indent for c-ts-mode (bug#61558)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Make sure we
indent to great-grand-parent if inside an #ifdef...#endif block.  If
grand-parent is root node, then don't indent one step.
(c-ts-mode--preproc-offset): New helper anchor function to calculate
indent offset.
2023-02-19 20:47:05 +01:00
Theodor Thornhill
d397f3d508 Add comment style toggle for c-ts-mode (bug#61550)
* lisp/progmodes/c-ts-mode.el (c-ts-mode-toggle-comment-style): New
command.
(c-ts-base-mode-map): Add binding.
(c-ts-mode-set-modeline): New function.
(c-ts-mode): Set modeline.
(c++-ts-mode): Set modeline.
2023-02-19 20:47:05 +01:00
Dmitry Gutov
1ac05eac74 rust-ts-mode--font-lock-settings: Avoid the explicit 'default' face
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--fontify-scope)
(rust-ts-mode--fontify-tail): New functions.
(rust-ts-mode--font-lock-settings): Use them instead of a lot of
more complex queries (bug#61302).  Thus avoid having to create
block fontification by other features using the 'default' face.
Replace the catch-all query for 'variable' with an enumeration of
possible parent nodes.
2023-02-19 19:18:19 +02:00
Dmitry Gutov
b5bea14ca1 * lisp/progmodes/xref.el: Bump the version. 2023-02-19 19:01:33 +02:00
Dmitry Gutov
a5b5f73d88 xref--insert-xrefs: Use 'shadow' for the line number colon
* lisp/progmodes/xref.el (xref--insert-xrefs): Use face 'shadow' for
the line number colon instead of continuing it face (bug#61340).

(cherry picked from commit d6d25a3c22)
2023-02-19 19:01:33 +02:00
Juri Linkov
6b90877359 * lisp/progmodes/xref.el (xref--insert-xrefs): Remove extra space (bug#61340).
(cherry picked from commit 643a11c6e5)
2023-02-19 19:01:33 +02:00
Mattias Engdegård
25c65e6b58 Backport: Fix xref-clear-marker-stack refactoring mistake
* lisp/progmodes/xref.el (xref-clear-marker-stack):
Clear the history correctly.  Changing a lexical variable has no effect.

(cherry picked from commit dfdc0f5fb7)
2023-02-19 19:01:33 +02:00
Stefan Kangas
9a6f22fd0b Merge from origin/emacs-28
f5a99945b6 ; Update ChangeLog for Emacs 28.3
f7bd5ac552 Update HISTORY for Emacs 28.3

# Conflicts:
#	etc/NEWS
2023-02-19 17:37:59 +01:00
Theodor Thornhill
893ddd5903 Eglot: improve treatment of completion items without :sortText (bug#61532)
Previously, defaulting to the empty string put candidates without
:sortText to the top of the list.  since string-lessp is safe with nil
arguments, this makes them sort to the end instead.

* lisp/progmodes/eglot.el (eglot-completion-at-point): Simplify.
2023-02-19 11:12:48 +00:00
Dmitry Gutov
d560dc5044 (rust-ts-mode--font-lock-settings): Highlight closure parameters
* lisp/progmodes/rust-ts-mode.el
(rust-ts-mode--font-lock-settings): Highlight closure parameters.
2023-02-18 23:53:11 +02:00
kobarity
5190ea6259 Fix point moving when calling python-shell-send-region
* lisp/progmodes/python.el (python-shell-buffer-substring): Add
`save-excursion' to prevent the point from moving.
* test/lisp/progmodes/python-tests.el (python-tests-should-not-move):
New helper function to assert that point does not move while calling a
function.
(python-shell-buffer-substring-*): Use
`python-tests-should-not-move'. (Bug#61463)
2023-02-18 18:43:11 +02:00
Omar Polo
6c0d821017 (project-try-vc): Remove unused defvar/require
* lisp/progmodes/project.el (project-try-vc):
Remove unused defvar/require (bug#61577).
2023-02-18 15:11:13 +02:00
Dmitry Gutov
a40b1745d4 (project-vc-backend-markers-alist): Add entry for vc-got
* lisp/progmodes/project.el (project-vc-backend-markers-alist):
Add entry for vc-got (bug#61577).  Bump the version.
2023-02-18 00:55:03 +02:00
Dmitry Gutov
18e96ed7c8 project.el: Extract backend->marker association for a defvar
* lisp/progmodes/project.el (project-vc-backend-markers-alist):
Extract from 'project-try-vc'.
(project-try-vc): Update accordingly (bug#61577).
2023-02-18 00:54:39 +02:00
Xi Lu
22fb5ff512 Fix ruby-mode.el local command injection vulnerability (bug#60268)
* lisp/progmodes/ruby-mode.el
(ruby-find-library-file): Fix local command injection vulnerability.

(cherry picked from commit 9a3b08061f)
2023-02-17 11:20:10 +01:00
Andrea Corallo
d6e4f24372 Merge 'emacs-29' into 'feature/inhibit-native-comp-cleanup' 2023-02-17 11:14:38 +01:00
Theodor Thornhill
f1f571e72a Add electric indent for preproc directives
It looks like there are few if no other cases where we get this
particular error in the AST than with insertion of '#'.

Consider:

```
int
main()
{
  |
}
```

If we only add '#' the AST yields (ERROR (ERROR)), which we can
exploit to hook onto electric indent.  The end result should be the
hashtag anchored to column 0.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): New rule.
(c-ts-base-mode): Add # to electric-indent-chars.
2023-02-16 19:52:06 +01:00
Theodor Thornhill
3279530993 Move block closer above declaration_list rule (bug#61531)
* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Move rule
above the previous rule.
2023-02-15 19:23:02 +01:00
Eli Zaretskii
b18754bb17 Minor improvements in c-ts-mode and docs
* lisp/progmodes/c-ts-mode.el (c-ts-base-mode-map): Add a binding
for comment-region.

* doc/emacs/programs.texi (C Indent): Mention "C-u TAB".
2023-02-15 20:01:40 +02:00
Theodor Thornhill
3c6b726a7b Add super node as a keyword
* lisp/progmodes/java-ts-mode.el
(java-ts-mode--font-lock-settings): Add new node.
2023-02-15 18:55:17 +01:00
Stefan Kangas
43c62a4732 ; Fix typo 2023-02-15 15:22:09 +01:00
~kby
7678b7e46f Eglot: check server capability before sending didSave (bug#61478)
* lisp/progmodes/eglot.el (eglot--signal-textDocument/didSave): check
server capability.

Copyright-paperwork-exempt: Yes
2023-02-14 23:32:36 +00:00
Randy Taylor
a3a1ef7bd5 Fix rust-ts-mode type and module highlighting (Bug#61302)
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode--font-lock-settings):
Specify import queries to avoid clashing with scoped identifiers in
the code.  Highlight attributes with font-lock-preprocessor-face.
2023-02-14 23:54:58 +02:00
Dmitry Gutov
477aa047ee rust-ts-mode: Highlight variable reassignments
* lisp/progmodes/rust-ts-mode.el (rust-ts-mode):
New treesit font-lock feature: 'assignment' (bug#61302).
(rust-ts-mode--fontify-pattern): Remove the node lookup step.
(rust-ts-mode--font-lock-settings): Update variable declaration
queries to match the 'pattern' child node right away.  Add
highlights for 'assignment.
2023-02-14 23:54:58 +02:00
Theodor Thornhill
accd88d554 Don't indent template_string contents (bug#61503)
* lisp/progmodes/js.el (js--treesit-indent-rules): Add new rule.
* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--indent-rules): Add new rule.
2023-02-14 20:53:55 +01:00
Jostein Kjønigsen
d97a383996 csharp-ts-mode: fontify compiler directives (bug#61512)
lisp/progmodes/csharp-mode.el: Add tree-sitter-queries for known C#
compiler-directives.
2023-02-14 20:46:42 +01:00
Andrea Corallo
8d8464bd5a Rename native-comp-deferred-compilation into native-comp-jit-compilation
* src/comp.c (maybe_defer_native_compilation, syms_of_comp):
	Rename native-comp-deferred-compilation into
	native-comp-jit-compilation.

	* lisp/subr.el (native-comp-deferred-compilation): Mark
	native-comp-deferred-compilation as obsolete.

	* lisp/startup.el (native-comp-deferred-compilation)
	(normal-top-level): Rename native-comp-deferred-compilation into
	native-comp-jit-compilation.

	* lisp/progmodes/elisp-mode.el
	(emacs-lisp-native-compile-and-load): Likewise.

	* lisp/emacs-lisp/generate-lisp-file.el
	(generate-lisp-file-trailer): Likewise.
2023-02-13 17:04:22 +01:00
Mattias Engdegård
10f2aedea9 ; * lisp/progmodes/c-ts-mode.el (c-ts-base-mode): delete duplicate 2023-02-13 15:07:57 +01:00
Andrea Corallo
c0681cd347 Revert "Add new variable 'inhibit-native-compilation'"
This reverts commit 5fec9182db.
2023-02-13 10:19:31 +01:00
Andrea Corallo
3969a34fa1 Revert "Rename to inhibit-automatic-native-compilation"
This reverts commit f97993ee66.
2023-02-13 10:15:33 +01:00
Yuan Fu
f2114e8d89
Fix indentation for closing bracket in c-ts-mode (bug#61398)
* lisp/progmodes/c-ts-mode.el:
(c-ts-mode--indent-styles): Move the rule earlier.
(c-ts-base-mode): Add move block type.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New tests.
2023-02-12 19:49:47 -08:00
Theodor Thornhill
eb2b0931cf Add lambda_expression to c-ts-common-indent-type-regexp-alist
* lisp/progmodes/java-ts-mode.el (java-ts-mode): Tweak regexp.
2023-02-12 18:57:40 +01:00
Tassilo Horn
4f053afe8e bug-reference: prevent match-data clobbering (bug#61395)
* lisp/progmodes/bug-reference.el (bug-reference-fontify): Wrap call
to syntax-ppss in save-match-data since it can clobber our
match-data (bug#61395).
2023-02-10 19:22:56 +01:00
Eli Zaretskii
b04cce02ff Fix Scala entry in Eglot's DB of LSP servers
* lisp/progmodes/eglot.el (eglot-server-programs): Support Scala
LSP named "metals", in addition to "metals-emacs".  (Bug#61312)
2023-02-09 12:17:18 +02:00
Dmitry Gutov
973c1d24c6 ruby-ts-mode: Also don't reindent 'identifier' when inside ERROR
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
Also don't reindent 'identifier' when inside ERROR.
2023-02-09 04:48:25 +02:00
Dmitry Gutov
a5651c0c40 ruby-ts-mode: Fix indentation inside empty if/unless/case/def
* lisp/progmodes/ruby-ts-mode.el (ruby-ts--indent-rules):
Add new rule.

* test/lisp/progmodes/ruby-ts-mode-tests.el
(ruby-ts-indent-empty-if-else): New test.
2023-02-09 04:16:15 +02:00
Yuan Fu
746748f5c2
Make java-ts-mode use the c-ts-common-indent-type-regexp-alist
* lisp/progmodes/java-ts-mode.el:
(java-ts-mode): Setup c-ts-common-indent-type-regexp-alist.
2023-02-06 18:48:04 -08:00
Yuan Fu
87d39a30b1
Fix c-ts-mode indentation
Sign, ok, there's another edge case: else if statements.  Because
"else if" is usually implemented as just another if statement nested
in the else branch, this creates additional levels that indentation
needs to ignore.

I converted c-ts-common-indent-block-type-regexp +
c-ts-common-indent-bracketless-type-regexp into a new, more flexible
variable, c-ts-common-indent-type-regexp-alist, to avoid adding yet
more variables in order to recognize else and if statements.

* lisp/progmodes/c-ts-common.el:
(c-ts-common-indent-type-regexp-alist): New variable.
(c-ts-common-indent-block-type-regexp)
(c-ts-common-indent-bracketless-type-regexp): Remove variables.
(c-ts-common--node-is): New function.
(c-ts-common-statement-offset): Use the new variable, and add the
"else if" special case.  Also merge the code of
c-ts-mode--fix-bracketless-indent, because now the code is much more
succinct.
(c-ts-mode--fix-bracketless-indent): Merge into
c-ts-common-statement-offset.

* lisp/progmodes/c-ts-mode.el:
(c-ts-base-mode): Setup c-ts-common-indent-type-regexp-alist.

* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
2023-02-06 18:29:38 -08:00
Yuan Fu
7cb92b5398
Fix c-ts-mode indentation
Turns out I shouldn't have removed the explicit rules.  Anyway, now it
indents properly.

* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): Add rules.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: Add tests
2023-02-06 18:28:40 -08:00
Yuan Fu
d68ff6016d
Fix c-ts-mode indentation (bug#61291)
Fix indentation for the semicolon in

while (str_a[i++] == str_b[j++])
  ;

* lisp/progmodes/c-ts-mode.el (c-ts-mode--indent-styles): New rule.
* test/lisp/progmodes/c-ts-mode-resources/indent.erts: New test.
2023-02-06 18:28:39 -08:00
Dmitry Gutov
2ac8c4bbd6 (eglot-completion-at-point): Return correct values in :company-kind
* lisp/progmodes/eglot.el (eglot-completion-at-point): Return the
correct values in :company-kind for "EnumMember" and "TypeParameter".
The convention is to use kebab case rather than plain downcasing.
Reported in https://github.com/company-mode/company-mode/issues/1370.
2023-02-07 00:28:25 +02:00
Mattias Engdegård
321cbd9a60 Tighten and simplify typescript compilation-mode regexps (bug#61104)
* lisp/progmodes/compile.el (compilation-error-regexp-alist-alist):
Tighten regexps and simplify.  Translate to rx.
* etc/compilation.txt: Add examples.

In collaboration with Jostein Kjønigsen.
2023-02-06 17:47:00 +01:00