Does a language server replace ALE, syntastic, and the language plugin?

This page summarizes the projects mentioned and recommended in the original post on /r/neovim

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • nvim-treesitter

    Nvim Treesitter configurations and abstraction layer

  • For syntax highlighting, you only need one plugin and that is the nvim-treesitter it has a growing list of languages with great looking syntax highlighting. But don't be fooled, treesitter can do much more than that but for this post I'll just mention it's syntax highlighting capabilities.

  • nvim-cmp

    A completion plugin for neovim coded in Lua.

  • But for autocompletion there is plenty to choose from but nvim-cmp has been the most popular one. This will have more code to write for the setup (not challenging per say) but just following the recommended setup would be all you need to get started.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • kickstart.nvim

    A launch point for your personal nvim configuration

  • I recommend looking at kickstart.nvim . It's a good starting place

  • nvim-lspconfig

    Quickstart configs for Nvim LSP

  • For the alternatives, since nvim already comes with a built-in lsp client all you need is some configuration. This is provided by nvim-lspconfig. With a little bit of lua code for the setup you'll be all set to use the lsp client with the language server of your choice.

  • nvim-lint

    An asynchronous linter plugin for Neovim complementary to the built-in Language Server Protocol support.

  • For linting, I would recommend nvim-lint. Again the same step as before, a little bit of setup code to register your linter and you're good to go!

  • formatter.nvim

  • For formatting, formatter.nvim is a good choice and has similar setup to nvim-lint.

  • null-ls.nvim

    Discontinued Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua.

  • However, if you want one tool to do both linting and formatting you can look to null-ls.nvim which is the most popular but is a language server itself that runs the linter/formatter as an lsp server.

  • 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.

    InfluxDB logo
  • lsp-zero.nvim

    A starting point to setup some lsp related features in neovim.

  • Finally, you could go a little bit further and check out lsp-zero.nvim which does all the boilerplate setup for: nvim-lspconfig, null-ls and nvim-cmp, so you won't have to manually write setup code for each respective plugin and therefore just gets you up and running with your development instead of being stuck configuring nvim like I do almost everyday.

  • mason.nvim

    Portable package manager for Neovim that runs everywhere Neovim runs. Easily install and manage LSP servers, DAP servers, linters, and formatters.

  • So you will need to install black on your system (there is another plugin that helps install such tools and language servers called mason.nvim, but that's a rabbit hole for another day haha).

  • python-lsp-server

    Fork of the python-language-server project, maintained by the Spyder IDE team and the community

  • Another example, you can setup python-lsp-server with nvim-lspconfig (lsp server also needs to be installed globally or in virtualenv) and they have a plugin for black which you can then install in the same virtualenv and just use lsp to format the code instead of formatter.nvim.

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts