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
autocompletelanguage-server-protocollanguageclientlinterlualua-pluginneovimneovim-pluginsyntax-checkervimvim-pluginvim-plugins
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