A collection of ready-made Language Server Protocol configurations for connecting Neovim to many programming language servers.
dense-analysis/ale
A Vim and Neovim plugin that lints code asynchronously while you type, runs fixers like prettier and eslint, and acts as an LSP client.
- Stars
- 14,025
- Forks
- 1,487
- Open issues
- 591
- Last commit
- 18 days ago
What is it?
ALE (Asynchronous Lint Engine) is a plugin for Neovim 0.7+ and Vim 8.2+ that checks syntax and semantic errors in text files while you edit them. Linters run in the background on buffer contents, so problems appear before the file is saved, and the editor stays responsive during checks.
Beyond linting, ALE runs command-line formatters and fixers non-blockingly through the :ALEFix command, with tools such as prettier, eslint and autopep8. It also acts as a Language Server Protocol client, providing diagnostics, go-to-definition, find references, hover, symbol search, rename and code actions, plus built-in or nvim-cmp/Deoplete-based completion.
ALE is written in Vim script with no external runtime dependencies, and it only loads the LSP code when it is needed. It can be installed through common plugin managers or by cloning into the Vim package directory.
Key features
- 01Runs linters asynchronously on buffer contents while you type
- 02Fixes files with command-line tools such as prettier and eslint via :ALEFix
- 03Acts as an LSP client for diagnostics, go-to-definition and references
- 04Provides hover, symbol search, rename and code actions
- 05Works in both Vim 8.2+ and Neovim 0.7+ with no external dependencies
Use cases
- Seeing lint errors in Vim or Neovim before saving a file
- Auto-formatting JavaScript or Python files on save with prettier or autopep8
- Getting LSP features like go-to-definition in a terminal-based editor setup
Quick start
- 1
Create the Vim package directory
mkdir -p ~/.vim/pack/git-plugins/start - 2
Clone ALE into the package directory
git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.vim/pack/git-plugins/start/ale
Things to know
- Requires Vim 8.2+ or Neovim 0.7+.
- Linters and fixers must be installed separately before ALE can use them.
In collections
Topics
FAQ
- What is ale?
- A Vim and Neovim plugin that lints code asynchronously while you type, runs fixers like prettier and eslint, and acts as an LSP client. ALE (Asynchronous Lint Engine) is a plugin for Neovim 0.7+ and Vim 8.2+ that checks syntax and semantic errors in text files while you edit them. Linters run in the background on buffer contents, so problems appear before the file is saved, and the editor stays responsive during checks.
- Is ale free to use? What license does it have?
- ale is open source under the BSD-2-Clause license. Check the license terms before using it in commercial products.
- Is ale still maintained?
- Actively maintained. The last commit to ale was on Oct 20, 2026.
- What can I use ale for?
- Seeing lint errors in Vim or Neovim before saving a file Auto-formatting JavaScript or Python files on save with prettier or autopep8 Getting LSP features like go-to-definition in a terminal-based editor setup
- How do I install ale?
- Create the Vim package directory: mkdir -p ~/.vim/pack/git-plugins/start Clone ALE into the package directory: git clone --depth 1 https://github.com/dense-analysis/ale.git ~/.vim/pack/git-plugins/start/ale
- Where can I get ale?
- The source code and installation instructions are on GitHub: https://github.com/dense-analysis/ale
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A lightweight, extensible statusline and tabline plugin for Vim that shows mode, git status, file info and position.
A command-line tool that removes unused imports and unused variables from Python code, using pyflakes to find them.
A Python tool and pre-commit hook that automatically adds trailing commas to multi-line calls, literals, and definitions.
An open-source framework in TypeScript for building browser-based and desktop IDEs and developer tools.
Emacs client for the Language Server Protocol, adding IDE-style completion, diagnostics, navigation and refactoring to Emacs.