Using Marked in Emacs

Brett Terpstra makes some great tools, and gives away many of them for nothing. So, I’m very happy to return a small amount by paying for Marked, his great tool for previewing Markdown files. The preview auto-updates with each save, and the new version validates external links and provides a wealth of useful statistics about the document.

I have been calling Marked from Emacs using this function that I found in various places on the internet:

   ;; C-c m previews Markdown files in marked     (defun markdown-preview-file ()  n        "run Marked on the current file and revert the buffer"  n        (interactive)  n        (shell-command  n        (format "open -a /Applications/Marked.app %s"  n           (shell-quote-argument (buffer-file-name))))  n   )  n   (global-set-key "C-cm" 'markdown-preview-file)

With the most recent update, the application name changed from “Marked” to “Marked 2”—a small change that broke the function. That should be easy enough to fix, though. So, I changed the application name, and escaped the space with a backslash:

    (format "open -a /Applications/Marked 2.app %s"n

The open command worked fine from the terminal, but when I tried it from Emacs, I got the following error message:

FSPathMakeRef(/Applications/Marked2.app) failed with error -43.

Notice that there’s no space between “Marked” and the “2,” and as much as I tried, I couldn’t call the application. It turns out that, although the shell requires escaping the space with a backslash, Lisp requires escaping the backslash with another backslash. So, two slashes fixed the problem:

    (format "open -a /Applications/Marked 2.app %s"n

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s