Commit Graph
2694 Commits
Author SHA1 Message Date
356f89c939 Add unit test for multi-cursor snippet
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-03 19:26:24 +01:00
cb37c266d3 Support multi-cursor autocompletion
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-03 18:58:36 +01:00
Antonio ScandurraandNathan Sobo 4aa203196d Align completion labels with cursor
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-03 17:21:24 +01:00
Antonio Scandurra 138a4d8bdd Put rounded corners around autocomplete and give it some padding 2022-02-03 15:48:00 +01:00
Antonio Scandurra 5233ef85a9 Mute color of completion's text that can't be filtered 2022-02-03 15:39:53 +01:00
Antonio Scandurra f5546c1960 Fix panic when trying to show completions but none match the query 2022-02-03 14:36:45 +01:00
Antonio Scandurra 0647ffa166 Transact on applying completion to allow restoring of selections on undo 2022-02-03 12:10:22 +01:00
Antonio Scandurra 94a2683460 Hide completions when {un,re}doing past initial insertion boundaries 2022-02-03 11:42:52 +01:00
Antonio Scandurra 7fce7d8ccb Support clicking on a completion to confirm it 2022-02-03 11:39:19 +01:00
Antonio Scandurra b72e086faa Optimize summaries_for_anchors when MultiBuffer is a singleton 2022-02-03 11:22:55 +01:00
Antonio Scandurra 6293058b27 Opt into language-aware features when getting buffer chunks
We use chunks a lot to transform points and sync the various display maps,
and always querying tree-sitter or the LSP diagnostics in those cases is
unnecessarily expensive.
2022-02-03 11:21:30 +01:00
Antonio Scandurra ec0c7f4c01 Cancel innermost snippet insertion when hitting esc 2022-02-03 10:37:15 +01:00
Antonio Scandurra f01fb117a0 Allow completions to bleed off the editor's bounds 2022-02-03 10:23:34 +01:00
Antonio Scandurra fcd9cfde27 Syntax highlight even when the label doesn't contain a detail 2022-02-03 09:57:04 +01:00
Antonio Scandurra 26b13301f5 Don't overflow selection index when completions are filtered 2022-02-03 08:47:17 +01:00
Max Brunsfeld 8d1a1c61dd Start work on syntax highlighting completions 2022-02-02 18:14:30 -08:00
Max Brunsfeld 0c273d6603 Fix hang in editor completion unit test 2022-02-02 17:09:36 -08:00
Max Brunsfeld 17cb388fe2 Introduce Language::highlight_text method 2022-02-02 17:01:48 -08:00
Max Brunsfeld 90404114e3 Remove theme parameters from buffer/display map's chunks methods
Change Chunks to contain highlight ids instead of actual highlight
styles. Retrieve the actual highlight style from the theme in the
editor element layer.

This is to set us up to perform syntax highlighting in other code
paths where the theme is not available.
2022-02-02 16:33:04 -08:00
724829892d Hide completions when using the mouse
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-02 19:12:36 +01:00
07a0eec4fd Improve formatting of variable/field completions for Rust
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-02 18:56:04 +01:00
0b7628d3c9 Improve formatting of function autocompletion labels in Rust
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-02 18:43:55 +01:00
Antonio ScandurraandNathan Sobo 70a6a78b15 Don't apply completion's edit when it wouldn't change the buffer
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-02 18:00:30 +01:00
Antonio Scandurra b221c19b8e Wait for additional edits before pushing transaction in remote buffer 2022-02-02 17:01:23 +01:00
Antonio Scandurra b75f0e3ff3 Apply additional edits for completion when the buffer is remote 2022-02-02 16:29:13 +01:00
Antonio Scandurra a68c127491 Broadcast completion triggers to remote participants 2022-02-02 14:07:41 +01:00
Antonio Scandurra 76884e3b0f Start on requesting completions for remote buffers 2022-02-02 12:22:47 +01:00
Antonio Scandurra b0792751c8 Fix flaky test_highlighted_ranges due to random TypeId ordering 2022-02-02 10:09:12 +01:00
Antonio Scandurra c204d05aaf Separate autoclose pair stack from autocomplete stack 2022-02-02 09:51:03 +01:00
Antonio Scandurra 70fb20ce6b Navigate tabstops on tab even if the top of stack is a BracketPairState 2022-02-02 09:04:57 +01:00
Max Brunsfeld a99b1a6f3d Generalize autoclose stack to include snippet ranges as well 2022-02-01 17:40:39 -08:00
Max Brunsfeld 067eb8740c Start work on handling snippet completions 2022-02-01 15:35:02 -08:00
Max Brunsfeld 0efa4b0696 Handle special "final tabstop" in snippets 2022-02-01 15:33:48 -08:00
Max Brunsfeld 0323952bfb 🎨 Return an option task from confirm_completion 2022-02-01 14:27:01 -08:00
Max Brunsfeld ebfcc272ad Reimplement snippet parsing using recursive descent 2022-02-01 13:41:41 -08:00
864fbe76ed Add snippet crate
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-01 11:00:40 -08:00
5b996f341f Advertise snippet_support capability to LSP
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
Co-Authored-By: Max Brunsfeld <max@zed.dev>
2022-02-01 18:20:47 +01:00
Antonio ScandurraandNathan Sobo e354b91d22 Apply additional edits when confirming a completion
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-01 17:38:11 +01:00
Antonio ScandurraandNathan Sobo f6b3a840a4 Fix warnings in language::FakeFile
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-01 16:59:03 +01:00
Nathan SoboandAntonio Scandurra 9a466995f6 Re-filter existing completions on selection update
We still request new completions, but this ensures results are up-to-date in the meantime.

Also: Cancel any pending completions task when we dismiss the completions dialog or start a new completions request.
Co-Authored-By: Antonio Scandurra <me@as-cii.com>
2022-02-01 07:59:37 -07:00
Antonio ScandurraandNathan Sobo e150081fa1 Filter and sort suggestions in autocomplete
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-02-01 15:11:20 +01:00
Antonio Scandurra 58ceed23fd Dismiss autocomplete when moving outside of a word 2022-02-01 13:27:49 +01:00
Nathan Sobo 53c3a770fc Don't assign completion_state when completions are empty 2022-01-31 18:38:49 -07:00
Nathan Sobo 20c1a19b11 Always issue a new completions request when typing a trigger character
We'll interpolate the anchor range of original request, but it's still a good idea to be up-to-date in case the language server is influenced by the content preceding the location. This doesn't *seem* to be the case with rust-analyzer so far, but it's how VS Code works so let's do it this way.
2022-01-31 18:34:20 -07:00
Nathan Sobo 4d0cfe5bec Create anchors with latest snapshot when completions are ready
Using the previous snapshot was panicking.
2022-01-31 18:33:25 -07:00
Nathan Sobo 3897447af2 Make the anchor range inclusive on completions
This will help us to correctly interpolate the replacement range when we confirm before receiving new completions after typing with a completion open.
2022-01-31 18:26:26 -07:00
Max BrunsfeldandNathan Sobo 267b719dbc Trigger completion when typing words or trigger characters
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-31 17:07:24 -08:00
Max BrunsfeldandNathan Sobo c876da9601 Insert completion text on enter
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-31 13:46:50 -08:00
Max BrunsfeldandNathan Sobo 2a7c4eb0c7 Allow selecting items from the autocomplete list
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-31 13:25:46 -08:00
Max BrunsfeldandNathan Sobo 7cc6658775 Dispatch editor events on the autocomplete list
Co-Authored-By: Nathan Sobo <nathan@zed.dev>
2022-01-31 13:15:30 -08:00