76 lines
2.1 KiB
EmacsLisp
76 lines
2.1 KiB
EmacsLisp
|
;;; livedown.el --- Realtime Markdown previews for Emacs.
|
||
|
|
||
|
;; Copyright (C) 2014-2016 Hrvoje Simic
|
||
|
|
||
|
;; Author: Hrvoje Simic <hrvoje@twobucks.co>
|
||
|
;; Version: 1.0.0
|
||
|
;; Keywords: markdown, preview, live
|
||
|
;; URL: https://github.com/shime/emacs-livedown
|
||
|
|
||
|
;;; Commentary:
|
||
|
|
||
|
;; Realtime Markdown previews for Emacs.
|
||
|
|
||
|
;;; Code:
|
||
|
|
||
|
(defgroup livedown nil
|
||
|
"Realtime Markdown previews"
|
||
|
:group 'livedown
|
||
|
:prefix "livedown-")
|
||
|
|
||
|
(defcustom livedown-port 1337
|
||
|
"Port on which livedown server will run."
|
||
|
:type 'integer
|
||
|
:group 'livedown)
|
||
|
|
||
|
(defcustom livedown-open t
|
||
|
"Open browser automatically."
|
||
|
:type 'boolean
|
||
|
:group 'livedown)
|
||
|
|
||
|
(defcustom livedown-browser nil
|
||
|
"Open alternative browser."
|
||
|
:type 'string
|
||
|
:group 'livedown)
|
||
|
|
||
|
(defcustom livedown-autostart nil
|
||
|
"Auto-open previews when opening markdown files."
|
||
|
:type 'boolean
|
||
|
:group 'livedown)
|
||
|
|
||
|
;;;###autoload
|
||
|
(defun livedown-preview ()
|
||
|
"Preview the current file in livedown."
|
||
|
(interactive)
|
||
|
|
||
|
(call-process-shell-command
|
||
|
(format "livedown stop --port %s &"
|
||
|
livedown-port))
|
||
|
|
||
|
(start-process-shell-command
|
||
|
(format "emacs-livedown")
|
||
|
(format "emacs-livedown-buffer")
|
||
|
(format "livedown start %s --port %s %s %s "
|
||
|
buffer-file-name
|
||
|
livedown-port
|
||
|
(if livedown-browser (concat "--browser " livedown-browser) "")
|
||
|
(if livedown-open "--open" "")))
|
||
|
(print (format "%s rendered @ %s" buffer-file-name livedown-port) (get-buffer "emacs-livedown-buffer")))
|
||
|
|
||
|
;;;###autoload
|
||
|
(defun livedown-kill (&optional async)
|
||
|
"Stops the livedown process."
|
||
|
(interactive)
|
||
|
(let ((stop-livedown (if async 'async-shell-command 'call-process-shell-command)))
|
||
|
(funcall stop-livedown
|
||
|
(format "livedown stop --port %s &"
|
||
|
livedown-port))))
|
||
|
|
||
|
(if livedown-autostart
|
||
|
(eval-after-load 'markdown-mode '(livedown-preview)))
|
||
|
|
||
|
(add-hook 'kill-emacs-query-functions (lambda () (livedown-kill t)))
|
||
|
|
||
|
(provide 'livedown)
|
||
|
;;; livedown.el ends here
|