lang/javascript: add skewer-mode
This commit is contained in:
parent
b37aadec91
commit
378469b15e
3 changed files with 82 additions and 2 deletions
|
@ -14,3 +14,46 @@ ignore the cache."
|
||||||
(json-read-file package-file)))
|
(json-read-file package-file)))
|
||||||
(puthash project-root json +javascript-npm-conf))))))
|
(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)))))
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,14 @@
|
||||||
;; Conform switch-case indentation to editorconfig's config
|
;; Conform switch-case indentation to editorconfig's config
|
||||||
(add-hook! 'js2-mode-hook (setq js-switch-indent-offset js-indent-level))
|
(add-hook! 'js2-mode-hook (setq js-switch-indent-offset js-indent-level))
|
||||||
|
|
||||||
(set! :repl 'js2-mode 'nodejs-repl)
|
(set! :repl 'js2-mode '+javascript/repl)
|
||||||
(set! :electric 'js2-mode :chars '(?\} ?\) ?.) :words '("||" "&&"))
|
(set! :electric 'js2-mode :chars '(?\} ?\) ?.) :words '("||" "&&"))
|
||||||
(set! :xref-backend 'js2-mode 'xref-js2-xref-backend)
|
(set! :xref-backend 'js2-mode 'xref-js2-xref-backend)
|
||||||
|
|
||||||
(map! :map js2-mode-map
|
(map! :map js2-mode-map
|
||||||
:localleader
|
:localleader
|
||||||
:nv ";" 'doom/append-semicolon
|
:nv ";" 'doom/append-semicolon
|
||||||
|
:n "s" '+javascript/skewer-this-buffer
|
||||||
|
|
||||||
:prefix "r"
|
:prefix "r"
|
||||||
:n "g" 'js2r-add-to-globals-annotation
|
:n "g" 'js2r-add-to-globals-annotation
|
||||||
|
@ -93,11 +94,46 @@
|
||||||
:init (setq coffee-indent-like-python-mode t))
|
:init (setq coffee-indent-like-python-mode t))
|
||||||
|
|
||||||
|
|
||||||
(def-package! web-beautify :commands web-beautify-js
|
(def-package! web-beautify
|
||||||
|
:commands web-beautify-js
|
||||||
:init
|
:init
|
||||||
(map! :map* (json-mode js2-mode-map) :n "gQ" 'web-beautify-js))
|
(map! :map* (json-mode js2-mode-map) :n "gQ" 'web-beautify-js))
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; Skewer-mode
|
||||||
|
;;
|
||||||
|
|
||||||
|
(def-package! skewer-mode
|
||||||
|
:commands (skewer-mode run-skewer)
|
||||||
|
:config
|
||||||
|
(map! :map skewer-mode-map
|
||||||
|
:localleader
|
||||||
|
:n "s" nil
|
||||||
|
:n "sE" 'skewer-eval-last-expression
|
||||||
|
:n "se" 'skewer-eval-defun
|
||||||
|
:n "sf" 'skewer-load-buffer))
|
||||||
|
|
||||||
|
(def-package! skewer-css-mode ; in skewer-mode
|
||||||
|
:commands skewer-css-mode
|
||||||
|
:config
|
||||||
|
(map! :map skewer-css-mode-map
|
||||||
|
:localleader
|
||||||
|
:n "s" nil
|
||||||
|
:n "se" 'skewer-css-eval-current-declaration
|
||||||
|
:n "sr" 'skewer-css-eval-current-rule
|
||||||
|
:n "sb" 'skewer-css-eval-buffer
|
||||||
|
:n "sc" 'skewer-css-clear-all))
|
||||||
|
|
||||||
|
(def-package! skewer-html-mode ; in skewer-mode
|
||||||
|
:commands skewer-html-mode
|
||||||
|
:config
|
||||||
|
(map! :map skewer-html-mode-map
|
||||||
|
:localleader
|
||||||
|
:n "s" nil
|
||||||
|
:n "se" 'skewer-html-eval-tag))
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;; Projects
|
;; Projects
|
||||||
;;
|
;;
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
(package! nodejs-repl)
|
(package! nodejs-repl)
|
||||||
(package! tern)
|
(package! tern)
|
||||||
(package! web-beautify)
|
(package! web-beautify)
|
||||||
|
(package! skewer-mode)
|
||||||
|
|
||||||
(when (featurep! :completion company)
|
(when (featurep! :completion company)
|
||||||
(package! company-tern))
|
(package! company-tern))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue