daily pastebin goal
38%
SHARE
TWEET

js emacs

a guest Aug 31st, 2018 151 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (use-package web-mode
  2.   :ensure t
  3.   :bind (("C-c ]" . emmet-next-edit-point)
  4.          ("C-c [" . emmet-prev-edit-point)
  5.          ("C-c o b" . browse-url-of-file))
  6.   :mode
  7.   (("\\.js\\'" . web-mode)
  8.    ("\\.html?\\'" . web-mode)
  9.    ("\\.phtml?\\'" . web-mode)
  10.    ("\\.tpl\\.php\\'" . web-mode)
  11.    ("\\.[agj]sp\\'" . web-mode)
  12.    ("\\.as[cp]x\\'" . web-mode)
  13.    ("\\.erb\\'" . web-mode)
  14.    ("\\.mustache\\'" . web-mode)
  15.    ("\\.djhtml\\'" . web-mode)
  16.    ("\\.jsx$" . web-mode))
  17.    ("\\.blade.php\\'" . web-mode))
  18.  
  19. :config
  20. (setq web-mode-markup-indent-offset 2
  21.       web-mode-css-indent-offset 2
  22.       web-mode-code-indent-offset 2)
  23. (setq web-mode-engines-alist
  24.   '(("php"    . "\\.phtml\\'")
  25.     ("blade"  . "\\.blade\\.")))
  26.  
  27. (add-hook 'web-mode-hook 'jsx-flycheck)
  28.  
  29. (use-package php-mode
  30.   :ensure t)
  31.  
  32. (use-package phpunit
  33.   :ensure t)
  34.  
  35. ;; highlight enclosing tags of the element under cursor
  36. (setq web-mode-enable-current-element-highlight t)
  37.  
  38. (defadvice web-mode-highlight-part (around tweak-jsx activate)
  39.   (if (equal web-mode-content-type "jsx")
  40.       (let ((web-mode-enable-part-face nil))
  41.         ad-do-it)
  42.     ad-do-it))
  43.  
  44. ;; editing enhancements for web-mode
  45. ;; https://github.com/jtkDvlp/web-mode-edit-element
  46. (use-package web-mode-edit-element
  47.   :ensure t
  48.   :config (add-hook 'web-mode-hook 'web-mode-edit-element-minor-mode))
  49.  
  50.                                         ; snippets for HTML
  51. ;; https://github.com/smihica/emmet-mode
  52. (use-package emmet-mode
  53.   :ensure t
  54.   :init (setq emmet-move-cursor-between-quotes t) ;; default nil
  55.   :diminish (emmet-mode . " e"))
  56. (add-hook 'web-mode-hook 'emmet-mode)
  57.  
  58. (defun my-web-mode-hook ()
  59.   "Hook for `web-mode' config for company-backends."
  60.   (set (make-local-variable 'company-backends)
  61.        '((company-tern company-css company-web-html company-files))))
  62. (add-hook 'web-mode-hook 'my-web-mode-hook)
  63.  
  64. ;; Enable JavaScript completion between <script>...</script> etc.
  65. (defadvice company-tern (before web-mode-set-up-ac-sources activate)
  66.   "Set `tern-mode' based on current language before running company-tern."
  67.   (message "advice")
  68.   (if (equal major-mode 'web-mode)
  69.       (let ((web-mode-cur-language
  70.              (web-mode-language-at-pos)))
  71.         (if (or (string= web-mode-cur-language "javascript")
  72.                 (string= web-mode-cur-language "jsx"))
  73.             (unless tern-mode (tern-mode))
  74.           (if tern-mode (tern-mode -1))))))
  75. (add-hook 'web-mode-hook 'company-mode)
  76.  
  77. ;; configure CSS mode company backends
  78. (use-package css-mode
  79.   :ensure t
  80.   :config
  81.   (defun my-css-mode-hook ()
  82.     (set (make-local-variable 'company-backends)
  83.          '((company-css company-dabbrev-code company-files))))
  84.   (add-hook 'css-mode-hook 'my-css-mode-hook)
  85.   (add-hook 'css-mode-hook 'company-mode))
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92. (use-package js2-mode
  93.   :ensure t
  94.   :bind (:map js2-mode-map
  95.               (("C-x C-e" . js-send-last-sexp)
  96.                ("C-M-x" . js-send-last-sexp-and-go)
  97.                ("C-c C-b" . js-send-buffer-and-go)
  98.                ("C-c C-l" . js-load-file-and-go)))
  99.   :mode
  100.   ("\\.js$" . js2-mode)
  101.   ("\\.json$" . js2-jsx-mode)
  102.   :config
  103.   (custom-set-variables '(js2-strict-inconsistent-return-warning nil))
  104.   (custom-set-variables '(js2-strict-missing-semi-warning nil))
  105.  
  106.   (setq js-indent-level 2)
  107.   (setq js2-indent-level 2)
  108.   (setq js2-basic-offset 2)
  109.  
  110.   ;; tern :- IDE like features for javascript and completion
  111.   ;; http://ternjs.net/doc/manual.html#emacs
  112.   (use-package tern
  113.     :ensure t
  114.     :config
  115.     (defun my-js-mode-hook ()
  116.       "Hook for `js-mode'."
  117.       (set (make-local-variable 'company-backends)
  118.            '((company-tern company-files))))
  119.     (add-hook 'js2-mode-hook 'my-js-mode-hook)
  120.     (add-hook 'js2-mode-hook 'company-mode))
  121.  
  122.   (add-hook 'js2-mode-hook 'tern-mode)
  123.  
  124.   ;; company backend for tern
  125.   ;; http://ternjs.net/doc/manual.html#emacs
  126.   (use-package company-tern
  127.     :ensure t)
  128.  
  129.   ;; Run a JavaScript interpreter in an inferior process window
  130.   ;; https://github.com/redguardtoo/js-comint
  131.   (use-package js-comint
  132.     :ensure t
  133.     :config
  134.     (setq inferior-js-program-command "node"))
  135.  
  136.   ;; js2-refactor :- refactoring options for emacs
  137.   ;; https://github.com/magnars/js2-refactor.el
  138.   (use-package js2-refactor
  139.     :ensure t
  140.     :defer t
  141.     :diminish js2-refactor-mode
  142.     :config
  143.     (js2r-add-keybindings-with-prefix "C-c j r"))
  144.   (add-hook 'js2-mode-hook 'js2-refactor-mode))
  145.  
  146.   (defun jsx-flycheck ()
  147.     (when (equal web-mode-content-type "jsx")
  148.       ;; enable flycheck
  149.       (flycheck-select-checker 'jsxhint-checker)
  150.       (flycheck-mode)))
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157. (use-package typescript-mode
  158.   :ensure t)
  159.  
  160. (use-package tide
  161.   :ensure t)
  162.  
  163. (defun setup-tide-mode ()
  164.   (interactive)
  165.   (tide-setup)
  166.   (flycheck-mode +1)
  167.   (setq flycheck-check-syntax-automatically '(save mode-enabled))
  168.   (eldoc-mode +1)
  169.   (tide-hl-identifier-mode +1)
  170.   ;; company is an optional dependency. You have to
  171.   ;; install it separately via package-install
  172.   ;; `M-x package-install [ret] company`
  173.   (company-mode +1))
  174.  
  175. ;; aligns annotation to the right hand side
  176. (setq company-tooltip-align-annotations t)
  177.  
  178. ;; formats the buffer before saving
  179. (add-hook 'before-save-hook 'tide-format-before-save)
  180.  
  181. (add-hook 'typescript-mode-hook #'setup-tide-mode)
  182.  
  183. ;; TSX
  184. (require 'web-mode)
  185. (add-to-list 'auto-mode-alist '("\\.tsx\\'" . web-mode))
  186. (add-hook 'web-mode-hook
  187.           (lambda ()
  188.             (when (string-equal "tsx" (file-name-extension buffer-file-name))
  189.               (setup-tide-mode))))
  190. ;; enable typescript-tslint checker
  191. (flycheck-add-mode 'typescript-tslint 'web-mode)
  192.  
  193. (add-hook 'js2-mode-hook #'setup-tide-mode)
  194. ;; configure javascript-tide checker to run after your default javascript checker
  195. (flycheck-add-next-checker 'javascript-eslint 'javascript-tide 'append)
  196.  
  197. ;; JSX
  198. (require 'web-mode)
  199. (add-to-list 'auto-mode-alist '("\\.jsx\\'" . web-mode))
  200. (add-hook 'web-mode-hook
  201.           (lambda ()
  202.             (when (string-equal "jsx" (file-name-extension buffer-file-name))
  203.               (setup-tide-mode))))
  204. ;; configure jsx-tide checker to run after your default jsx checker
  205. (flycheck-add-mode 'javascript-eslint 'web-mode)
  206. (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. OK, I Understand
 
Top