Language Server Protocol Launched a Golden Age of Editors
Microsoft developed Language Server Protocol ("LSP") a few years ago to make it easier to add support for new languages to VS Code. Lots of smart people have written interesting things about LSP and I don't want to rehash all that, but in summary: it gives people who like using a computer language a standard way to tell VS Code how to work with it.
Other apps can support LSP, too. Emacs users wrote a couple of different ways to connect those nifty new language servers to their favorite editor. Voila! Now Emacs has delightful support for every language that VS Code knows how to edit. So does Vim. And now, so do Nova and even the venerable BBEdit.
That last one blew me away. I'd seen it from a distance over the years. It's impossible to use a Mac as a professional developer without at least being aware that it exists. BBEdit always struck me as a very neat, but very dated, niche editor that people kept using because they were too stubborn to switch. Oh, how wrong I was. I downloaded a copy a couple of weeks ago to kick the tires and found that since it can speak LSP, it might be the best programming environment I've ever used on my Mac. ("How's its Python? Whoa! Is it that good with Rust? Whoa! How about… Terraform files? WHOA!") 30 years of development as a text editor, plus all the effort that programming language users put into giving LSP broad and deep language support, yielded something that has incredible text mangling abilities and cutting-edge programming features. I love it. I've been trialing it as my main editor since then, and every day I appreciate it more.
I think we're in a new golden age of programming editors. Now that any editor which can use LSP competes on a level playing field, the real competition is in subjective areas like the user interface, responsiveness, ergonomics, and extra functionality. Thanks to VS Code, those Mac-assed Mac apps redefine what developing software on a Mac can be like, and I couldn't be more pleased with my options.