diff --git a/markdown-preview-mode.el b/markdown-preview-mode.el index 4facd85..c9ec265 100644 --- a/markdown-preview-mode.el +++ b/markdown-preview-mode.el @@ -49,6 +49,10 @@ (setq mdpm:websocket-server nil mdpm:remote-clients nil))) +(defun mdpm:drop-closed-clients () + (setq mdpm:remote-clients + (remove-if-not #'websocket-openp mdpm:remote-clients))) + (defun mdpm:start-websocket-server () (when (not mdpm:websocket-server) (setq mdpm:websocket-server @@ -57,14 +61,11 @@ :on-message (lambda (websocket frame) (mapc (lambda (ws) (websocket-send-text ws - (websocket-frame-payload frame))) + (websocket-frame-payload frame))) mdpm:remote-clients)) - :on-open (lambda (websocket) - (push websocket mdpm:remote-clients) - ) - :on-close (lambda (websocket) - (delete websocket mdpm:remote-clients) - ) + :on-open (lambda (websocket) (push websocket mdpm:remote-clients)) + :on-error (lambda (websocket type err) (message err)) + :on-close (lambda (websocket) (mdpm:drop-closed-clients)) )) (add-hook 'kill-emacs-hook 'mdpm:stop-websocket-server) (mdpm:open-browser-preview))) @@ -91,7 +92,7 @@ (add-hook 'after-save-hook 'mdpm:send-preview nil t)) (defun mdpm:stop () - (remove-hook 'after-save-hook 'mdpm:send-preview)) + (remove-hook 'after-save-hook 'mdpm:send-preview t)) (defun markdown-preview-open-browser () (interactive)