Harper is a language server, however unlike most language servers it is specific for programming language. It is for written text. I've been living with vim and neovim's inbuilt spell checker for years. When I looked up spell checkers for vim I found a bunch of articles talking about vim's built-in solution how you just had to do
set spell
set spelllang=en_us
and congrats you had spell check!. I loved it It was also easy to interact with z= and zw was pretty much all you needed to know. However, it wasn't perfect. I was not context aware. I absolutely suck at spelling, so context aware spell checkers are a lifesaver. Yet the built-in one wasn't context aware.
I found out about cspell, a spell checker for code. I used it in vscode but I found it to be more "annoying" then helpful. It struggled with variable names and accepting corrections just wasn't intuitive. I wanted more out of spell checker but nothing seemed to provide it. Then when I was looking for an alternative to cspell I came across Harper. I was instantly attracted when I saw its statements about privacy being local first and being faster than Grammarly!
Harper being supported on pretty much every editor was what sold it for me!. It just made sense to use it. I installed it via mason and integrated it into my lsp array. I initially had some issues with hover-lsp support, however I just disabled hover-lsp for harper. I really do think this would be a cool feature to enable in the LSP but that'll be a future hacking session if someone doesn't do it first. I do also need to look into integrating it into @milkdown/crepe since that's what I use as an editor on my blog.
I hope that Harper makes other's realize we need to get make spell checker's better. The ecosystem is prime for upheaval, if you want a project that has potential for changing the ecosystem, make a spell checker that's as light weight as Harper but package-able on Linux distros. It would for lack of a less cliched phrase "change the world"










