-
Notifications
You must be signed in to change notification settings - Fork 5.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Deno language server to-do list #8643
Comments
Hi. How about dealing with deps.ts as a first-class dependency definition in I have written golang recently and it was a great development experience. I believe it makes a great development experience and consistency if |
May I send PR for textDocument/rename? |
There's still quite a lot we need to work on achieve parity with old version of
Of course! |
I will tackle to support |
I'll try to implement |
Hi, the LSP is not currently providing documentation for the completion, is this on the Language Service Features list? hrsh7th/nvim-compe#187 |
Hi I would like to work on the |
I'll work on the |
I'll work on the |
I'll tackle |
I'll tackle |
@jeanp413 thank you, I will get to dealing with your other contributions early next week, just needed to work on something else this week. |
@kitsonk it appears to me that this issue is done at this point. Can we close it now? |
Yeah, we can track other bits in individual issues. |
Post the initial implementation of the language server, there are quite a few other features that need to be added as well as some "tech debt" from the initial implementation. We might want to break some of these off to individual issues, but it is good enough for now to have a "master" issue for tracking purposes.
Language Service Features
These are server capabilities provided by the language server protocol, which various editors can take advantage of. Most of these features are exposed here in visual studio code for TypeScript/JavaScript and provide a high level structure of how to take information from the
tsc
compiler isolate and bring it into Rust and send it back over the language server client. Specifically, the DefinitionProvider is a good model of how to add a feature. Looking at thecli/lsp/mod.rs
for theGotoDefinition
handling demonstrates calling intotsc
and dealing with a response back, converting it to a valid lsp response.(this will be the most complex one, because we also need to enrich the response back from tsc)an mvp exists (feat(lsp): basic support for textDocument/completion #8651), but we likely want to enhance it.Enablethis is largely fixedinclude_completions_with_insert_text
(in consequence enablinginclude_automatic_optional_chain_completions
andinclude_completions_for_module_exports
)textDocument/signatureHelp
#9330)deno cache
deno.jsonc
SemanticHighlighting- vscode does not implement this for typescript, semantic tokens insteadColorProvidervscode does not implement this for typescriptExecuteCommandProviderthere is nothing to implement hereOnTypeRenameProvidervscode does not implement this for typescriptDeclarationProvider ⭐vscode does not implement this for typescriptExtension Configuration Options
There are several configuration/settings that are currently not respected by the language server, but should be.
cachePath
- allow theDENO_DIR
to be set in the configuration for the workspace allowing the default to be overridden and not need to setup an environment variable to change it.enable
- this is only partially respected at the moment, for diagnostics, but other requests are duplicating values when enabled (fix(lsp): respect enable flag for requests #8850)unstable
- needs to configure the tsc isolate with a new set of libs which include the unstable ones (feat(lsp): support the unstable setting #8851)importMap
- the language server state should own the value and be passed when resolving modules (feat(lsp): support import maps #8683)config
- needs to change the config to the isolate, since--config
is a CLI opt in, it should only be resolved when set and passed to the tsc isolate (feat(lsp): support specifying a tsconfig file #8926)Additional Items
SourceMap
to hold the in memory documents.deno_lint
should generate an unused tag as part of its diagnostic structure to flag unreachable code.deno_lint
or reformatting a document to a seperate thread, but we don't allow isolates to be sent to other threads, in order not to have to deal with managing the lock, but it would be good to have a dedicated thread for getting diagnostics from the compiler isolate as to not lock the main loop of the language service.deno types
). Now we need to have them all in the lsp in Rust to provide them on a goto definition situation.The text was updated successfully, but these errors were encountered: