HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
dense-analysis
ale
Vim Script2017–2025
dense-analysis / ale

ale

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

34Distinct people
41Mentions
1Explicit recommenders
14KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

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

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

Close but not close enough. For example: in VSCode you can select/hover over any expression and it’ll tell you the computed TypeScript type. None of the current language server…

dmitryminkovsky used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

Mentioned in the same Hacker News threads. That is not proof they are substitutes.

This week on Hacker News

Nov 8–Nov 15 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/15/2026, 9:28:18 AM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year41 dated mentions

Observed mentions: 2017-01-02 16:20:59 UTC to 2025-07-22 04:34:22 UTC.

02468102017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 3 mentions; 2 submissions, 1 comments20172018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 4 mentions; 0 submissions, 4 comments2019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 7 mentions; 0 submissions, 7 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 9 mentions; 1 submissions, 8 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments20212022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 8 mentions; 1 submissions, 7 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC321
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC404
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC707
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC918
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC202
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC817
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC505
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC202
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

7 sources
The ALE [1] project. Not only for it's being a vim plugin, but because they have a pretty comprehensive list [2] of linters per programming language / tools; If I have to edit some ruby / terraform / go code tomorrow, which I never did before, I don't need to do much research ALE takes care of it and helps me learn better the best practices. [1]: https://github.com/dense-analysis/ale [2]: https://github.com/dense-analysis/ale/blob/master/supported-...
In Ask HN: What’s your favorite developer tool of all time and why?
Vim's included Python support already does language-specific stuff like syntax highlighting and indenting. I think people use Jedi for autocomplete; I've never used it. I'm one of the "computing for the apocalypse" people who try and configure things as little as possible, but I'm really attached to linting in Vim, and I use ALE [1] for this. AIUI it's the standard for asynchronous linting; Syntastic is the synchronous version, but the lag is juuuust a little too much for me. netrw (Vim's included file browser plugin) has a lot of bugs on macOS, so I use NERDtree there, but have been thinking about looking around at nnn, defx, vim-netranger, etc. Other than that, Vim has a lot of powerful configuration. It's worth looking around and fixing any immediate pain points you have; odds are there's an option that does what you want. Three ch
Read the rest
eers for mature software! [1]: https://github.com/dense-analysis/ale
In Vim 8.2
Language servers are very exciting for me. This past summer I finally installed ALE [0] and it drastically improved my experience and code quality in JS. The live in-editor linting with eslint and formatting with prettier is awesome (and these aren’t even language servers, ALE just uses them as “fixers” and “linters”). So many people denigrade these things as “crutches” for bad programming languages or underdeveloped skills, but I don’t know how you can beat getting live feedback as you type. We are mere mortals! If you don’t have something like ALE installed and you use Vim, you won’t regret the time spent getting it up and running. [0] https://github.com/w0rp/ale
In Coc.nvim – Intellisense Engine for Vim8 and Neovim
Yes! So much yes. Many developers write crappy Bash scripts because they don't see it as a real language, but it's an interpreted language just like Ruby, Python, Perl, etc. If you're going to design modular libraries and scripts with best practices, unit tests, etc, for those languages, then you should be doing the same with Bash. If you're writing production scripts using Bash, you should be following software best practices - don't give me any "it's just Bash" excuses. Mocking In addition to bats-mock (part of the bats library in the article), there is another mocking approach: https://pbrisbin.com/posts/mocking_bash/ They both have their uses. Documentation NaturalDocs ( https://www.naturaldocs.org/ ) can happily parse & extract doc comments from your bash scripts & libraries: https://www.naturaldocs.org/ Just define your own language
Read the rest
: https://www.naturaldocs.org/reference/languages.txt/#adding_... Format: 1.4 Language: bash Shebang Strings: bash Extensions: bash sh Ignore Extensions: bats Line Comments: # Linting Use shellcheck, it's amazing: https://www.shellcheck.net/ If you use Vim, w0rp/ale knows how to integrate with it for real-time feedback: https://github.com/w0rp/ale/tree/master/ale_linters/sh Argument Parsing Use Docopt ( http://docopt.org/ ) to get modern arg-parsing in your Bash scripts. Don't waste your time trying to roll your own or use the built-in anemic arg-parsing. Shells implementation: https://github.com/docopt/docopts Use Bash built-ins Stop invoking external processes for features already available in Bash: https://github.com/dylanaraps/pure-bash-bible More good resources: * http://www.tldp.org/LDP/abs/html/ * https://www.gnu.org/software/bash/manual/bashref.html * http://mywiki.wooledge.org/BashGuide BUT why are you using Bash? Go use a modern language and don't suffer the idiosyncrasies of Bash where you have to re-invent many common libraries already available like JSON parsers, etc. My favorite Bash replacement is Python + Plumbum: https://plumbum.readthedocs.io/en/latest/ All the convenience of Bash when invoking commands (no more subprocess()!) with the joy of Python.
In Testing Bash with BATS

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.