Blaž Hrastnik
9712bbb23b
Use which to resolve lsp/dap binaries
...
This resolves the following issue: https://github.com/helix-editor/helix/discussions/962#discussioncomment-1580046
2022-02-24 11:38:40 +09:00
Blaž Hrastnik
f88c077f99
Replace tendril with smartstring
...
Slightly smaller API surface, less dependencies.
2022-02-10 11:12:47 +09:00
Kirawi
ea095ca5fb
Optimize lsp_pos_to_pos ( #1423 )
...
lines().count() is slow compared to len_lines()
2022-01-03 11:26:17 +09:00
Alexis Mousset
8a019b423f
Detect workspace root using language markers ( #1370 )
...
* Detect workspace root using language markers
* Avoid allocating root_markers
* Update helix-core/src/lib.rs
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
* Update helix-core/src/lib.rs
Co-authored-by: Kirawi <67773714+kirawi@users.noreply.github.com>
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Co-authored-by: Kirawi <67773714+kirawi@users.noreply.github.com>
2021-12-31 17:06:54 +09:00
Gabriel Berto
5d7b5db8ab
Resolve completion item ( #1315 )
...
Co-authored-by: Gabriel Berto <gabriel.berto@pottencial.com.br>
2021-12-25 19:00:57 +09:00
Matouš Dzivjak
75a8b789d2
LSP code action commands ( #1304 )
...
* feat(lsp): codeAction commands
* Don't block on command call
* Fix lifetime of command execution
* Fix lint issues
2021-12-21 18:21:45 +09:00
Blaž Hrastnik
d31bef7fea
lsp: Don't panic if init fails
...
We correctly filter out the language server inside Document to ignore it
if the capabilities are missing, so this way it'll simply ignore the
errored out LSP rather than panicking.
2021-12-03 10:05:27 +09:00
CossonLeo
29e6849413
Add LSP rename_symbol (space-r) ( #1011 )
...
improve apply_workspace_edit
2021-11-09 00:17:54 +09:00
Ivan Tham
49f6c2623f
Bump lsp-types to 0.91.0 ( #932 )
2021-10-29 12:00:18 +09:00
Midnight Exigent
eedcea7e6b
Allow language.config
(in languages.toml) to be passed in as a toml object ( #807 )
...
* allow language.config (in languages.toml) to be passed in as a toml object
* Change config field for languages from json string to toml object
* remove indents on languages.toml config
* fix: remove patch version from serde_json import in helix-core
* Use same tree-sitter-zig as upstream/master
2021-10-08 11:14:12 +09:00
Kirawi
ef532e0c0d
log errors produced when trying to initialize the LSP ( #746 )
2021-09-15 14:58:06 +09:00
Blaž Hrastnik
bb47a9a0b8
fix: Fix regression where formatting would fail on null response
2021-09-09 11:49:45 +09:00
Blaž Hrastnik
be81f40df8
lsp: This doesn't need to be a mutable reference
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
37606bad47
lsp: doc.language_server() is None until initialize completes
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
46f3c69f06
lsp: Don't send notifications until initialize completes
...
Then send open events for all documents with the LSP attached.
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
2793ff3832
lsp: SyncKind::Full: we need to send the whole document on each change
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
48fd4843fc
lsp: Outdated comment
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
800d79b584
ls: Refactor textDocument/didSave in a similar vein
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
184637c55a
lsp: refactor format so we stop cloning the language_server
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
8744f367bd
wip
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
5a558e0d8e
lsp: Delay requests & notifications until initialization is complete
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
c3a58cdadd
lsp: Refactor capabilities as an async OnceCell
...
First step in making LSP init asynchronous
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
41f1e8e4fb
fix: lsp: Terminate transport on EOF
...
If stdout/stderr is closed, read_line will return 0 indicating EOF.
2021-09-06 15:25:46 +09:00
Blaž Hrastnik
fe17b99ab3
fix: lsp: Don't consume \n\n as a single newline
2021-09-06 15:25:08 +09:00
Blaž Hrastnik
57ed5180e0
lsp: Improve line ending handling when generating TextEdit
2021-09-06 11:00:33 +09:00
Blaž Hrastnik
847d1fa496
fix: Work around crashes on LSPs that don't just emit JSON-RPC
2021-08-29 18:38:28 +09:00
Blaž Hrastnik
7eff905680
lsp: slightly refactor header parsing, add more logging
2021-08-29 12:40:21 +09:00
Timothy DeHerrera
ed8c3e6574
don't panic on defunct lsp process ( #583 )
2021-08-23 18:04:22 +09:00
Blaž Hrastnik
385a6b5a1a
lsp: Refactor duplex to avoid issues with select! + read_exact
...
read_exact isn't cancellation safe.
Fixes #504
2021-08-07 15:04:03 +09:00
Grzegorz Baranski
48e344a2a8
feat: code actions - document edits ( #478 )
...
* wip: Code actions
* fix(term): use current macro instead Context::context
* feat(lsp): set code_action capabilities
* feat(term): set SPC-a to code_action
* feat(term): wip on applying code actions
* deps: `cargo update`
* feat(term): applying code actions edits
* fix(term): cleanup of apply_edit
* fix(term): applying edits as a whole thing instead one by one
* refactor(term): move apply_edits below
* fix(term): improve unimplemented messages for further investigation
* fix(term): change code action command comment
Co-authored-by: Ivan Tham <pickfire@riseup.net>
* fix(term): add matching `}`
* fix(term): cleanup, todo!() on workspace edit
* fix(term): remove unrelated workspace_symbol_picker
* fix(term): apply cargo-clippy suggestions
* fix(term): replace todo!'s with editor.set_error
Co-authored-by: Blaž Hrastnik <blaz@mxxn.io>
Co-authored-by: Ivan Tham <pickfire@riseup.net>
2021-07-24 10:26:43 +09:00
Cor Peters
0aa43902ca
Added option to provide a custom config file to the lsp. ( #460 )
...
* Added option to provide a custom config file to the lsp.
* Simplified lsp loading routine with anyhow
* Moved config to language.toml
* Fixed test case
* Cargo fmt
* Revert now-useless changes
* Renamed custom_config to config
Co-authored-by: Cor <prive@corpeters.nl>
2021-07-18 16:56:25 +09:00
Joe Neeman
c9be480bf8
Make formatting happen asynchronously.
2021-06-30 17:08:50 +09:00
Blaž Hrastnik
cad14c6b46
Address nightly clippy warnings
2021-06-27 13:27:47 +09:00
Blaž Hrastnik
a70de6e980
Merge pull request #224 from helix-editor/line_ending_detection
...
Line ending detection
2021-06-22 11:09:19 +09:00
wojciechkepka
cc357d5096
Add progress spinners to status line
2021-06-21 12:59:06 +09:00
Nathan Vegdahl
4efd6713c5
Work on moving code over to LineEnding instead of assuming '\n'.
...
Also some general cleanup and some minor fixes along the way.
2021-06-20 15:33:02 -07:00
wojciechkepka
dd0af78079
Fix unwraps in lsp::transport
2021-06-19 13:02:56 +09:00
wojciechkepka
c2aad859b1
Handle language server shutdown with timeout
2021-06-19 13:02:56 +09:00
wojciechkepka
d095ec15d4
Reenable work_done_progress
capability
2021-06-18 17:42:38 +09:00
wojciechkepka
38cb934d8f
Add unique id to each lsp client/server pair
2021-06-18 17:42:38 +09:00
wojciechkepka
80b4a69053
Update client::reply
to be non async
2021-06-18 17:42:38 +09:00
wojciechkepka
a6d39585d8
Add work_done_token
as parameter to lsp methods
2021-06-18 17:42:38 +09:00
wojciechkepka
52fb90b81e
Add MethodCall
, ProgressStatus
, LspProgressMap
2021-06-18 17:42:38 +09:00
Robin
9baf1ecc90
add symbol picker ( #230 )
...
* add symbol picker
use the lsp document_symbol request
* fix errors from merging in master
* add docs for symbol picker
2021-06-12 21:45:21 +09:00
Wojciech Kępka
c754df12b3
lsp: Check bounds when converting lsp positions ( #204 )
...
* lsp: Make position conversion funcs return `Option`
* Add tests
* Fixes
* Revert pos_to_lsp_pos to panic
2021-06-12 16:04:30 +09:00
Blaž Hrastnik
a8a5bcd13d
Temporarily disable workDone
...
Blows up on gopls because we don't handle receiving window/workDoneProgress/create method calls
2021-06-11 13:30:21 +09:00
Wojciech Kępka
098806ce2a
lsp: Display LSP progress messages ( #216 )
2021-06-11 12:42:16 +09:00
Ivan Tham
7cc13fefe9
Derive debug without feature
...
Note that this also removed those `finish_non_exhaustive()`.
2021-06-10 22:00:08 +09:00
notoria
1a3a924634
Implement Debug for data structure as a feature
2021-06-10 22:00:08 +09:00
Egor Karavaev
ea6667070f
helix-lsp cleanup
2021-06-08 10:56:46 +09:00
Egor Karavaev
960bc9f134
Don't panic on LSP not starting
2021-06-08 10:02:41 +09:00
Blaž Hrastnik
8d6fad4cac
lsp: Provide workspace root on client.initialize()
2021-06-07 21:32:01 +09:00
Egor Karavaev
d55419604c
Remove select_all implementation
2021-06-04 09:25:30 +09:00
Blaž Hrastnik
e4ff75b4d4
Add :fmt (formats the whole file).
2021-05-12 17:24:55 +09:00
Blaž Hrastnik
6c705f09e8
Lint
2021-05-09 17:13:59 +09:00
Blaž Hrastnik
caf4349925
Remove some of the panics, just log instead.
2021-05-08 18:17:13 +09:00
Blaž Hrastnik
fd4fd12fa3
clippy lint
2021-05-06 17:20:00 +09:00
Blaž Hrastnik
ba97005495
Work around the rest of the blocking issues.
2021-05-06 17:15:49 +09:00
Blaž Hrastnik
d00414f81a
Start moving more LSP calls into callbacks/futures without capturing self
2021-05-06 15:08:59 +09:00
Blaž Hrastnik
355ad3cb82
Tokio migration.
2021-05-06 13:56:34 +09:00
Blaž Hrastnik
3b90317060
Add window/showMessage / logMessage stubs so gopls fully starts.
2021-04-15 17:34:38 +09:00
Blaž Hrastnik
3e5f24a9d5
lsp: support both utf-8 and utf-16 offsets.
...
Still need to implement the clangd encoding negotiation, but it's
a start. Should also manually override to utf8 for pyls.
2021-04-14 15:39:31 +09:00
Blaž Hrastnik
5aed1f3c00
lsp: Gracefully fail if binary doesn't exist.
2021-04-07 13:38:24 +09:00
Blaž Hrastnik
0e9ecccfc1
clippy: Drop or-patterns for now because they're not on stable rust yet
2021-04-06 19:51:15 +09:00
Blaž Hrastnik
ceea5eacd8
clippy lint
2021-03-31 23:42:16 +09:00
Blaž Hrastnik
2a3910c1d9
wip: Async async. Delay response handling with a callback.
2021-03-26 17:12:45 +09:00
Blaž Hrastnik
e3c4edae32
Add the machinery to load syntax config from TOML.
...
It's embedded into the binary at build time for now, but it's progress.
2021-03-25 15:26:25 +09:00
Blaž Hrastnik
9a36d2c2a8
wip: Hooks & trigger characters for completion/signature_help.
2021-03-24 18:17:00 +09:00
Blaž Hrastnik
cbcacb1063
Merge some imports.
2021-03-22 12:40:07 +09:00
Blaž Hrastnik
e9bd9e72c3
Pos conversions always operate on whole documents.
2021-03-18 15:23:42 +09:00
Blaž Hrastnik
5237084d98
Don't publicly re-export once_cell in lsp.
2021-03-18 14:29:38 +09:00
Blaž Hrastnik
59e6024186
Remove State from a few more signatures.
2021-03-18 14:17:32 +09:00
Blaž Hrastnik
8eaf9a432d
Make Transaction::change only rely on the rope.
2021-03-18 13:39:56 +09:00
Blaž Hrastnik
15f142bc4b
lsp: Use into_iter->map->collect instead of manual loop.
2021-03-16 23:03:29 +09:00
Blaž Hrastnik
4240f757c0
lsp: Fix compilation errors.
2021-03-16 23:03:10 +09:00
Jan Hrastnik
a5f9080a9c
goto_request wip
2021-03-16 23:03:10 +09:00
Jan Hrastnik
b738ae1bc7
more goto lsp functions
2021-03-16 23:03:10 +09:00
Jan Hrastnik
0322c28e6b
gd now works for singular definition
2021-03-16 23:03:10 +09:00
Jan Hrastnik
8a68a04340
gotodefiniton now runs but doesnt return anything
2021-03-16 23:03:10 +09:00
Jan Hrastnik
d3ddc8dea6
wip
2021-03-16 23:03:10 +09:00
Blaž Hrastnik
eca2a73ad0
lsp: Pass through language_id on didOpenTextDocument.
2021-03-16 16:13:41 +09:00
Blaž Hrastnik
143cfe13e0
minor: TODO comment cleanup
2021-03-16 15:41:42 +09:00
Blaž Hrastnik
87e3cd3df2
ui: Render diagnostic errors in sideline.
2021-03-15 16:19:31 +09:00
Blaž Hrastnik
bb87b08fc9
Configure language servers via LanguageConfiguration.
2021-03-14 17:14:34 +09:00
Blaž Hrastnik
6cbfb050e2
lsp: Emit didSave notifications.
2021-03-12 16:25:12 +09:00
Blaž Hrastnik
4102992c46
Bump deps.
2021-03-01 14:33:02 +09:00
Blaž Hrastnik
1ae7c43391
commands: = as range formatting (via lsp)
2021-02-26 15:52:43 +09:00
Blaž Hrastnik
7162632eb7
lsp: Hover documentation draft.
2021-02-25 18:07:47 +09:00
Blaž Hrastnik
87a6d4e736
minor: Simplify some code.
2021-02-24 16:07:39 +09:00
Blaž Hrastnik
61ce2c9cfe
lsp: Disable snippet_support until we implement it.
2021-02-22 14:42:12 +09:00
Blaž Hrastnik
004a4f37a7
lsp: Handle responses being returned after request timed out.
2021-02-22 12:44:36 +09:00
Blaž Hrastnik
c9dd1c930e
treewide: &RopeSlice -> RopeSlice. It's Copy so no reason to pass by ref
2021-02-18 18:34:22 +09:00
Blaž Hrastnik
d5f9622e2e
lsp: edit events change ranges need to affect each other.
2021-02-17 17:28:55 +09:00
Blaž Hrastnik
48ef6598db
Increase the log level in LSP and log server errors.
2021-02-16 18:18:35 +09:00
Blaž Hrastnik
b7da7f83c3
lsp: Test changeset_to_changes.
2021-02-16 15:45:46 +09:00
Blaž Hrastnik
0541fbb85f
Adjust LSP changeset generation too: insert now always preceedes delete.
2021-02-16 11:08:06 +09:00
Blaž Hrastnik
05c7fb98df
Refactoring: move language_servers into Editor, proper load for doc.
2021-01-21 16:55:46 +09:00
Blaž Hrastnik
777a80917d
Address clippy lints.
2021-01-08 16:37:36 +09:00
Blaž Hrastnik
941c34a7fc
lsp: Move timeouts into client.request
2021-01-06 17:48:14 +09:00
Blaž Hrastnik
3cbab20908
lsp: Fix pos_to_lsp_pos calculation.
2020-12-25 17:42:50 +09:00
Blaž Hrastnik
2ab069bb3f
lsp: Work on syncing the state with the language server.
2020-12-25 17:20:09 +09:00
Blaž Hrastnik
cd16df19c1
lsp: generate_transaction_from_text_edits
2020-12-23 18:16:17 +09:00
Blaž Hrastnik
56f2193811
Retrieve completion options on ctrl-x.
2020-12-23 16:20:49 +09:00
Blaž Hrastnik
955cb81687
Init lsp through the registry.
2020-12-23 15:50:16 +09:00
Blaž Hrastnik
8695415fbf
wip: Move to new rendering structure.
2020-12-13 12:23:50 +09:00
Blaž Hrastnik
39bf1ca825
Update deps.
2020-12-03 13:12:07 +09:00
Blaž Hrastnik
a7869c728c
wip
2020-12-03 13:12:07 +09:00
Blaž Hrastnik
ae8a9e5bac
lsp: Make base request methods take &self instead of &mut self.
2020-12-03 13:10:35 +09:00
Blaž Hrastnik
cc6bdf8f66
Text change generation, RPC call handling.
2020-12-03 13:10:35 +09:00
Blaž Hrastnik
af1924404a
Configure logging (-vv for debug level logs)
2020-12-03 13:10:35 +09:00
Blaž Hrastnik
eff6fac9ec
clippy lint
2020-12-03 13:10:35 +09:00
Blaž Hrastnik
b39849dde1
Refactor: Document type as a wrapper around barebones State.
2020-12-03 13:10:35 +09:00
Blaž Hrastnik
81ccca0c6a
Improve error typing.
2020-12-03 13:10:35 +09:00
Blaž Hrastnik
ef5e5f9296
state.version tracking
2020-12-03 13:10:34 +09:00
Blaž Hrastnik
49254d7180
Total mess but it works: diagnostic marking.
2020-12-03 13:10:34 +09:00
Blaž Hrastnik
f9bfba4d96
Reroute LSP notification events into the main app event loop.
2020-12-03 13:10:32 +09:00
Blaž Hrastnik
13cb442850
wip: Fetching diagnostics, parsing notifications.
2020-12-03 13:04:42 +09:00
Blaž Hrastnik
f03830b047
wip: Basic LSP lifecycle requests/notifications.
2020-12-03 13:04:42 +09:00
Blaž Hrastnik
8adcf5083f
wip
2020-12-03 13:04:42 +09:00