lang/javascript: add skewer-mode

This commit is contained in:
Henrik Lissner 2017-03-24 15:01:03 -04:00
parent b37aadec91
commit 378469b15e
3 changed files with 82 additions and 2 deletions

View file

@ -14,3 +14,46 @@ ignore the cache."
(json-read-file package-file)))
(puthash project-root json +javascript-npm-conf))))))
;;;###autoload
(defun +javascript/repl ()
"Open a Javascript REPL. Meaning either `skewer-repl', if any of the
skewer-*-mode's are enabled, or `nodejs-repl' otherwise."
(interactive)
(call-interactively
(if (and (featurep 'skewer-mode)
(or skewer-mode skewer-css-mode skewer-html-mode))
'skewer-repl
'nodejs-repl)))
;;;###autoload
(defun +javascript/skewer-this-buffer ()
"Toggle a globalized skewer-mode, attaching an external browser (once),
initiating an internal httpd server (once) and enabling the appropriate
skewer-mode for the current buffer.
Run this for any buffer you want to skewer."
(interactive)
(when (bound-and-true-p impatient-mode)
(error "Skewer-mode isn't compatible with impatient mode"))
(require 'skewer-mode)
(unless (process-status "httpd")
(run-skewer))
(unless (and skewer-mode skewer-css-mode skewer-html-mode)
(pcase major-mode
((or 'css-mode 'scss-mode 'less-css-mode) (skewer-css-mode +1))
((or 'web-mode 'html-mode) (skewer-html-mode +1))
('js2-mode (skewer-mode +1))
(_ (error "Invalid mode %s" major-mode)))))
;;;###autoload
(defun +javascript/skewer-cleanup ()
"Disable skewer-mode globally and disable the httpd server."
(interactive)
(when (process-status "httpd")
(httpd-stop))
(dolist (buf (buffer-list))
(with-current-buffer buf
(if skewer-mode (skewer-mode -1))
(if skewer-css-mode (skewer-css-mode -1))
(if skewer-html-mode (skewer-html-mode -1)))))