Panic’s Nova text editor is closer to an integrated development environment (IDE), in the vein of Xcode, than an extensible text editor like Sublime Text. In addition to editing text, it can interact with the Git version control system, display errors found in source files, preview websites, and define custom build systems. While Sublime Text can do those things, they require interacting with the command palette and generally don’t draw custom UI, so they just open a new text window to display results. Nova feels like the spiritual successor to Panic’s earlier text editor, Coda, but with a more modern workflow for building complex projects and managing open files and window panes.
The workflow for making quick updates to this website is ideal: edit the Markdown file, hit ⌘B to rebuild, and then preview the changes in its built-in web server. It would be nice if previews could automatically refresh on build tasks, but I filed that feature request a few months ago and haven’t heard back about it. In fact, I’ve recently stopped receiving responses when submitting both problem reports and new feature requests, which is concerning. One bug that really bothers me is whenever I’m typing and using shortcuts involving the command key, it will randomly highlight whatever word my pointer happens to be under, even if the pointer is hidden due to the start of typing.
Regardless, I’m using it more frequently now that it has support for language servers, which are somewhat interchangeable plugin systems for finding function definitions and seeing errors inline with source code. I use two big extensions for working in Go and Rust and a few smaller ones that only provide syntax highlighting for languages that aren’t built-in, like Makefile, ENV, Dockerfile, and Jinja2.
With a Git difftool set to a graphical program like Kaleidoscope, add a build task to display the diff of the currently-open file. In the build task configuration, make sure the provided argument is the currently-open file by selecting it from the blue asterisk icon to the right of the argument entry text field. The resulting script is simply:
#!/bin/sh git difftool -- "$1"