|
|
|
@ -27,17 +27,26 @@
|
|
|
|
|
(require 'websocket) |
|
|
|
|
(require 'markdown-mode) |
|
|
|
|
|
|
|
|
|
(defgroup markdown-preview-mode nil |
|
|
|
|
(defgroup markdown-preview nil |
|
|
|
|
"Markdown preview mode" |
|
|
|
|
:group 'text |
|
|
|
|
:prefix "mdpm:") |
|
|
|
|
:prefix "mdpm:" |
|
|
|
|
:link '(url-link "https://github.com/ancane/markdown-preview-mode")) |
|
|
|
|
|
|
|
|
|
(defcustom markdown-preview-port 7379 |
|
|
|
|
"Markdown preview websocket server port" |
|
|
|
|
:group 'markdown-preview |
|
|
|
|
:type 'integer) |
|
|
|
|
|
|
|
|
|
(defcustom markdown-preview-style "http://thomasf.github.io/solarized-css/solarized-dark.min.css" |
|
|
|
|
"Markdown preview style URI" |
|
|
|
|
:group 'markdown-preview |
|
|
|
|
:type 'string) |
|
|
|
|
|
|
|
|
|
(defvar mdpm:websocket-port 7379) |
|
|
|
|
(defvar mdpm:websocket-server nil) |
|
|
|
|
(defvar mdpm:local-client nil) |
|
|
|
|
(defvar mdpm:remote-clients nil) |
|
|
|
|
(defvar mdpm:preview-url (concat (file-name-directory load-file-name) "preview.html")) |
|
|
|
|
(defvar mdpm:style "http://thomasf.github.io/solarized-css/solarized-dark.min.css") |
|
|
|
|
|
|
|
|
|
(defun mdpm:open-browser-preview () |
|
|
|
|
(browse-url mdpm:preview-url)) |
|
|
|
@ -58,7 +67,7 @@
|
|
|
|
|
(when (not mdpm:websocket-server) |
|
|
|
|
(setq mdpm:websocket-server |
|
|
|
|
(websocket-server |
|
|
|
|
mdpm:websocket-port |
|
|
|
|
markdown-preview-port |
|
|
|
|
:on-message (lambda (websocket frame) |
|
|
|
|
(mapc (lambda (ws) |
|
|
|
|
(websocket-send-text ws |
|
|
|
@ -76,7 +85,7 @@
|
|
|
|
|
(when (not mdpm:local-client) |
|
|
|
|
(setq mdpm:local-client |
|
|
|
|
(websocket-open |
|
|
|
|
(format "ws://localhost:%d" mdpm:websocket-port) |
|
|
|
|
(format "ws://localhost:%d" markdown-preview-port) |
|
|
|
|
:on-error (lambda (ws type err) |
|
|
|
|
(message "error connecting")) |
|
|
|
|
:on-close (lambda (websocket) |
|
|
|
@ -93,7 +102,7 @@
|
|
|
|
|
(concat |
|
|
|
|
"<div>" |
|
|
|
|
"<span id='style'>" |
|
|
|
|
mdpm:style |
|
|
|
|
markdown-preview-style |
|
|
|
|
"</span>" |
|
|
|
|
"<div id='content'>" |
|
|
|
|
(buffer-substring-no-properties (point-min) (point-max)) |
|
|
|
|