Commit graph

88880 commits

Author SHA1 Message Date
João Távora
9a6a8d6657 Use new external-completion.el in Eglot
This refactor simplifies Eglot's source code.

* lisp/progmodes/eglot.el:
(Package-Requires): Require external-completion.
(external-completion): Require it.
(xref-backend-identifier-completion-table): Use external-completion-table.
(completion-category-overrides): No longer set it.
("Backend Completion"): Delete section.
2022-12-07 11:03:16 +00:00
João Távora
04f9c88b78 Don't override completion-category-defaults in fido-mode
To more closely emulate ido-mode, fido-mode and fido-vertical-mode
strongly lean to the 'flex completion style.  But overriding
completion-category-defaults is not the correct way to do it, since
sometimes even the 'flex style isn't possible.

* lisp/icomplete.el (icomplete--fido-mode-setup): Don't set
completion-category-defaults here.
2022-12-07 11:03:15 +00:00
João Távora
23d5968eae Add 'external' completion style for completions from external tools
This completion style has been in use in Eglot and other third-party
extensions for a long time.  It's meant for libraries that interface
with an external tool which provides completions, such as a shell
utility, an inferior process, an http server.

The new file lisp/external-completion.el provides a helper function,
external-completion-table which is given an interfacing function to
the external tool and returns a "programmed completion" table that is
bound to the 'external' completion style.  That table can then be used
with completing-read or any other facility expecting a completion
table.

When the 'external' is in use, the usual styles configured by the user
or other in 'completion-styles' are completely overriden.  This
relatively minor inconvenience is the price to pay for responsive
completion where the full set of completion candidates doesn't need to
be transfered into Emacs's address space.

