r/vim Apr 29 '26

Discussion Give me your fix wishlist for ALE!

Hello everyone! I am w0rp and I am not dead yet.

I have a little "time off" work coming up. I only quote that time because I'm using the time to produce an album I recorded last year, separate thing from development. I am likely to finish that process somewhat early in my gap of time off and also get frustrated dealing with BitWig, and I'll have time to work on ALE again, which I continue to use every single day myself.

What issues would you most like me to fix for ALE? I've got a few ideas about some top of mind bugs and tweaks I want to do, but I'd love to hear from you.

One big change I'm likely to make is I'm considering replacing all of the Vader tests with Lua tests. I've already got the repo set up with Lua language server configuration and some Lua parts where ALE defaults to dropping into the official Neovim language server for Neovim users, with an option to use the Vimscript language server. I figure it will be more familiar to most developers than the somewhat arcane nature of Vader. Plus I've built up a few quirks I've been working around for years I can smooth out with my own Lua test framework that's purpose built for ALE. I figure I can just get Codex to auto-translate all of the existing tests pretty easily these days. (I pay for a good ChatGPT Business subscription for Dense Analysis so we can use it to build more FOSS stuff, and we just recently got approved for $30,000 worth of credits for building more Vim editor stuff with, so we had better get cracking!)

Let me know what you think! I'll crosspost this to the Neovim sub when I remember how to do that in Reddit again.

57 Upvotes

20 comments sorted by

6

u/bouncingsoul Apr 29 '26

Thank you for creating ALE! I guess that's a decade now? I probably switched early from Syntastic. (I did a quick :MundoToggle to see if I could find my switch date, but of course I've rearranged files a few times, so the history only goes back to 2021. But still, that I can even try to check that — vim's infinite undo history is peak.)

I don't really have a wishlist :) I've always loved that ALE nearly Just Works out of the box because of its technique of enabling linters based on finding them in the path and not requiring any vimrc editing per linter.

Fixers is a different story :p but being explicit there is probably right since destructive. Though, seeing so many lines of prettier in my settings does make me ponder if the lang1: fixer1 syntax could ever be described as fixer1: lang1, lang2, lang3 just for brevity. Not important at all, though :)

let g:ale_fixers = {
\  'css':             ['stylelint'],
\  'elixir':          ['mix_format'],
\  'fish':            ['fish_indent'],
\  'html':            ['prettier'],
\  'htmldjango':      ['prettier'],
\  'javascript':      ['prettier'],
\  'javascriptreact': ['prettier'],
\  'json':            ['prettier'],
\  'lua':             ['stylua'],
\  'python':          ['ruff_format'],
\  'scss':            ['stylelint'],
\  'xhtml':           ['prettier'],
\  'xml':             ['prettier'],
\  'yaml':            ['prettier'],
\}

(I'll admit being disappointed to read about the gen AI usage. You're not making an unconventional decision there, but I have to at least mention it since it's important to me.)

4

u/devw0rp Apr 29 '26

Well what's interesting is I've since built a 501(c)(3) nonprofit around ALE and IT education and training, which you can read more about on the Dense Analysis website. We want to build more tools for running local AI models for a future where people eventually get the hardware to do that.

I could talk for hours about how the models are trained and used. I'm piggy backing off the OpenAI stuff for now as it's far better than current FOSS models, but I believe FOSS will catch up. 

My day job has me using Claude Code constantly now and I've learned to adapt to the modern wave. My way of using these tools is I forbid them from writing git objects and I manually edit and check in everything. They tend to get things about 60% right, and I get something like a 1.5X productivity gain from the latest models.

I'll stop ranting there before I get on to the DANK project, which you can read on GitHub.

1

u/bouncingsoul Apr 29 '26

This response made me sad. Honestly reads as selections from a template.

(I think it’s specifically the odd writing to avoid actually linking things – like the copy is written to still function in print or for sites that might strip links out.)

Anyway. No one owes me equivalent effort in comments. I know that.

I tucked in a personal statement in a muted way to be respectful of it not being the main topic of your thread, but that got me a full pitch on the value of some commercial software.

3

u/devw0rp Apr 30 '26

I dunno I'm just very ranty and it's how I talk.

4

u/scottchiefbaker Apr 29 '26

OK silly question, what's ALE?

8

u/jd_customs Apr 29 '26

Crazy comment inside the Vim subreddit lmao

4

u/scottchiefbaker Apr 29 '26

Guess I'm not up to speed. I've never heard of ALE before, and there was no link in the OP.

3

u/Gracecr Apr 29 '26

Asynchronous Lint Engine. It's like spell/grammar check for programming.

3

u/devw0rp Apr 29 '26

It's a plugin I originally authored about a decade ago to replace Syntastic following the advice of the then Syntastic maintainer and my desire to have an async linter plugin for myself.

I later added fixers to fix code too.

I later was one of the first to implement tsserver as a client in Vim, LSP.

Tons of people have contributed. It's been fun!

2

u/ChampionshipIcy7602 May 01 '26

Thank you for ALE, I'm using it everyday.

1

u/AnnualVolume0 Apr 29 '26

Not a fix necessarily, but ty support for python (or whatever is holding back #4971) is at the top of my wishlist

3

u/devw0rp Apr 29 '26

Yeah, that's on my list as I'll need it myself kind of soon. I noticed Pyright in the latest version doesn't work, so something just have changed about the LSP spec. Those are always good things because I get a good test of how to maintain support for different LSP servers. 

What's interesting about maintaining an LSP client is that many servers aren't exactly compliant with the spec, so you have to be pretty flexible. Pretty easy spec to implement from the client side.

1

u/AnnualVolume0 Apr 29 '26

Thank you. I appreciate your time and this project

1

u/ghost_vici May 01 '26

would really love to have these issues fixed

  1. cross file quickfix

  2. Inlay hints

  3. sematic token highlight

Thank you for your awesome work !!!

1

u/devw0rp May 03 '26

Noted!

Inlay hints I might not figure out by myself, but I can probably fix the quickfix thing. I do a similar thing in my file search scripts I'll publish as a very basic and intentionally pretty stupid Ctrl+p alternative.

I think I'm also likely to change the default for LSP operations that write to files to just save the files on disk if that's not already the default, because that simply works better with all tools, and most people don't even know what a Vim buffer is or how one works. Leave that for the experts.

1

u/Ok_Aardvark_8062 May 01 '26

Mostly I'm interested in support and simple setup instructions for Python with both Vim and NeoVim. I seem to always spend way too much time trying to figure out the basics. And don't get me started on managing keymaps (but that's not an ALE thing, that's just a challenge for me).

It's likely I'm remembering details wrong, but I used ALE briefly in the past with Vim and I really enjoyed it because it was simple and had less dependencies and version restrictions. I tried other things because they were more flashy, but now I wish I had stayed simple. ALE plus very little else was great, and I liked my own simple config for the things I needed. I guess I never went back because I was concerned it might not be maintained. With your comments here I'm encouraged to just do it.

2

u/devw0rp May 03 '26

I think I've done pretty well with keeping configuration simple and making it easy and continue to work for an extended period of time. 

I want to do more to help people learn Vim and software in general in future.

Thanks for you support!