113 lines
3.0 KiB
EmacsLisp
113 lines
3.0 KiB
EmacsLisp
;;; javascript.el --- initializes JavaScript modes -*- lexical-binding: t; -*-
|
|
;;; Commentary:
|
|
;;; Code:
|
|
|
|
(defun user--javascript-mode-common-hook ()
|
|
"JavaScript common mode hook."
|
|
;; ;; Load CEDET
|
|
;; (user--javascript-mode-cedet-hook)
|
|
|
|
;; (user/gnu-global-enable)
|
|
|
|
(flycheck-mode t)
|
|
|
|
;; (tern-mode t)
|
|
)
|
|
|
|
|
|
(defun user--javascript-mode-hook ()
|
|
"JavaScript mode hook."
|
|
(user--javascript-mode-common-hook))
|
|
|
|
|
|
(defun user--inferior-js-mode-hook ()
|
|
"Inferior JavaScript mode hook."
|
|
;; Support ANSI colors.
|
|
(ansi-color-for-comint-mode-on))
|
|
|
|
|
|
(defun user--js2-mode-hook ()
|
|
"JS2 mode hook."
|
|
(user--javascript-mode-common-hook)
|
|
;; Enable smart indentation
|
|
(smart-tabs-mode t)
|
|
;; Enable Flycheck
|
|
(flycheck-mode t))
|
|
|
|
|
|
;; (defun user--javascript-mode-cedet-hook ()
|
|
;; "JavaScript CEDET support hook."
|
|
;; (with-feature 'semantic/wisent/javascript
|
|
;; (wisent-javascript-setup-parser)
|
|
;; ;; (user--cedet-hook)
|
|
;; ))
|
|
|
|
;;
|
|
;;
|
|
(use-package js
|
|
:defer
|
|
:hook ((javascript-mode-hook . user--javascript-mode-hook)
|
|
(inferior-js-mode-hook . user--inferior-javascript-mode-hook)))
|
|
|
|
;; https://github.com/mooz/js2-mode
|
|
;; Improved JavaScript editing mode for GNU Emacs
|
|
(use-package js2-mode
|
|
:defer
|
|
:mode "\.[m]js$"
|
|
;; :mode "\.ts$"
|
|
:magic "#!/usr/bin/env node"
|
|
:hook (js2-mode-hook . user--js2-mode-hook)
|
|
:config
|
|
(validate-setq
|
|
;; ;; Configure indentation
|
|
;; (setq js2-enter-indents-newline t)
|
|
;; (setq js2-auto-indent-p t)
|
|
;; Idle timeout before reparsing buffer
|
|
js2-idle-timer-delay 0.5
|
|
;; Disable error parsing in favor of Flycheck
|
|
js2-strict-missing-semi-warning nil)
|
|
|
|
;; https://github.com/redguardtoo/js-comint
|
|
;; js-comint will send the code from Emacs into node.js or rhino
|
|
(use-package js-comint
|
|
:disabled
|
|
:config
|
|
(validate-setq
|
|
;; Set JavaScript inferior.
|
|
inferior-js-program-command
|
|
(cond
|
|
((executable-find "js") (executable-find "js"))
|
|
((executable-find "node")
|
|
(concat (executable-find "node") " --interactive"))
|
|
(t "java org.mozilla.javascript.tools.shell.Main")))
|
|
|
|
;; Workaround for Node.js prompt.
|
|
(setenv "NODE_NO_READLINE" "1"))
|
|
|
|
;; https://github.com/prettier/prettier-emacs
|
|
;; Minor mode to format JS code on file save
|
|
(use-package prettier-js
|
|
:disabled)
|
|
|
|
;; https://emacs-lsp.github.io/lsp-mode/page/lsp-typescript-javascript/
|
|
(use-package lsp-javascript-typescript
|
|
:disabled
|
|
:if (executable-find "javascript-typescript-langserver")
|
|
:hook (js2-mode-hook . lsp-javascript-typescript-enable))
|
|
|
|
;; https://github.com/torgeir/helm-js-codemod.el
|
|
;; A helm interface for running js-codemod.el
|
|
(use-package helm-js-codemod
|
|
:disabled
|
|
:if (executable-find "jscodeshift"))
|
|
|
|
;; https://github.com/js-emacs/xref-js2
|
|
;; Jump to references/definitions using ag & js2-mode's AST in Emacs
|
|
(use-package xref-js2
|
|
:init
|
|
(add-hook 'xref-backend-functions #'xref-js2-xref-backend nil t)))
|
|
|
|
|
|
(provide 'modes/javascript)
|
|
;;; javascript.el ends here
|