Skip to content

Instantly share code, notes, and snippets.

@league
Created May 22, 2017 12:17
Show Gist options
  • Save league/4fa6cf650503f6e472702abde4ad045e to your computer and use it in GitHub Desktop.
Save league/4fa6cf650503f6e472702abde4ad045e to your computer and use it in GitHub Desktop.
(defvar cl/message-pandoc-command
(concat
"pandoc --smart --template=email -r markdown_github -w html5"
" | premailer --remove-classes"))
(defun cl/message-multipart-pandoc-preview ()
"Preview message buffer rendered with pandoc and web browser."
(interactive)
(save-excursion
(message-goto-body)
(let* ((start (point))
(default-directory temporary-file-directory)
(tmp-buff "*pandoc-preview*"))
(save-window-excursion
(cl/mml-next-part)
(shell-command-on-region start (point) cl/message-pandoc-command
tmp-buff)
(browse-url-of-buffer tmp-buff)))
(message "Message preview now available in browser.")))
(defun cl/message-multipart-pandoc ()
"Use pandoc to format a multipart/alternative message."
(interactive)
(save-excursion
(message-goto-body)
(let* ((start (point)) last-command end)
(cl/mml-next-part)
(kill-region start (point))
(goto-char start)
(insert "<#multipart type=alternative>\n")
(yank)
(insert "<#part type=text/html charset=utf-8>\n")
(setq start (point))
(yank)
(setq end (point))
(insert "\n<#/multipart>\n")
(unless
(= 0 (shell-command-on-region
start end cl/message-pandoc-command t t))
(error "pandoc returned error")))))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment