vim-classic: Long-term maintenance of Vim 8.x

92 points by Aks


dzwdz

See also Drew's announcement blogpost.

I submitted this repo here earlier today... and immediately removed it, because 1. I didn't want to deliberately avoid Drew's domain ban, 2. I realized I was being a bit hypocritical, because when EVi was posted here I agreed with the top comment there saying that forking news should be put on cooldown - and vim-classic was literally born today.

That being said - I'm much more optimistic about this than about EVi. I trust Drew to do a good job here, and I think basing it on Vim 8.2 is a good idea. I messed around with it a bit, and it doesn't seem like the lack of Vim9 script breaks too much - in particular vim-fugitive and fzf.vim[1] work just fine. The thing I miss most from Vim9 are the new colorschemes, but they'll probably (?) be included in Vim Classic down the road too (Drew doesn't seem opposed to Vim9, he's just pulling in its changes piecemeal).

[1] Drew's article points it out as the only plugin he was using that broke - but that's not really correct. It's working fine, just hitting a fallback compatibility mode that makes it work as it did in 2020, before Vim got popup window support. But that's irrelevant anyways; I have a personal branch with the few extra patches needed to make it work exactly as it does on modern Vim. I'm hoping Drew will upstream it soon.


As a sidenote: I looked through all the commits that were cherry-picked on top of Vim 8.2. Most of them are memory safety fixes... and, uh, they also tend to be kinda janky. For example, 8.2.3402 fixes an invalid memory access that happens when you manage to set your tabstop width to a negative value. It doesn't do that by actually fixing the function where that out-of-bounds read happens, but by ensuring the tabstop width is between 0 and 9999. The actual bug's still there (even if the out-of-bounds read seems pretty benign).