Add completion_query_characters in language (#27175)

Closes #18581

Now characters for completing query and word characters, which are
responsible for selecting words by double clicking or navigating, are
different. This fixes a bunch of things:

For settings.json, this improves completions to treat the whole string
as a completion query, instead of just the last word. We now added
"space" as a completion query character without it being a word
character.

For keymap.json, this improves selecting part of an action as the ":"
character is only a completion character and not a word character. So,
completions would still trigger on ":" and query capture will treat ":"
as a word, but for actions like selections and navigation, ":" will be
treated as punctuation.

Before:
Unnecessary related suggestions as query is only the last word which is
"d".
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/8199a715-7521-49dd-948b-e6aaed04c488"
/>

Double clicking `ToggleFold` selects the whole action:
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/c7f91a6b-06d5-45b6-9d59-61a1b2deda71"
/>

After:
Now query is "one d" and it shows only matched ones.
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/1455dfbc-9906-42e8-b8aa-b3f551194ca2"
/>

Double clicking `ToggleFold` only selects part of the action, which is
more refined behavior.
<img width="300" alt="image"
src="https://github.com/user-attachments/assets/34b1c3c2-184f-402f-9dc8-73030a8c370f"
/>

Release Notes:

- Improved autocomplete suggestions in `settings.json`, now whole string
is queried instead of just last word of string, which filters out lot of
false positives.
- Improved selection of action in `keymap.json`, where now you can
double click to only select certain part of action, instead of selecting
whole action.

---------

Co-authored-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
Co-authored-by: Ben Kunkle <ben@zed.dev>
This commit is contained in:
Smit Barmase 2025-03-20 16:45:35 +05:30 committed by GitHub
parent 1180b6fbc7
commit 23e8519057
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
12 changed files with 40 additions and 18 deletions

View file

@ -9,6 +9,6 @@ brackets = [
{ start = "\"", end = "\"", close = true, newline = false, not_in = ["string", "comment"] },
{ start = "'", end = "'", close = true, newline = false, not_in = ["string", "comment"] },
]
word_characters = ["-"]
completion_query_characters = ["-"]
block_comment = ["/* ", " */"]
prettier_parser_name = "css"

View file

@ -32,5 +32,5 @@ block_comment = ["{/* ", " */}"]
opt_into_language_servers = ["emmet-language-server"]
[overrides.string]
word_characters = ["-"]
completion_query_characters = ["-"]
opt_into_language_servers = ["tailwindcss-language-server"]

View file

@ -12,4 +12,4 @@ tab_size = 2
prettier_parser_name = "json"
[overrides.string]
word_characters = [":"]
completion_query_characters = [":", " "]

View file

@ -12,4 +12,4 @@ tab_size = 2
prettier_parser_name = "jsonc"
[overrides.string]
word_characters = [":"]
completion_query_characters = [":", " "]

View file

@ -1,7 +1,7 @@
name = "Markdown"
grammar = "markdown"
path_suffixes = ["md", "mdx", "mdwn", "markdown", "MD"]
word_characters = ["-"]
completion_query_characters = ["-"]
block_comment = ["<!-- ", " -->"]
autoclose_before = "}])>"
brackets = [

View file

@ -30,5 +30,5 @@ block_comment = ["{/* ", " */}"]
opt_into_language_servers = ["emmet-language-server"]
[overrides.string]
word_characters = ["-"]
completion_query_characters = ["-"]
opt_into_language_servers = ["tailwindcss-language-server"]