📈 GH Trending Explorer 🎲 Surprise me

← all repos

dense-analysis / ale

git clone https://github.com/dense-analysis/ale.git v4.0.0 · 1y ago 🔥 on GitHub Trending today

Check syntax in Vim/Neovim asynchronously and fix files, with Language Server Protocol (LSP) support

—
stars, 24h
—
stars, 7 days
+23
stars, 30 days · #9,947
14k
★ total
1.5k
forks · 591 open issues

Star history starts 2026-10-20; the chart appears after the second daily snapshot.

LanguageVim Script
LicenseBSD-2-Clause
Created2016-09-08 (10y ago)
Last pushtoday
Watchers86
OwnerOrganization

Seen on GitHub Trending

  • 2026-10-20 — #10 monthly in vim-script · +23 ★

GitHub topics

Links

README excerpt
# Asynchronous Lint Engine
ALE (Asynchronous Lint Engine) is a plugin providing linting (syntax checking
and semantic errors) in Neovim 0.7.0+ and Vim 8.2+ while you edit your text files,
and acts as a Vim Language Server Protocol client.
ALE makes use of Neovim and Vim 8 job control functions and timers to
run linters on the contents of text buffers and return errors as
text is changed in Vim. This allows for displaying warnings and
errors in files being edited in Vim before files have been saved
back to a filesystem.
In other words, this plugin allows you to lint while you type.
ALE offers support for fixing code with command line tools in a non-blocking
manner with the `:ALEFix` feature, supporting tools in many languages, like
`prettier`, `eslint`, `autopep8`, and more.
ALE acts as a "language client" to support a variety of Language Server Protocol
features, including:
* Diagnostics (via Language Server Protocol linters)
* Go To Definition (`:ALEGoToDefinition`)
* Completion (Built in completion support, or with Deoplete)
* Finding references (`:ALEFindReferences`)
* Hover information (`:ALEHover`)
* Symbol search (`:ALESymbolSearch`)
If you don't care about Language Server Protocol, ALE won't load any of the code
for working with it unless needed. One of ALE's general missions is that you
won't pay for the features that you don't use.
**Help Wanted:** If you would like to help maintain this plugin by managing the
many issues and pull requests that are submitted, please send the author an
email at dev@w0rp.com.
If you enjoy this plugin, feel free to contribute or check out the author's
other content at w0rp.com.
## Why ALE?
ALE has been around for many years, and there are many ways to run asynchronous
linting and fixing of code in Vim. ALE offers the following.
* No dependencies for ALE itself
* Lightweight plugin architecture (No JavaScript or Python required)
* Low memory footprint
* Runs virtually everywhere, including remote shells, and in `git commit`
* Out of the box support for running particular linters and language servers
* Near-zero configuration with custom code for better defaults
* Highly customizable and well-documented (`:help ale-options`)
* Breaking changes for the plugin are extremely rare
* Integrates with Neovim's LSP client (0.8+) and diagnostics (0.7+)
* Support for older Vim and Neovim versions
* Windows support
* Well-integrated with other plugins
## Sponsorship
If you would like to donate to Dense Analysis to say thank you for ALE, please
consider visiting our Sponsorship page.
Funds will be used to pay for our hosting fees and research. Whilst visiting our
site, please feel free to make use of our educational resources and other
recommended tools.
## Supported Languages and Tools
ALE supports a wide variety of languages and tools. See the
full list in the
Supported Languages and Tools page.
## Usage
### Linting
Once this plugin is installed, while editing your files in supported
languages and tools which have been