diff --git a/modules/lang/javascript/+screeps.el b/modules/lang/javascript/+screeps.el index d8fbf1c52..616cabff8 100644 --- a/modules/lang/javascript/+screeps.el +++ b/modules/lang/javascript/+screeps.el @@ -1,4 +1,4 @@ -;;; custom-screeps.el +;;; lang/javascript/+screeps.el (defconst screeps-objects '("ConstructionSite" "Creep" "Flag" "Game" "Memory" "Mineral" "Nuke" diff --git a/modules/lang/javascript/autoload.el b/modules/lang/javascript/autoload.el deleted file mode 100644 index 98b1e732d..000000000 --- a/modules/lang/javascript/autoload.el +++ /dev/null @@ -1,7 +0,0 @@ -;;; autoload.el --- description - -;;;###autoload -(defun +js-fake-fun ()) - -(provide 'autoload) -;;; autoload.el ends here diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index c9e05b9ef..2f96b5ec7 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -1,49 +1,61 @@ -;;; config.el - -(config! js2-mode - (add-hook! '(tern-mode flycheck-mode highlight-indent-guides-mode)) - - ;; NOTE Do indentation settings after editorconfig has done its thing - (add-hook! (setq js-switch-indent-offset js-indent-level)) +;; lang/javascript/config.el +(use-package! js2-mode + :mode "\\.js$" + :interpreter "node" + :init (setq js2-skip-preprocessor-directives t js2-highlight-external-variables nil js2-mode-show-parse-errors nil) - ;; - (set! :repl nodejs-repl - :company-backends (tern) - :electric (?\} ?\) ?. "||" "&&") - :map (:localleader :nv ";" 'doom/append-semicolon) - :emr ((:v js2r-extract-function "extract function") - (:v js2r-extract-method "extract method") - (:v js2r-introduce-parameter "introduce parameter") - (:n js2r-localize-parameter "localize parameter") - (:n js2r-expand-object "expand object") - (:n js2r-contract-object "contract object") - (:n js2r-expand-function "expand function") - (:n js2r-contract-function "contract function") - (:n js2r-expand-array "expand array") - (:n js2r-contract-array "contract array") - (:n js2r-wrap-buffer-in-iife "wrap buffer in ii function") - (:v js2r-inject-global-in-iife "inject global in ii function") - (:n js2r-add-to-globals-annotation "add to globals annotation") - (:v js2r-extract-var "extract variable") - (:v js2r-inline-var "inline variable") - (:n js2r-rename-var "rename variable") - (:n js2r-var-to-this "var to this") - (:n js2r-arguments-to-object "arguments to object") - (:n js2r-ternary-to-if "ternary to if") - (:n js2r-split-var-declaration "split var declaration") - (:n js2r-split-string "split string") - (:v js2r-unwrap "unwrap") - (:nv js2r-log-this "log this") - (:nv js2r-debug-this "debug this") - (:n js2r-forward-slurp "forward slurp") - (:n js2r-forward-barf "forward barf")))) + :config + (add-hook! '(tern-mode flycheck-mode highlight-indent-guides-mode)) + ;; Only way to conform switch-case indentation to editorconfig's config + (add-hook! (setq js-switch-indent-offset js-indent-level)) -(config! coffee-mode - (setq-default coffee-indent-like-python-mode t)) + (map! :map js2-mode-map :localleader :nv ";" 'doom/append-semicolon) + + (set! :repl nodejs-repl) + (set! :company-backends tern) + (set! :electric-chars ?\} ?\) ?.) + (set! :electric-words "||" "&&") + (set! :emr + (:v js2r-extract-function "extract function") + (:v js2r-extract-method "extract method") + (:v js2r-introduce-parameter "introduce parameter") + (:n js2r-localize-parameter "localize parameter") + (:n js2r-expand-object "expand object") + (:n js2r-contract-object "contract object") + (:n js2r-expand-function "expand function") + (:n js2r-contract-function "contract function") + (:n js2r-expand-array "expand array") + (:n js2r-contract-array "contract array") + (:n js2r-wrap-buffer-in-iife "wrap buffer in ii function") + (:v js2r-inject-global-in-iife "inject global in ii function") + (:n js2r-add-to-globals-annotation "add to globals annotation") + (:v js2r-extract-var "extract variable") + (:v js2r-inline-var "inline variable") + (:n js2r-rename-var "rename variable") + (:n js2r-var-to-this "var to this") + (:n js2r-arguments-to-object "arguments to object") + (:n js2r-ternary-to-if "ternary to if") + (:n js2r-split-var-declaration "split var declaration") + (:n js2r-split-string "split string") + (:v js2r-unwrap "unwrap") + (:nv js2r-log-this "log this") + (:nv js2r-debug-this "debug this") + (:n js2r-forward-slurp "forward slurp") + (:n js2r-forward-barf "forward barf"))) + +(use-package! js2-refactor :after emr) + +(use-package! company-tern :commands company-tern :after tern) + +(use-package! jsx-mode :mode "\\.jsx$") + +(use-package! coffee-mode + :mode "\\.coffee$" + :init (setq coffee-indent-like-python-mode t)) ;; diff --git a/modules/lang/javascript/packages.el b/modules/lang/javascript/packages.el index ddc7898b5..d0f5268ef 100644 --- a/modules/lang/javascript/packages.el +++ b/modules/lang/javascript/packages.el @@ -1,13 +1,28 @@ -;;; lang/js/packages.el +;; -*- no-byte-compile: t; -*- +;; lang/javascript/packages.el -(package! js2-mode :mode "\\.js$" :interpreter "node") +(package! js2-mode) +(package! jsx-mode) +(package! coffee-mode) +(package! tern) +(package! company-tern) +(package! js2-refactor) -(package! jsx-mode :mode "\\.jsx$") +(bootstrap! javascript + "Sets up NodeJS, the TrepanJS debugger." -(package! coffee-mode :mode "\\.coffee$") + :if-arch + (unless (and (executable-find "node") + (executable-find "npm")) + (sudo "pacman --needed --noconfirm -S nodejs npm")) -(package! tern :after js2-mode) + ;; :if-deb + ;; TODO -(package! company-tern :after js2-mode) + :if-macos + (unless (executable-find "node") + (sh "brew install node")) -(package! js2-refactor :after js2-mode) + :after + (unless (executable-find "tern") + (sh "npm -g install trepanjs tern")))