* lisp/external-completion.el: New file.
2022-12-07 11:00:38 +00:00
Stefan Kangas
82849f9a20 Merge from origin/emacs-29
9ae1c2762d EUDC: Outline deprecation plans in NEWS
6acf95cbea Fix admin/notes/tree-sitter/build-module/build.sh (bug#59...
cc63c08697 * doc/misc/eww.texi (Overview): Improve introduction.
b8790e320e Consistent fontification of using-directives in csharp-ts...
5257b9cda4 ; Rename c-ts-fontify-error to c-ts-mode--fontify-error
c6b454df33 ; Improve docstring of c-ts-mode--fontify-variable
6187d001f2 Fontify some keywords in type face in c-ts-mode
b3847c0208 ; Minor cleanup in treesit.c
40af27859e ; * lib-src/etags.c (escape_shell_arg_string): Minor doc ...
43b7e7efbf Fix etags builds on non-Windows non-MS-DOS machines
7e6d1d1c47 ; Fix last change in etags.c.
01a4035c86 Fix etags local command injection vulnerability
ed4734405d Avoid crashes in a build --without-modules
70a2eb4a0b Fix 'add-display-text-property' when OBJECT is non-nil
d58d1dd48a Do not run slow tests on EMBA
9b9b39a2d8 Lisp reader undefined behaviour excision

# Conflicts:
#	etc/NEWS
2022-12-07 06:30:51 +01:00
Juanma Barranquero
e0a057c16b * lisp/bs.el: Improve compatibility with previous version
* lisp/bs.el (bs-default-action-list):
Remove display-buffer-reuse-window.
Ask for a minimum height window, not maximum.
(bs-show-in-buffer): Create window here, and afterwards make
sure it's the only window showing the *bs-selection* buffer.
(bs--show-with-configuration): Move window creation to
bs-show-in-buffer.
2022-12-07 02:27:06 +01:00
Juanma Barranquero
de2491cccc ; * lisp/serve.el: Silence unused arg warning in previous commit 2022-12-07 02:08:28 +01:00
Jim Porter
bcf4d96db3 ; Remove dead code from 'server-stop-automatically--handle-delete-frame'
* lisp/server.el (server-stop-automatically--handle-delete-frame):
Since 'this-command' is never 'save-buffers-kill-terminal' in this
function, we can remove the second 'if' block and it's then-form,
leaving only the else-form.  Additionally, remove the 'delete-frame'
call; it's not necessary, since we just killed Emacs on the prior
line.
2022-12-06 14:11:10 -08:00
Jostein Kjønigsen
b8790e320e
Consistent fontification of using-directives in csharp-ts-mode
* lisp/progmodes/csharp-mode.el (csharp-ts-mode--font-lock-settings):
New rules.
2022-12-06 13:43:58 -08:00
Yuan Fu
5257b9cda4
; Rename c-ts-fontify-error to c-ts-mode--fontify-error
* lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings)
(c-ts-fontify-error): Rename.
2022-12-06 13:43:58 -08:00
Yuan Fu
c6b454df33
; Improve docstring of c-ts-mode--fontify-variable
* lisp/progmodes/c-ts-mode.el (c-ts-mode--fontify-variable): Improve
docstring.
2022-12-06 13:43:58 -08:00
Yuan Fu
6187d001f2
Fontify some keywords in type face in c-ts-mode
* lisp/progmodes/c-ts-mode.el (c-ts-mode--keywords): Remove some keywords.
(c-ts-mode--type-keywords): New variables.
(c-ts-mode--font-lock-settings): New rule.
2022-12-06 13:43:58 -08:00
Juanma Barranquero
80df980e41 * lisp/bs.el: Adapt to modern display-buffer-alist window setup
* lisp/bs.el (bs--window-config-coming-from): Delete.
(bs-default-action-list): New user customizable option.
(bs--restore-window-config): Delete.
(bs-kill, bs-select, bs-select-other-window)
(bs-select-other-frame): Use `quit-window' instead.
(bs--show-with-configuration): Use `pop-to-buffer' to display
the "*buffer-selection*" buffer.
2022-12-06 13:46:51 +01:00
Eli Zaretskii
70a2eb4a0b Fix 'add-display-text-property' when OBJECT is non-nil
* lisp/emacs-lisp/subr-x.el (add-display-text-property): Fix the
case where OBJECT is not nil.  (Bug#59857)

* test/lisp/emacs-lisp/subr-x-tests.el
(subr-x-test-add-display-text-property): Add test for this case.
2022-12-06 14:41:36 +02:00
Stefan Kangas
ccf3705892 Merge from origin/emacs-29
717f847728 ; Fix typo in js--treesit-imenu
c26fe45cb8 Fix treesit-query-capture
318bf42b41 Improve fontification of typescript-ts-mode (bug#59831)
64271bbb7d Add back pair feature in json-ts-mode fontification (bug#...
16b9488842 Fix mouse clicks on a non-selected frame
ca0da3b83d ; Clarify description of display on the margins
2022-12-06 06:30:29 +01:00
Randy Taylor
717f847728 ; Fix typo in js--treesit-imenu
* lisp/progmodes/js.el (js--treesit-imenu): Fix a typo.  (Bug#59849)
2022-12-06 05:27:44 +01:00
Yuan Fu
c26fe45cb8
Fix treesit-query-capture
Before this change Ftreesit_query_capture doesn't convert character
position to byte position for BEG and END parameters.  I observed
fontification issue in css files but couldn't figure out why, now I
know :-)

I decide to keep treesit--font-lock-query-expand-range, since it might
provide a escape hatch for problems we discover in the future, and it
should be very cheap so no downside of keeping it.

* lisp/textmodes/css-mode.el (css-ts-mode): Stop setting
treesit--font-lock-query-expand-range.
* lisp/treesit.el (treesit--font-lock-query-expand-range): Update
docstring.
* src/treesit.c (Ftreesit_query_capture): Convert BEG and END to byte
position.  Also added parentheses wround "beg_byte - visible_beg" in
the call to ts_query_cursor_set_byte_range (i.e., style change).
2022-12-05 19:56:47 -08:00
Jostein Kjønigsen
318bf42b41
Improve fontification of typescript-ts-mode (bug#59831)
- Highlight property and field definitions in class declaration.
- Highlight property-keys in object initializaters.
- Highlight variable-names in function/method return-statements.

* lisp/progmodes/typescript-ts-mode.el
(typescript-ts-mode--font-lock-settings): Add fontification rules.
2022-12-05 12:27:25 -08:00
Theodor Thornhill
64271bbb7d
Add back pair feature in json-ts-mode fontification (bug#59833)
* lisp/progmodes/json-ts-mode.el (json-ts-mode--font-lock-settings):
Add back in removed pair feature.  Also alphabetize features.
(json-ts-mode): Use the new feature.
2022-12-05 12:21:31 -08:00
Eli Zaretskii
16b9488842 Fix mouse clicks on a non-selected frame
* lisp/mouse-drag.el (mouse-drag-drag): Skip switch-frame events
while tracking mouse.  (Bug#59785)
2022-12-05 21:55:25 +02:00
Stefan Kangas
4fa37dc426 Merge from origin/emacs-29
ec00d292ec Improve treesit-fontify-with-override
4bcdb1cc65 Make killing a non-last client work the same no matter th...
a27f61f6f4 Use the function 'window-system' on the tab-bar/tab-line ...
432b9655ae Restore font-lock-type-face for lisp mode &symbols
2022-12-05 06:30:21 +01:00
Stefan Kangas
9d5ec880b0 Merge from origin/emacs-29
3768b10077 ; * lisp/pcomplete.el (pcomplete-allow-modifications): Fi...
84214578f5 Fix markup in ERC manual
2022-12-05 06:30:21 +01:00
Sean Whitton
5be502a697 Improve passing user switches to Git log commands (bug#59414)
* lisp/vc/vc-git.el (vc-git-log-switches): Revise docstring.
(vc-git-shortlog-switches): New defcustom.
(vc-git-print-log): Use vc-git-log-switches or
vc-git-shortlog-switches depending on whether printing a shortlog.
(vc-git-log-outgoing, vc-git-log-incoming): Use
vc-git-shortlog-switches.
(vc-git-log-search, vc-git-expanded-log-entry): Use
vc-git-log-switches.
* etc/NEWS: Document the new defcustom.
2022-12-04 22:02:46 -07:00
Yuan Fu
ec00d292ec
Improve treesit-fontify-with-override
This also fixes fontification problem with c-ts-mode--fontify-defun.

Now treesit-fontify-with-override clips the fontification region for
the user, so no need for (max start node-start) shenanigans anymore.
More importantly it doesn't fontify unless the region between
node-start and node-end intersects with the region between start and
end, which fixes the problem with c-ts-mode--fontify-defun.

* lisp/treesit.el (treesit-fontify-with-override): Add optional
parameter BOUND-START and BOUND-END.  Wrap the function body in a
when-form.
* lisp/progmodes/c-ts-mode.el (c-ts-mode--fontify-declarator)
(c-ts-mode--fontify-variable)
(c-ts-mode--fontify-defun)
(c-ts-fontify-error)
* lisp/progmodes/js.el (js--fontify-template-string)
* lisp/progmodes/python.el (python--treesit-fontify-string): Use the
new signature.
2022-12-04 20:03:28 -08:00
Jim Porter
4bcdb1cc65 Make killing a non-last client work the same no matter the auto-stop setting
Previously, if 'server-stop-automatically' was configured for
'kill-terminal' or 'delete-frame', killing a client via
'save-buffers-kill-terminal' wouldn't prompt about the saving files in
the client's buffer list (as it does when not using those settings).
This change ensures that those settings only apply when killing the
last client, as described in the manual (bug#51993).

* lisp/server.el (server-save-buffers-kill-terminal): Handle
'server-stop-automatically' behavior in this function, rather than
calling 'server-stop-automatically--handle-delete-frame'.
2022-12-04 14:14:09 -08:00
Juri Linkov
a27f61f6f4 Use the function 'window-system' on the tab-bar/tab-line (bug#59620)
* lisp/tab-bar.el (tab-bar-separator)
(tab-bar-format-align-right, tab-bar-auto-width):
* lisp/tab-line.el (tab-line-format-template): Replace the variable
'window-system' with the function call '(window-system)'.
2022-12-04 21:30:34 +02:00
Tom Gillespie
432b9655ae Restore font-lock-type-face for lisp mode &symbols
* lisp/emacs-lisp/lisp-mode.el (lisp-cl-font-lock-keywords-2)
(lisp-el-font-lock-keywords-2): Restore use of type face instead of
builtin face for &symbol keywords.  This fixes what appears to be
a copy paste error that changed the face for common lisp and emacs
lisp &symbol style keywords that was introduced in commit
a498e5f83 by restoring the type face to font-lock-type-face as
consistent with the comments.
2022-12-04 19:50:45 +02:00
Eli Zaretskii
3768b10077 ; * lisp/pcomplete.el (pcomplete-allow-modifications): Fix a typo. 2022-12-04 14:42:07 +02:00
Stefan Kangas
be67cc276a Merge from origin/emacs-29
96af584af6 Fix comment-start-skip in tree-sitter modes (bug#59690)
520a4e12f8 ; * lisp/treesit.el (treesit-end-of-defun): Guard against...
2c4d92d30f ; * lisp/subr.el (posn-col-row): Revert inadvertent change.
6fb9a03cbd ; Remove debugging leftover message
c5ba47c889 Speed up Unicode normalisation tests by a factor of 5
afa4fcb95b Fix "C-h k" when clicking on another frame
f6e2f30f39 ; Fix typos
bd58dcedfb Fix and expand tests broken by commit 2772ebe366 of 2022-...
a0dd9fdebe ; Add cross-reference to string-equal docstring
11c3c54d8a Fix handling of relative directories in "--init-directory...
401f76cc3d Make sure 'user-emacs-directory' ends in a slash
2022-12-04 06:31:24 +01:00
Stefan Kangas
395f9d83f2 Merge from origin/emacs-29
17d40c163e vc-git-print-log: Don't assume vc-git-log-switches is a list
2022-12-04 06:31:24 +01:00
Yuan Fu
96af584af6
Fix comment-start-skip in tree-sitter modes (bug#59690)
* lisp/progmodes/c-ts-mode.el (c-ts-mode)
(c++-ts-mode)
* lisp/progmodes/csharp-mode.el (csharp-ts-mode)
* lisp/progmodes/java-ts-mode.el (java-ts-mode)
* lisp/progmodes/js.el (js-ts-mode)
* lisp/progmodes/typescript-ts-mode.el (tsx-ts-mode): Remove the group
from the regexp.
2022-12-03 14:49:38 -08:00
Yuan Fu
520a4e12f8
; * lisp/treesit.el (treesit-end-of-defun): Guard against nil value. 2022-12-03 14:49:37 -08:00
Eli Zaretskii
2c4d92d30f ; * lisp/subr.el (posn-col-row): Revert inadvertent change. 2022-12-03 22:09:16 +02:00
Eli Zaretskii
6fb9a03cbd ; Remove debugging leftover message
* lisp/emacs-lisp/comp.el (comp--native-compile): Remove
unnecessary call to 'message'.  (Bug#59766)
2022-12-03 22:06:34 +02:00
Eli Zaretskii
afa4fcb95b Fix "C-h k" when clicking on another frame
* lisp/help.el (help--analyze-key): Don't barf if the key sequence
includes a switch-frame event.  (Bug#59785)
2022-12-03 21:43:36 +02:00
Stefan Kangas
f6e2f30f39 ; Fix typos 2022-12-03 15:39:43 +01:00
Stefan Kangas
a0dd9fdebe ; Add cross-reference to string-equal docstring
* lisp/subr.el (string-equal-ignore-case):
* src/fns.c (Fstring_equal): Doc fix; add cross-references.
2022-12-03 11:32:23 +01:00
Eli Zaretskii
11c3c54d8a Fix handling of relative directories in "--init-directory=DIR"
* lisp/startup.el (command-line): Interpret non-absolute file
names in '--init-directory' relative to the directory from
which Emacs is started.  (Bug#59795)
2022-12-03 12:21:00 +02:00
Eli Zaretskii
401f76cc3d Make sure 'user-emacs-directory' ends in a slash
* lisp/startup.el (command-line): Make sure 'user-emacs-directory'
has the form of a directory.
2022-12-03 12:03:13 +02:00
Eli Zaretskii
641ef36403 Fix gud-minor-mode-menu
* lisp/emacs-lisp/easy-mmode.el (define-minor-mode)
(easy-mmode-define-keymap): Don't declare obsolete, since we are
still using it in gud.el.  (Bug#59769)  (Bug#59605)
Do not merge to master.
2022-12-03 11:32:00 +02:00
Eli Zaretskii
3623d5c195 Revert "Make easy-mmode-defmap obsolete and adjust only caller"
This reverts commit 8bb5c1bfec.
That commit lost too many useful features in the GUD menus
and caused several bugs, the last of them bug#59769.

Do not merge to master.
2022-12-03 11:16:41 +02:00
Sean Whitton
17d40c163e vc-git-print-log: Don't assume vc-git-log-switches is a list
* lisp/vc/vc-git.el (vc-git-print-log): Call ensure-list on
vc-git-log-switches to handle the case where it's a singular string.
2022-12-02 23:58:30 -07:00
Stefan Kangas
dd7a7633be Merge from origin/emacs-29
1e36ad9458 ; server-tests: remove CI debugging
54633fcd76 ; * lisp/subr.el (string-equal-ignore-case): Doc fix (bug#...
8413e95138 ; server-test CI debugging
4b3eb928fe Fix server-tests run noninteractively (bug#59742)
1b567f5a67 Use file-name-nondirectory to determine default project-name
f72cda2b82 Speed up auto-completion in 'sh-script-mode'
e5b0141b0d Fix error editing multisession variables (bug#59710)
2022-12-03 06:30:29 +01:00
Stefan Kangas
9065d74515 Merge from origin/emacs-29
2b9cd50f93 Add tsx-ts-mode to eglot-server-programs
2022-12-03 06:30:29 +01:00
Juanma Barranquero
2541bec21b * lisp/bindings.el (bound-and-true-p): Verify argument is a symbol 2022-12-03 02:04:48 +01:00
Stefan Monnier
73d169c7db * lisp/emacs-lisp/cl-macs.el (cl-flet): Optimize a bit more
Also optimize the case where we use `cl-flet` to introduce a local alias.
2022-12-02 19:15:46 -05:00
Eli Zaretskii
54633fcd76 ; * lisp/subr.el (string-equal-ignore-case): Doc fix (bug#59779). 2022-12-02 19:08:08 +02:00
Randy Taylor
1b567f5a67 Use file-name-nondirectory to determine default project-name
* lisp/progmodes/project.el (project-name):
Use file-name-nondirectory instead of file-name-base (bug#59756).
2022-12-02 17:12:43 +02:00
Yikai Zhao
f72cda2b82 Speed up auto-completion in 'sh-script-mode'
* lisp/progmodes/sh-script.el (sh--cmd-completion-table-gen): New
function, replacement for 'sh--cmd-completion-table'.
(sh--cmd-completion-table): Function removed.
(sh-completion-at-point-function): Use
'sh--cmd-completion-table-gen'.  (Bug#59678)
2022-12-02 15:42:09 +02:00
Juanma Barranquero
e5b0141b0d Fix error editing multisession variables (bug#59710)
* lisp/emacs-lisp/multisession.el (multisession-edit-value):
Do not use `bound-and-true-p' on a non-symbol.  This reverts
commit bd586121ac.
2022-12-02 14:25:35 +01:00
Brian Leung
2b9cd50f93 Add tsx-ts-mode to eglot-server-programs
* lisp/progmodes/eglot.el (eglot-server-programs): Add
tsx-ts-mode.  (Bug#59770)
2022-12-02 12:56:13 +01:00