SHARE
TWEET
js emacs
a guest
Aug 31st, 2018
151
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
- (use-package web-mode
- :ensure t
- :bind (("C-c ]" . emmet-next-edit-point)
- ("C-c [" . emmet-prev-edit-point)
- ("C-c o b" . browse-url-of-file))
- :mode
- (("\\.js\\'" . web-mode)
- ("\\.html?\\'" . web-mode)
- ("\\.phtml?\\'" . web-mode)
- ("\\.tpl\\.php\\'" . web-mode)
- ("\\.[agj]sp\\'" . web-mode)
- ("\\.as[cp]x\\'" . web-mode)
- ("\\.erb\\'" . web-mode)
- ("\\.mustache\\'" . web-mode)
- ("\\.djhtml\\'" . web-mode)
- ("\\.jsx$" . web-mode))
- ("\\.blade.php\\'" . web-mode))
- :config
- (setq web-mode-markup-indent-offset 2
- web-mode-css-indent-offset 2
- web-mode-code-indent-offset 2)
- (setq web-mode-engines-alist
- '(("php" . "\\.phtml\\'")
- ("blade" . "\\.blade\\.")))
- (add-hook 'web-mode-hook 'jsx-flycheck)
- (use-package php-mode
- :ensure t)
- (use-package phpunit
- :ensure t)
- ;; highlight enclosing tags of the element under cursor
- (setq web-mode-enable-current-element-highlight t)
- (defadvice web-mode-highlight-part (around tweak-jsx activate)
- (if (equal web-mode-content-type "jsx")
- (let ((web-mode-enable-part-face nil))
- ad-do-it)
- ad-do-it))
- ;; editing enhancements for web-mode
- ;; https://github.com/jtkDvlp/web-mode-edit-element
- (use-package web-mode-edit-element
- :ensure t
- :config (add-hook 'web-mode-hook 'web-mode-edit-element-minor-mode))
- ; snippets for HTML
- ;; https://github.com/smihica/emmet-mode
- (use-package emmet-mode
- :ensure t
- :init (setq emmet-move-cursor-between-quotes t) ;; default nil
- :diminish (emmet-mode . " e"))
- (add-hook 'web-mode-hook 'emmet-mode)
- (defun my-web-mode-hook ()
- "Hook for `web-mode' config for company-backends."
- (set (make-local-variable 'company-backends)
- '((company-tern company-css company-web-html company-files))))
- (add-hook 'web-mode-hook 'my-web-mode-hook)
- ;; Enable JavaScript completion between <script>...</script> etc.
- (defadvice company-tern (before web-mode-set-up-ac-sources activate)
- "Set `tern-mode' based on current language before running company-tern."
- (message "advice")
- (if (equal major-mode 'web-mode)
- (let ((web-mode-cur-language
- (web-mode-language-at-pos)))
- (if (or (string= web-mode-cur-language "javascript")
- (string= web-mode-cur-language "jsx"))
- (unless tern-mode (tern-mode))
- (if tern-mode (tern-mode -1))))))
- (add-hook 'web-mode-hook 'company-mode)
- ;; configure CSS mode company backends
- (use-package css-mode
- :ensure t
- :config
- (defun my-css-mode-hook ()
- (set (make-local-variable 'company-backends)
- '((company-css company-dabbrev-code company-files))))
- (add-hook 'css-mode-hook 'my-css-mode-hook)
- (add-hook 'css-mode-hook 'company-mode))
- (use-package js2-mode
- :ensure t
- :bind (:map js2-mode-map
- (("C-x C-e" . js-send-last-sexp)
- ("C-M-x" . js-send-last-sexp-and-go)
- ("C-c C-b" . js-send-buffer-and-go)
- ("C-c C-l" . js-load-file-and-go)))
- :mode
- ("\\.js$" . js2-mode)
- ("\\.json$" . js2-jsx-mode)
- :config
- (custom-set-variables '(js2-strict-inconsistent-return-warning nil))
- (custom-set-variables '(js2-strict-missing-semi-warning nil))
- (setq js-indent-level 2)
- (setq js2-indent-level 2)
- (setq js2-basic-offset 2)
- ;; tern :- IDE like features for javascript and completion
- ;; http://ternjs.net/doc/manual.html#emacs
- (use-package tern
- :ensure t
- :config
- (defun my-js-mode-hook ()
- "Hook for `js-mode'."
- (set (make-local-variable 'company-backends)
- '((company-tern company-files))))
- (add-hook 'js2-mode-hook 'my-js-mode-hook)
- (add-hook 'js2-mode-hook 'company-mode))
- (add-hook 'js2-mode-hook 'tern-mode)
- ;; company backend for tern
- ;; http://ternjs.net/doc/manual.html#emacs
- (use-package company-tern
- :ensure t)
- ;; Run a JavaScript interpreter in an inferior process window
- ;; https://github.com/redguardtoo/js-comint
- (use-package js-comint
- :ensure t
- :config
- (setq inferior-js-program-command "node"))
- ;; js2-refactor :- refactoring options for emacs
- ;; https://github.com/magnars/js2-refactor.el
- (use-package js2-refactor
- :ensure t
- :defer t
- :diminish js2-refactor-mode
- :config
- (js2r-add-keybindings-with-prefix "C-c j r"))
- (add-hook 'js2-mode-hook 'js2-refactor-mode))
- (defun jsx-flycheck ()
- (when (equal web-mode-content-type "jsx")
- ;; enable flycheck
- (flycheck-select-checker 'jsxhint-checker)
- (flycheck-mode)))
- (use-package typescript-mode
- :ensure t)
- (use-package tide
- :ensure t)
- (defun setup-tide-mode ()
- (interactive)
- (tide-setup)
- (flycheck-mode +1)
- (setq flycheck-check-syntax-automatically '(save mode-enabled))
- (eldoc-mode +1)
- (tide-hl-identifier-mode +1)
- ;; company is an optional dependency. You have to
- ;; install it separately via package-install
- ;; `M-x package-install [ret] company`
- (company-mode +1))
- ;; aligns annotation to the right hand side
- (setq company-tooltip-align-annotations t)
- ;; formats the buffer before saving
- (add-hook 'before-save-hook 'tide-format-before-save)
- (add-hook 'typescript-mode-hook #'setup-tide-mode)
- ;; TSX
- (require 'web-mode)
- (add-to-list 'auto-mode-alist '("\\.tsx\\'" . web-mode))
- (add-hook 'web-mode-hook
- (lambda ()
- (when (string-equal "tsx" (file-name-extension buffer-file-name))
- (setup-tide-mode))))
- ;; enable typescript-tslint checker
- (flycheck-add-mode 'typescript-tslint 'web-mode)
- (add-hook 'js2-mode-hook #'setup-tide-mode)
- ;; configure javascript-tide checker to run after your default javascript checker
- (flycheck-add-next-checker 'javascript-eslint 'javascript-tide 'append)
- ;; JSX
- (require 'web-mode)
- (add-to-list 'auto-mode-alist '("\\.jsx\\'" . web-mode))
- (add-hook 'web-mode-hook
- (lambda ()
- (when (string-equal "jsx" (file-name-extension buffer-file-name))
- (setup-tide-mode))))
- ;; configure jsx-tide checker to run after your default jsx checker
- (flycheck-add-mode 'javascript-eslint 'web-mode)
- (flycheck-add-next-checker 'javascript-eslint 'jsx-tide 'append)
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy.
