diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000..e1e43c3 Binary files /dev/null and b/favicon.ico differ diff --git a/markdown-preview-mode.el b/markdown-preview-mode.el index cacd0e6..960fbff 100644 --- a/markdown-preview-mode.el +++ b/markdown-preview-mode.el @@ -87,9 +87,8 @@ (defvar markdown-preview--remote-clients nil "List of `markdown-preview' websocket remote clients.") -(defvar markdown-preview--preview-template - (concat (file-name-directory load-file-name) "preview.html") - "Location of `markdown-preview' html template file.") +(defvar markdown-preview--home-dir (file-name-directory load-file-name) + "`markdown-preview-mode' home directory.") (defvar markdown-preview--idle-timer nil "Preview idle timer.") @@ -100,9 +99,9 @@ (cancel-timer markdown-preview--idle-timer))) (defun markdown-preview--read-preview-template (preview-file) - "Reads preview template and writes rendered copy to `preview-file', ready to be open in browser." + "Read preview template and writes rendered copy to PREVIEW-FILE, ready to be open in browser." (with-temp-file preview-file - (insert-file-contents markdown-preview--preview-template) + (insert-file-contents (expand-file-name "preview.html" markdown-preview--home-dir)) (if (search-forward "${MD_STYLE}" nil t) (replace-match markdown-preview-style t)) (if (search-forward "${MD_JS}" nil t) @@ -122,18 +121,19 @@ (buffer-string))) (defun markdown-preview--start-http-server (port) - "Start http server at `port' to serve preview file via http." + "Start http server at PORT to serve preview file via http." (lexical-let ((docroot default-directory)) (ws-start (lambda (request) (with-slots (process headers) request - (let ((path (substring (cdr (assoc :GET headers)) 1))) - (if (ws-in-directory-p docroot path) - (if (file-directory-p path) - (ws-send-directory-list process - (expand-file-name path docroot) "^[^\.]") - (ws-send-file process (expand-file-name path docroot))) - (ws-send-404 process))))) + (let* ((path (substring (cdr (assoc :GET headers)) 1)) + (filename (expand-file-name path docroot))) + (if (string= path "favicon.ico") + (ws-send-file process (expand-file-name path markdown-preview--home-dir)) + (if (and (not (file-directory-p filename)) (file-exists-p filename)) + (ws-send-file process filename) + (ws-send-404 process) + ))))) markdown-preview-http-port))) (defun markdown-preview--open-browser-preview ()