Skip to content

tsserver should implement the Language Server Protocol #11274

Closed

Description

As the language server protocol ( https://github.com/Microsoft/language-server-protocol ) is getting more and more popularity and clients ( https://github.com/Microsoft/language-server-protocol/wiki/Protocol-Implementations ), it would be very useful to have the tsserver implement this protocol.

Activity

  1. StevenDoesStuffs commented on Nov 27, 2016

    @StevenDoesStuffs

    Been 2 monthts, any updates?

  2. felixfbecker commented on Feb 9, 2017

    @felixfbecker
    Contributor

    We did some work at Sourcegraph in wrapping the TS language service as a language server, but hit some limitations with the current API. Specifically, the LanguageServiceHost interface you can provide to the server requires the methods that return file contents to return synchronously. In a language server however this is most likely done asynchronously because retrieving the file content involves IO with the file system or over the protocol stream.

    I would be very interested in help or improvements in the TS server to solve this use case.

  3. masaeedu commented on Feb 24, 2017

    @masaeedu
    Contributor

    Felix Becker (@felixfbecker) Would it be possible to overcome the limitations if you interfaced with an instance of tsserver instead?

  4. felixfbecker commented on Feb 24, 2017

    @felixfbecker
    Contributor

    Asad Saeeduddin (@masaeedu) I don't understand the question - the TS language server is using the LanguageService from TypeScript?

  5. masaeedu commented on Feb 24, 2017

    @masaeedu
    Contributor

    Felix Becker (@felixfbecker) Sorry, I'll try to clarify what I mean. Instead of implementing LanguageServiceHost, you could let tsserver host the language service, and you wouldn't need to care about how it satisfies that interface. Your language server process would rely on passing messages to/from tsserver, which is inherently async.

  6. felixfbecker commented on Mar 24, 2017

    @felixfbecker
    Contributor

    Asad Saeeduddin (@masaeedu) wouldn't the tsserver try to read from the file system directly?

  7. masaeedu commented on Mar 24, 2017

    @masaeedu
    Contributor

    Felix Becker (@felixfbecker) Yeah, it would read the files directly. I don't think that would affect your language server process in any way though. If/when they make performance improvements to tsserver you don't need to make any changes.

  8. felixfbecker commented on Mar 24, 2017

    @felixfbecker
    Contributor

    Asad Saeeduddin (@masaeedu) That is a dealbreaker unfortunately, because the files are not available locally in the container.

  9. prabirshrestha commented on Aug 11, 2017

    @prabirshrestha
    Member

    I have implemented the initial version of language server protocol for typescript which can be found at https://github.com/prabirshrestha/typescript-language-server. It acts as a proxy for tsserver. Currently textDocument/didOpen, textDocument/change and textDocument/completion are implemented but adding others should be fairly easy.

    In the long term I would definitely love to see LSP shipping as part of the official typescript installation.

  10. prabirshrestha commented on Oct 3, 2017

    @prabirshrestha
    Member

    Here is another LSP implementation of Typescript based on my original tsserver proxy idea. https://github.com/theia-ide/typescript-language-server. They have added more protocol feature support. It is maintained by folks at TypeFox. I have also handed over the typescript-language-server npm package to them.

  11. vvakame commented on Jun 1, 2018

    @vvakame
    Contributor

    https://github.com/Microsoft/TypeScript/wiki/Roadmap#30-july-2018
    I saw the roadmap. next version up is major version up! 🥂
    do you have any plans about this issue?

  12. keyboardDrummer commented on Sep 5, 2018

    @keyboardDrummer

    Can we get an update on whether there are plans for this issue?

    The two existing TS LSP servers both have big issues. If the TS team wants TypeScript to be used outside of VSCode / VStudio, they should resolve this issue.
    SourceGraph: worst-case warm-up time is extremely long; no support for files that change on disk, such as the tsconfig.json file.
    TypeFox: incomplete implementation of LSP.

  13. anurbol commented on Mar 9, 2019

    @anurbol

    6 months from the time last comment was written. Any updates on this? LSP is promoted by Microsoft, yet TypeScript seems to ignore it. Weird :-)

  14. mickaelistria commented on Mar 9, 2019

    @mickaelistria
    Author

    You can use https://github.com/theia-ide/typescript-language-server which more or less does the work of wrapping tsserver messages as LSP ones.
    I'm closing this issue as I'm satisfied with https://github.com/theia-ide/typescript-language-server and wouldn't -as a consumer- get.any clear added-value if this were implemented directly in tsserver.

  15. felixfbecker commented on Mar 9, 2019

    @felixfbecker
    Contributor

    I am using https://github.com/theia-ide/typescript-language-server too and it has lots of problems. Problems that I think wouldn't exist if the official server spoke LSP.

  16. anurbol commented on Mar 10, 2019

    @anurbol

    The library of theia-ide seems to be not bad, but as felixbecker said, indeed has problems, unfortunately. For instance it does not raise errors on unused variables when noUnusedLocals is enabled. And I have just started exploring it (fearing of other inconsistencies).

  17. mickaelistria commented on Mar 10, 2019

    @mickaelistria
    Author
  18. vicapow commented on Mar 11, 2019

    @vicapow

    One more anecdote is microsoft/vscode#70239
    By not using LSP in tsserver, it means there are features that exist in vscode + tsserver that aren't yet possible to implement with LSP + vscode alone. This puts LSP implementations at a disadvantage compared to non-LSP implementations.

  19. mmktomato commented on Apr 23, 2020

    @mmktomato

    I'm also using https://github.com/theia-ide/typescript-language-server . But I found it's looking for maintainers. typescript-language-server/typescript-language-server#141 I think it shows we can't rely on it so long time.

    Is it the time to reconsider this issue?

  20. akosyakov commented on May 1, 2020

    @akosyakov

    It would be great if typescript embraces LSP and makes sure that features are available through it when they are added. That's VS Code uses tsserver directly without using LSP put all other tools to disadvantage. That's one of reasons for Theia to use VS Code extensions instead of trying to align https://github.com/theia-ide/typescript-language-server with VS Code extension each release.

  21. saltmade commented on May 24, 2020

    @saltmade

    This request means additional work for the TS team, and VSCode's tight integration with TSServer makes a subtle to hint to use another Microsoft product. But not doing it leaves influence on the table. There are many people that can't or won't use VSCode, but will use LSP. Neovim's upcoming LSP client for example.

  22. marc2332 commented on Aug 16, 2020

    @marc2332

    So, what's the status of this?

    There isn't any updated and maintained language server for JS / TS currently, as far I know

  23. mickaelistria commented on Aug 16, 2020

    @mickaelistria
    Author

    See #39459 which revives this issue in this new context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    In DiscussionNot yet reached consensusSuggestionAn idea for TypeScript

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions