typescript-language-server VS rust-analyzer

Compare typescript-language-server vs rust-analyzer and see what are their differences.

rust-analyzer

A Rust compiler front-end for IDEs [Moved to: https://github.com/rust-lang/rust-analyzer] (by rust-analyzer)
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
typescript-language-server rust-analyzer
53 207
1,705 9,320
2.4% -
8.7 10.0
9 days ago about 2 years ago
TypeScript Rust
GNU General Public License v3.0 or later GNU General Public License v3.0 or later
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

typescript-language-server

Posts with mentions or reviews of typescript-language-server. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-03-12.
  • Helix - Front-End Power
    8 projects | dev.to | 12 Mar 2024
  • What is JSDoc and why you may not need typescript for your next project?
    8 projects | dev.to | 22 Jan 2024
    Besides the features TypeScript itself proposed, the most important thing it brought to the community was the ability to create cool features around this compiler that enhance the developer experience and productivity. Tools like tsserver, pretty ts errors, and many others are actively improving the ecosystem for both JavaScript and TypeScript writers.
  • A guide on Neovim's LSP client
    7 projects | dev.to | 13 Jan 2024
    Sometimes a language server can support multiple filetypes. An example of this is tsserver, the language server for javascript and typescript. In this case a filetype plugin can still work but there is an easier way to go about it.
  • Suspense your federated component with caution
    1 project | dev.to | 14 Oct 2023
    in this way the ts server can detect and parse the component from the microfronent, thanks to monorepos!
  • Let's write an Emacs treesitter major mode
    7 projects | news.ycombinator.com | 14 Sep 2023
    That was interesting, thanks for pointing it out

    I was tremendously sad to see that the Typescript Language Server wasn't owned by Microsoft <https://microsoft.github.io/language-server-protocol/impleme...>, since if there was any sanity in the world a spec bump would travel with a reference implementation showing how they envision such a thing being used

    But, I found that the Typescript Language Server that they did list does indeed have a semantic-tokens module in it, although it's much shorter than I would have expected from reading that section in the spec: https://github.com/typescript-language-server/typescript-lan...

  • How do I select which LSP is currently running?
    1 project | /r/HelixEditor | 17 Aug 2023
    I would like to use svelte language server when working on +page.server.ts files and not the typescript language server.
  • Formatting on save not working
    3 projects | /r/HelixEditor | 5 Jul 2023
    [[language]] name = "python" roots = ["pyproject.toml"] formatter = { command = "black", args = ["--quiet", "-"] } language-server = { command = "pyright-langserver", args = ["--stdio"] } config = {} auto-format = true [[language]] name = "rust" auto-format = true # [[language]] # name = "typescript" # auto-format = true # formatter = { command = "prettier", args = ["--parser", "typescript"]} # # pass format options according to https://github.com/typescript-language-server/typescript-language-server#workspacedidchangeconfiguration omitting the "[language].format." prefix. # config = { format = { "semicolons" = "insert", "insertSpaceBeforeFunctionParenthesis" = true } } [[language]] name = "tsx" formatter = { command = 'prettier', args = ["--parser", "typescript"] } auto-format = true [[language]] name = "javascript" auto-format = true formatter = { command = 'npx', args = ["prettier", "--config", ".prettierrc", "--parser", "javascript"] } # formatter = { command = "prettier", args = ["--parser", "javascript"]} [[language]] name = "css" formatter = { command = 'prettier', args = ["--parser", "css"] } [[language]] name = "markdown" # https://github.com/executablebooks/mdformat formatter = { command = "mdformat", args = ["-"] } [[language]] name = "json" formatter = { command = "prettier", args = ["--parser", "json"] } [[language]] name = "toml" auto-format = true # https://github.com/bd82/toml-tools/tree/master/packages/prettier-plugin-toml formatter = { command = "prettier", args = ["--parser", "toml"] } [[language]] name = "yaml" indent = { tab-width = 2, unit = " " } formatter = { command = "prettier", args = ["--parser", "yaml"] } [[language]] name = "astro" scope = "source.astro" injection-regex = "astro" file-types = ["astro"] roots = ["package.json", "astro.config.mjs"] language-server = { command = "astro-ls", args = ["--stdio"] } config = { "typescript" = { serverPath = "/Users/matteostara/.nvm/versions/node/v18.16.0/bin/typescript-language-server" }, "environment" = "node" }
  • Struggling with javascript completion with LSP
    2 projects | /r/emacs | 15 Jun 2023
    Depending on the language server version, you may be running into https://github.com/typescript-language-server/typescript-language-server/issues/631. I temporarily fixed it for me by simply sticking with an old enough server build, though judging by the latest typescript-language-server commits a very recent build from master should also work
  • There's another typescript LSP that wraps the official VSCode typescript extension and has almost the same features - vtsls
    6 projects | /r/neovim | 28 Apr 2023
    Before, I was using typescript-language-server as it is LSP compliant but it was slow and lacks the features of what VSCode's implementation has, like extracting functions, constants, types into interfaces or alias and single imports. Auto-completion was also not very predictive as sometimes it works and sometimes it doesn't. For instance, I was having trouble getting it to auto-complete common attributes like className or href in JSX projects. It could be that I may be doing something wrong but didn't find any solution on how to get it properly working.
  • What could cause my LSP to be so slow and sluggish? Takes anywhere from 1 to 8 seconds to show auto-completion results and hide/ unhide errors.
    7 projects | /r/neovim | 13 Apr 2023
    Then this is highly likely issue of typescript-language-server. You might consider opening an issue for it.

rust-analyzer

Posts with mentions or reviews of rust-analyzer. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-01-17.
  • rust-analyzer changelog #177
    1 project | /r/rust | 17 Apr 2023
    #14561 map tokens from include! expansion to the included file
  • Make LSP-Rust-analyzer works
    1 project | /r/neovim | 2 Mar 2023
    return { tools = { -- autoSetHints = false, on_initialized = function() vim.api.nvim_create_autocmd({ "BufWritePost", "BufEnter", "CursorHold", "InsertLeave" }, { pattern = { "*.rs" }, callback = function() vim.lsp.codelens.refresh() end, }) end, auto = false, inlay_hints = { -- Only show inlay hints for the current line only_current_line = false, auto = false, -- Event which triggers a refersh of the inlay hints. -- You can make this "CursorMoved" or "CursorMoved,CursorMovedI" but -- not that this may cause higher CPU usage. -- This option is only respected when only_current_line and -- autoSetHints both are true. only_current_line_autocmd = "CursorHold", -- whether to show parameter hints with the inlay hints or not -- default: true show_parameter_hints = false, -- whether to show variable name before type hints with the inlay hints or not -- default: false show_variable_name = false, -- prefix for parameter hints -- default: "<-" -- parameter_hints_prefix = "<- ", parameter_hints_prefix = " ", -- prefix for all the other hints (type, chaining) -- default: "=>" -- other_hints_prefix = "=> ", other_hints_prefix = " ", -- whether to align to the lenght of the longest line in the file max_len_align = false, -- padding from the left if max_len_align is true max_len_align_padding = 1, -- whether to align to the extreme right or not right_align = false, -- padding from the right if right_align is true right_align_padding = 7, -- The color of the hints highlight = "Comment", }, hover_actions = { auto_focus = false, border = "rounded", width = 60, -- height = 30, }, }, server = { --[[ $ mkdir -p ~/.local/bin $ curl -L https://github.com/rust-analyzer/rust-analyzer/releases/latest/download/rust-analyzer-x86_64-unknown-linux-gnu.gz | gunzip -c - > ~/.local/bin/rust-analyzer $ chmod +x ~/.local/bin/rust-analyzer --]] -- cmd = { os.getenv "HOME" .. "/.local/bin/rust-analyzer" }, cmd = { os.getenv "HOME" .. "~/.cargo/bin/rust-analyzer" }, on_attach = require("user.lsp.handlers").on_attach, capabilities = require("user.lsp.handlers").capabilities, settings = { ["rust-analyzer"] = { lens = { enable = true, }, checkOnSave = { command = "clippy", }, }, }, }, }
  • rust-analyzer changelog #164
    3 projects | /r/rust | 17 Jan 2023
    I would like changes like https://github.com/rust-analyzer/rust-analyzer/pull/13799 to be listed in 'Breaking Changes' category, to приманка draw the users' attention.
  • Mun v0.4.0 released
    4 projects | /r/rust_gamedev | 13 Dec 2022
    For those of you who haven’t heard of Mun before, Mun is an embeddable programming language empowering creation through iteration. The idea to create Mun originated out of frustration with the Lua dynamic scripting language and a desire to have similar hot reloading functionality available in Rust. As such, it’s not a direct competitor with Rust, but instead is intended to be used with Rust (or C/C++) as a host/embedded language pairing. Actually, Mun is completely written in Rust, building on similar crates as rust-analyzer and rustc. Its key features include:
  • rust-analyzer changelog #159
    2 projects | /r/rust | 12 Dec 2022
    #13728 upgrade chalk to make solver fuel work again (works around most trait solving hangs).
  • rust-analyzer changelog #147
    1 project | /r/rust | 19 Sep 2022
    #13221 (first contribution) add option to move lenses above doc comments (rust-analyzer.lens.location):
  • Does Rust need proc-macros 2.0?
    2 projects | /r/rust | 27 Jul 2022
    Rust-analyzer has a good overview: https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/dev/syntax.md
  • rust-analyzer changelog #134
    7 projects | /r/rust | 20 Jun 2022
    #12517 (first contribution) fix completion for methods in trait generated by macro.
  • LSP Rust Analyzer keeps telling me `Error NO_RESULT_CALLBACK_FOUND`
    3 projects | /r/neovim | 12 Jun 2022
    -- all the opts to send to nvim-lspconfig -- these override the defaults set by rust-tools.nvim -- see https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#rust_analyzer server = { -- on_attach is a callback called when the language server attachs to the buffer -- on_attach = on_attach, settings = { -- to enable rust-analyzer settings visit: -- https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/generated_config.adoc ["rust-analyzer"] = { -- enable clippy on save checkOnSave = { command = "clippy" }, assist = { importGranularity = "module", importPrefix = "self", }, cargo = { loadOutDirsFromCheck = true }, procMacro = { enable = true }, } } },
  • rust-analyzer changelog #130
    2 projects | /r/rust | 23 May 2022
    #12349 publish universal VSIX to make Code happy.

What are some alternatives?

When comparing typescript-language-server and rust-analyzer you can also consider the following projects:

deno - A modern runtime for JavaScript and TypeScript.

vscode-rust - Rust extension for Visual Studio Code

nvim-lspconfig - Quickstart configs for Nvim LSP

Clippy - A bunch of lints to catch common mistakes and improve your Rust code. Book: https://doc.rust-lang.org/clippy/

null-ls.nvim - Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.

intellij-rust - Rust plugin for the IntelliJ Platform

nvim-lsp-ts-utils - Utilities to improve the TypeScript development experience for Neovim's built-in LSP client.

rustfmt - Format Rust code

nvim-lspinstall - Provides the missing :LspInstall for nvim-lspconfig

eglot - A client for Language Server Protocol servers

TypeScript - IO wrapper around TypeScript language services, allowing for easy consumption by editor plugins

rust - Empowering everyone to build reliable and efficient software.