javascript and react: reformat code and move funcs to funcs.el

Some conventional cleanup.
Note that the function `spacemacs/js2-refactor-set-key-bindings` has been
removed since it is not used anywhere.
This commit is contained in:
syl20bnr 2017-01-01 22:45:23 -05:00
parent ab34cc2d9d
commit c725823e73
4 changed files with 177 additions and 155 deletions

View file

@ -0,0 +1,40 @@
;;; funcs.el --- React Layer functions File for Spacemacs
;;
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
;;
;; Author: Muneeb Shaikh <muneeb@reversehack.in>
;; URL: https://github.com/syl20bnr/spacemacs
;;
;; This file is not part of GNU Emacs.
;;
;;; License: GPLv3
;; react mode
(defun spacemacs//setup-react-mode ()
"Adjust web-mode to accommodate react-mode"
(emmet-mode 0)
;; See https://github.com/CestDiego/emmet-mode/commit/3f2904196e856d31b9c95794d2682c4c7365db23
(setq-local emmet-expand-jsx-className? t)
;; Enable js-mode snippets
(yas-activate-extra-mode 'js-mode)
;; Force jsx content type
(web-mode-set-content-type "jsx")
;; Don't auto-quote attribute values
(setq-local web-mode-enable-auto-quoting nil))
;; flycheck
(defun spacemacs//react-use-eslint-from-node-modules ()
(let* ((root (locate-dominating-file
(or (buffer-file-name) default-directory)
"node_modules"))
(global-eslint (executable-find "eslint"))
(local-eslint (expand-file-name "node_modules/.bin/eslint"
root))
(eslint (if (file-executable-p local-eslint)
local-eslint
global-eslint)))
(setq-local flycheck-javascript-eslint-executable eslint)))

View file

@ -34,28 +34,16 @@
(defun react/post-init-evil-matchit ()
(with-eval-after-load 'evil-matchit
(plist-put evilmi-plugins 'react-mode '((evilmi-simple-get-tag evilmi-simple-jump)
(evilmi-javascript-get-tag evilmi-javascript-jump)
(evilmi-html-get-tag evilmi-html-jump)))))
(plist-put evilmi-plugins 'react-mode
'((evilmi-simple-get-tag evilmi-simple-jump)
(evilmi-javascript-get-tag evilmi-javascript-jump)
(evilmi-html-get-tag evilmi-html-jump)))))
(defun react/post-init-flycheck ()
(with-eval-after-load 'flycheck
(dolist (checker '(javascript-eslint javascript-standard))
(flycheck-add-mode checker 'react-mode)))
(defun react/use-eslint-from-node-modules ()
(let* ((root (locate-dominating-file
(or (buffer-file-name) default-directory)
"node_modules"))
(global-eslint (executable-find "eslint"))
(local-eslint (expand-file-name "node_modules/.bin/eslint"
root))
(eslint (if (file-executable-p local-eslint)
local-eslint
global-eslint)))
(setq-local flycheck-javascript-eslint-executable eslint)))
(add-hook 'react-mode-hook #'react/use-eslint-from-node-modules)
(add-hook 'react-mode-hook #'spacemacs//react-use-eslint-from-node-modules)
(spacemacs/add-flycheck-hook 'react-mode))
(defun react/post-init-js-doc ()
@ -82,15 +70,4 @@
(add-to-list 'auto-mode-alist '("\\index.ios.js\\'" . react-mode))
(add-to-list 'magic-mode-alist '("/\\*\\* @jsx React\\.DOM \\*/" . react-mode))
(add-to-list 'magic-mode-alist '("^import React" . react-mode))
(defun spacemacs//setup-react-mode ()
"Adjust web-mode to accommodate react-mode"
(emmet-mode 0)
;; See https://github.com/CestDiego/emmet-mode/commit/3f2904196e856d31b9c95794d2682c4c7365db23
(setq-local emmet-expand-jsx-className? t)
;; Enable js-mode snippets
(yas-activate-extra-mode 'js-mode)
;; Force jsx content type
(web-mode-set-content-type "jsx")
;; Don't auto-quote attribute values
(setq-local web-mode-enable-auto-quoting nil))
(add-hook 'react-mode-hook 'spacemacs//setup-react-mode))

View file

@ -9,6 +9,75 @@
;;
;;; License: GPLv3
;; js-doc
(defun spacemacs/js-doc-require ()
"Lazy load js-doc"
(require 'js-doc))
(add-hook 'js2-mode-hook 'spacemacs/js-doc-require)
(defun spacemacs/js-doc-set-key-bindings (mode)
"Setup the key bindings for `js2-doc' for the given MODE."
(spacemacs/declare-prefix-for-mode mode "mrd" "documentation")
(spacemacs/set-leader-keys-for-major-mode mode
"rdb" 'js-doc-insert-file-doc
"rdf" 'js-doc-insert-function-doc
"rdt" 'js-doc-insert-tag
"rdh" 'js-doc-describe-tag))
;; js-refactor
(defun spacemacs/js2-refactor-require ()
"Lazy load js2-refactor"
(require 'js2-refactor))
;; coffee
(defun javascript/coffee-indent ()
(if (coffee-line-wants-indent)
;; We need to insert an additional tab because
;; the last line was special.
(coffee-insert-spaces (+ (coffee-previous-indent) coffee-tab-width))
;; otherwise keep at the same indentation level
(coffee-insert-spaces (coffee-previous-indent))))
;; skewer
(defun spacemacs/skewer-start-repl ()
"Attach a browser to Emacs and start a skewer REPL."
(interactive)
(run-skewer)
(skewer-repl))
(defun spacemacs/skewer-load-buffer-and-focus ()
"Execute whole buffer in browser and switch to REPL in insert state."
(interactive)
(skewer-load-buffer)
(skewer-repl)
(evil-insert-state))
(defun spacemacs/skewer-eval-defun-and-focus ()
"Execute function at point in browser and switch to REPL in insert state."
(interactive)
(skewer-eval-defun)
(skewer-repl)
(evil-insert-state))
(defun spacemacs/skewer-eval-region (beg end)
"Execute the region as JavaScript code in the attached browser."
(interactive "r")
(skewer-eval (buffer-substring beg end) #'skewer-post-minibuffer))
(defun spacemacs/skewer-eval-region-and-focus (beg end)
"Execute the region in browser and swith to REPL in insert state."
(interactive "r")
(spacemacs/skewer-eval-region beg end)
(skewer-repl)
(evil-insert-state))
;; tern

View file

@ -34,13 +34,6 @@
:defer t
:init
(progn
(defun javascript/coffee-indent ()
(if (coffee-line-wants-indent)
;; We need to insert an additional tab because the last line was special.
(coffee-insert-spaces (+ (coffee-previous-indent) coffee-tab-width))
;; otherwise keep at the same indentation level
(coffee-insert-spaces (coffee-previous-indent)))
)
;; indent to right position after `evil-open-below' and `evil-open-above'
(add-hook 'coffee-mode-hook '(lambda ()
(setq indent-line-function 'javascript/coffee-indent
@ -70,21 +63,7 @@
(defun javascript/init-js-doc ()
(use-package js-doc
:defer t
:init
(progn
(defun spacemacs/js-doc-require ()
"Lazy load js-doc"
(require 'js-doc))
(add-hook 'js2-mode-hook 'spacemacs/js-doc-require)
(defun spacemacs/js-doc-set-key-bindings (mode)
"Setup the key bindings for `js2-doc' for the given MODE."
(spacemacs/declare-prefix-for-mode mode "mrd" "documentation")
(spacemacs/set-leader-keys-for-major-mode mode "rdb" 'js-doc-insert-file-doc)
(spacemacs/set-leader-keys-for-major-mode mode "rdf" 'js-doc-insert-function-doc)
(spacemacs/set-leader-keys-for-major-mode mode "rdt" 'js-doc-insert-tag)
(spacemacs/set-leader-keys-for-major-mode mode "rdh" 'js-doc-describe-tag))
(spacemacs/js-doc-set-key-bindings 'js2-mode))))
:init (spacemacs/js-doc-set-key-bindings 'js2-mode)))
(defun javascript/init-js2-mode ()
(use-package js2-mode
@ -96,10 +75,12 @@
(add-hook 'js2-mode-hook 'js2-imenu-extras-mode))
:config
(progn
;; prefixes
(spacemacs/declare-prefix-for-mode 'js2-mode "mh" "documentation")
(spacemacs/declare-prefix-for-mode 'js2-mode "mg" "goto")
(spacemacs/declare-prefix-for-mode 'js2-mode "mr" "refactor")
(spacemacs/declare-prefix-for-mode 'js2-mode "mz" "folding")
;; key bindings
(spacemacs/set-leader-keys-for-major-mode 'js2-mode
"w" 'js2-mode-toggle-warnings-and-errors
"zc" 'js2-mode-hide-element
@ -117,73 +98,55 @@
:defer t
:init
(progn
(defun spacemacs/js2-refactor-require ()
"Lazy load js2-refactor"
(require 'js2-refactor))
(add-hook 'js2-mode-hook 'spacemacs/js2-refactor-require)
(defun spacemacs/js2-refactor-set-key-bindings (mode)
(spacemacs/declare-prefix-for-mode mode "mr3" "ternary")
(spacemacs/set-leader-keys-for-major-mode mode "r3i" 'js2r-ternary-to-if)
(spacemacs/declare-prefix-for-mode mode "mra" "add/args")
(spacemacs/set-leader-keys-for-major-mode mode "rag" 'js2r-add-to-globals-annotation)
(spacemacs/set-leader-keys-for-major-mode mode "rao" 'js2r-arguments-to-object)
(spacemacs/declare-prefix-for-mode mode "mrb" "barf")
(spacemacs/set-leader-keys-for-major-mode mode "rba" 'js2r-forward-barf)
(spacemacs/declare-prefix-for-mode mode "mrc" "contract")
(spacemacs/set-leader-keys-for-major-mode mode "rca" 'js2r-contract-array)
(spacemacs/set-leader-keys-for-major-mode mode "rco" 'js2r-contract-object)
(spacemacs/set-leader-keys-for-major-mode mode "rcu" 'js2r-contract-function)
(spacemacs/declare-prefix-for-mode mode "mre" "expand/extract")
(spacemacs/set-leader-keys-for-major-mode mode "rea" 'js2r-expand-array)
(spacemacs/set-leader-keys-for-major-mode mode "ref" 'js2r-extract-function)
(spacemacs/set-leader-keys-for-major-mode mode "rem" 'js2r-extract-method)
(spacemacs/set-leader-keys-for-major-mode mode "reo" 'js2r-expand-object)
(spacemacs/set-leader-keys-for-major-mode mode "reu" 'js2r-expand-function)
(spacemacs/set-leader-keys-for-major-mode mode "rev" 'js2r-extract-var)
(spacemacs/declare-prefix-for-mode mode "mri" "inline/inject/introduct")
(spacemacs/set-leader-keys-for-major-mode mode "rig" 'js2r-inject-global-in-iife)
(spacemacs/set-leader-keys-for-major-mode mode "rip" 'js2r-introduce-parameter)
(spacemacs/set-leader-keys-for-major-mode mode "riv" 'js2r-inline-var)
(spacemacs/declare-prefix-for-mode mode "mrl" "localize/log")
(spacemacs/set-leader-keys-for-major-mode mode "rlp" 'js2r-localize-parameter)
(spacemacs/set-leader-keys-for-major-mode mode "rlt" 'js2r-log-this)
(spacemacs/declare-prefix-for-mode mode "mrr" "rename")
(spacemacs/set-leader-keys-for-major-mode mode "rrv" 'js2r-rename-var)
(spacemacs/declare-prefix-for-mode mode "mrs" "split/slurp")
(spacemacs/set-leader-keys-for-major-mode mode "rsl" 'js2r-forward-slurp)
(spacemacs/set-leader-keys-for-major-mode mode "rss" 'js2r-split-string)
(spacemacs/set-leader-keys-for-major-mode mode "rsv" 'js2r-split-var-declaration)
(spacemacs/declare-prefix-for-mode mode "mrt" "toggle")
(spacemacs/set-leader-keys-for-major-mode mode "rtf" 'js2r-toggle-function-expression-and-declaration)
(spacemacs/declare-prefix-for-mode mode "mru" "unwrap")
(spacemacs/set-leader-keys-for-major-mode mode "ruw" 'js2r-unwrap)
(spacemacs/declare-prefix-for-mode mode "mrv" "var")
(spacemacs/set-leader-keys-for-major-mode mode "rvt" 'js2r-var-to-this)
(spacemacs/declare-prefix-for-mode mode "mrw" "wrap")
(spacemacs/set-leader-keys-for-major-mode mode "rwi" 'js2r-wrap-buffer-in-iife)
(spacemacs/set-leader-keys-for-major-mode mode "rwl" 'js2r-wrap-in-for-loop)
(spacemacs/set-leader-keys-for-major-mode mode "k" 'js2r-kill)
(spacemacs/declare-prefix-for-mode mode "mx" "text")
(spacemacs/declare-prefix-for-mode mode "mxm" "move")
(spacemacs/set-leader-keys-for-major-mode mode "xmj" 'js2r-move-line-down)
(spacemacs/set-leader-keys-for-major-mode mode "xmk" 'js2r-move-line-up))
(spacemacs/js2-refactor-set-key-bindings 'js2-mode))))
;; prefixes
(spacemacs/declare-prefix-for-mode 'js2-mode "mr3" "ternary")
(spacemacs/declare-prefix-for-mode 'js2-mode "mra" "add/args")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrb" "barf")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrc" "contract")
(spacemacs/declare-prefix-for-mode 'js2-mode "mre" "expand/extract")
(spacemacs/declare-prefix-for-mode 'js2-mode "mri" "inline/inject/introduct")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrl" "localize/log")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrr" "rename")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrs" "split/slurp")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrt" "toggle")
(spacemacs/declare-prefix-for-mode 'js2-mode "mru" "unwrap")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrv" "var")
(spacemacs/declare-prefix-for-mode 'js2-mode "mrw" "wrap")
(spacemacs/declare-prefix-for-mode 'js2-mode "mx" "text")
(spacemacs/declare-prefix-for-mode 'js2-mode "mxm" "move")
;; key bindings
(spacemacs/set-leader-keys-for-major-mode 'js2-mode
"r3i" 'js2r-ternary-to-if
"rag" 'js2r-add-to-globals-annotation
"rao" 'js2r-arguments-to-object
"rba" 'js2r-forward-barf
"rca" 'js2r-contract-array
"rco" 'js2r-contract-object
"rcu" 'js2r-contract-function
"rea" 'js2r-expand-array
"ref" 'js2r-extract-function
"rem" 'js2r-extract-method
"reo" 'js2r-expand-object
"reu" 'js2r-expand-function
"rev" 'js2r-extract-var
"rig" 'js2r-inject-global-in-iife
"rip" 'js2r-introduce-parameter
"riv" 'js2r-inline-var
"rlp" 'js2r-localize-parameter
"rlt" 'js2r-log-this
"rrv" 'js2r-rename-var
"rsl" 'js2r-forward-slurp
"rss" 'js2r-split-string
"rsv" 'js2r-split-var-declaration
"rtf" 'js2r-toggle-function-expression-and-declaration
"ruw" 'js2r-unwrap
"rvt" 'js2r-var-to-this
"rwi" 'js2r-wrap-buffer-in-iife
"rwl" 'js2r-wrap-in-for-loop
"k" 'js2r-kill
"xmj" 'js2r-move-line-down
"xmk" 'js2r-move-line-up))))
(defun javascript/init-json-mode ()
(use-package json-mode
@ -194,8 +157,7 @@
:defer t
:config
(spacemacs/set-leader-keys-for-major-mode 'json-mode
"hp" 'jsons-print-path)
))
"hp" 'jsons-print-path)))
(defun javascript/init-tern ()
(use-package tern
@ -213,10 +175,14 @@
:defer t
:init
(progn
(spacemacs/set-leader-keys-for-major-mode 'js2-mode "=" 'web-beautify-js)
(spacemacs/set-leader-keys-for-major-mode 'json-mode "=" 'web-beautify-js)
(spacemacs/set-leader-keys-for-major-mode 'web-mode "=" 'web-beautify-html)
(spacemacs/set-leader-keys-for-major-mode 'css-mode "=" 'web-beautify-css))))
(spacemacs/set-leader-keys-for-major-mode 'js2-mode
"=" 'web-beautify-js)
(spacemacs/set-leader-keys-for-major-mode 'json-mode
"=" 'web-beautify-js)
(spacemacs/set-leader-keys-for-major-mode 'web-mode
"=" 'web-beautify-html)
(spacemacs/set-leader-keys-for-major-mode 'css-mode
"=" 'web-beautify-css))))
(defun javascript/init-skewer-mode ()
(use-package skewer-mode
@ -224,42 +190,12 @@
:diminish skewer-mode
:init
(progn
(spacemacs/register-repl 'skewer-mode 'spacemacs/skewer-start-repl "skewer")
(spacemacs/register-repl 'skewer-mode
'spacemacs/skewer-start-repl
"skewer")
(add-hook 'js2-mode-hook 'skewer-mode))
:config
(progn
(defun spacemacs/skewer-start-repl ()
"Attach a browser to Emacs and start a skewer REPL."
(interactive)
(run-skewer)
(skewer-repl))
(defun spacemacs/skewer-load-buffer-and-focus ()
"Execute whole buffer in browser and switch to REPL in insert state."
(interactive)
(skewer-load-buffer)
(skewer-repl)
(evil-insert-state))
(defun spacemacs/skewer-eval-defun-and-focus ()
"Execute function at point in browser and switch to REPL in insert state."
(interactive)
(skewer-eval-defun)
(skewer-repl)
(evil-insert-state))
(defun spacemacs/skewer-eval-region (beg end)
"Execute the region as JavaScript code in the attached browser."
(interactive "r")
(skewer-eval (buffer-substring beg end) #'skewer-post-minibuffer))
(defun spacemacs/skewer-eval-region-and-focus (beg end)
"Execute the region in browser and swith to REPL in insert state."
(interactive "r")
(spacemacs/skewer-eval-region beg end)
(skewer-repl)
(evil-insert-state))
(spacemacs/declare-prefix-for-mode 'js2-mode "ms" "skewer")
(spacemacs/declare-prefix-for-mode 'js2-mode "me" "eval")
(spacemacs/set-leader-keys-for-major-mode 'js2-mode