UNIX way to live preview AsciiDoc
21 Jun 2015AsciiDoc is a nice markup language and I am slowly migrating my documents from various flavours of Markdown to the AsciiDoc.
For converting I prefer AsciiDoctor. Ruby AsciiDoctor implementation seems more robust and modern than original Perl implementation. I edit AsciiDoc documents in TextMate with a AsciiDoc-TextMate-2 plugin. It is a fork of great plugin by mattneub and it is slightly modified for my demands (syntax, AsciiDoctor support).
There are three ways to get a HTML webpage from the document:
-
Launch a command to get a
notes.html
file:asciidoctor notes.adoc
-
Use Ctrl+Shift+H shortcut to regenerate html from the current document.
-
Use a live reload preview feature.
I love an idea of a live preview and I am using it at my LaTeX workflow.
Official documentation suggests several ways to track changes in editing document and reload a browser. They seems a little complex and insecure for me (browser extensions) so I used a simple shell command:
fswatch -o notes.adoc | xargs -L1 sh -c "asciidoctor notes.adoc && chrome-cli reload"
Utility fswatch is a cross-platform wrapper for file notifications. Each
file change is propagated to the asciidoctor
command and then to the
chrome-cli utility (AppleScript chrome wrapper) that reloads a current tab
emits characters for each file change. That is it. You launch a command in a shell only when you need it and then
terminate with Ctrl+C
.
The best way may be an active browser reloading from TextMate plugin using chrome-cli command but it is not very portable between browsers. Unfortunately built-in open
command (xdg-open
analogue) does not know about browser internals and cannot reload a tab or even open document in a current tab.