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:
parent
1180b6fbc7
commit
23e8519057
12 changed files with 40 additions and 18 deletions
|
@ -223,7 +223,9 @@ Note that we couldn't use JSON as an example here because it doesn't support lan
|
|||
|
||||
The `overrides.scm` file defines syntactic _scopes_ that can be used to override certain editor settings within specific language constructs.
|
||||
|
||||
For example, there is a language-specific setting called `word_characters` that controls which non-alphabetic characters are considered part of a word, for filtering autocomplete suggestions. In JavaScript, "$" and "#" are considered word characters. But when your cursor is within a _string_ in JavaScript, "-" is _also_ considered a word character. To achieve this, the JavaScript `overrides.scm` file contains the following pattern:
|
||||
For example, there is a language-specific setting called `word_characters` that controls which non-alphabetic characters are considered part of a word, for example when you double click to select a variable. In JavaScript, "$" and "#" are considered word characters.
|
||||
|
||||
There is also a language-specific setting called `completion_query_characters` that controls which characters trigger autocomplete suggestions. In JavaScript, when your cursor is within a _string_, "-" is should be considered a completion query character. To achieve this, the JavaScript `overrides.scm` file contains the following pattern:
|
||||
|
||||
```scheme
|
||||
[
|
||||
|
@ -238,7 +240,7 @@ And the JavaScript `config.toml` contains this setting:
|
|||
word_characters = ["#", "$"]
|
||||
|
||||
[overrides.string]
|
||||
word_characters = ["-"]
|
||||
completion_query_characters = ["-"]
|
||||
```
|
||||
|
||||
You can also disable certain auto-closing brackets in a specific scope. For example, to prevent auto-closing `'` within strings, you could put the following in the JavaScript `config.toml`:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue