aboutsummaryrefslogtreecommitdiff
path: root/docs/architecture.md
diff options
context:
space:
mode:
authorMichael Davis2022-11-18 18:27:46 +0000
committerGitHub2022-11-18 18:27:46 +0000
commit89efb4f711d37ac59b4f5f985467647be76fb870 (patch)
tree70fb86125d9ddf601fd9de16cdf88c51b2284f77 /docs/architecture.md
parenteada6d534e022b66e1c1d631670dc1ccbe922b9e (diff)
lsp: Resolve completion item asynchronously on idle-timeout (#4781)
d7d0d5ffb79b6f2e09c6ab8af6e112c41e6f73e8 resolves completion items on the idle-timeout event. The `Completion::resolve_completion_item` function blocks on the LSP request though, which blocks the compositor and in turn blocks the event loop. So until the language server returns the resolved completion item, Helix is unable to respond to keypresses or other LSP messages. This is typically ok since the resolution request is fast but for some language servers this can be problematic, and ideally we shouldn't be blocking like this anyways. When receiving a `completionItem/resolve` request, the Volar server sends a `workspace/configuration` request to Helix and blocks itself on the response, leading to a deadlock. Eventually the resolve request times out within Helix but Helix is locked up and unresponsive in that window. This change resolves the completion item without blocking the compositor.
Diffstat (limited to 'docs/architecture.md')
0 files changed, 0 insertions, 0 deletions