2015-06-15 09:06:10 +02:00
|
|
|
;;; module-web.el
|
|
|
|
|
2016-05-12 02:56:15 -04:00
|
|
|
(use-package haml-mode :mode "\\.haml$")
|
2015-10-09 18:00:24 -04:00
|
|
|
|
2016-05-18 02:09:07 -04:00
|
|
|
(use-package pug-mode
|
|
|
|
:mode ("\\.jade$" "\\.pug$")
|
2016-01-18 01:43:28 -05:00
|
|
|
:config
|
2016-05-18 04:33:57 -04:00
|
|
|
(def-company-backend! pug-mode (yasnippet))
|
2016-04-23 22:08:46 -04:00
|
|
|
(push '("jade" "html") projectile-other-file-alist)
|
2016-05-18 02:09:07 -04:00
|
|
|
(push '("pug" "html") projectile-other-file-alist)
|
|
|
|
(map! :map pug-mode-map
|
2016-05-20 22:37:30 -04:00
|
|
|
:i [tab] 'doom/dumb-indent
|
|
|
|
:i [backtab] 'doom/dumb-dedent))
|
2015-07-02 23:40:20 +02:00
|
|
|
|
2015-06-15 09:06:10 +02:00
|
|
|
(use-package web-mode
|
2016-04-23 22:08:46 -04:00
|
|
|
:mode ("\\.p?html?$"
|
2016-03-28 21:42:04 -04:00
|
|
|
"\\.\\(tpl\\|blade\\)\\(\\.php\\)?$"
|
2016-03-27 18:18:43 -04:00
|
|
|
"\\.erb$"
|
2016-05-11 05:36:49 -04:00
|
|
|
"\\.jsp$"
|
2016-04-23 22:08:46 -04:00
|
|
|
"\\.as[cp]x$"
|
|
|
|
"\\.mustache$"
|
2016-03-28 21:42:04 -04:00
|
|
|
"wp-content/themes/.+/.+\\.php$")
|
2015-06-15 09:06:10 +02:00
|
|
|
:init
|
2016-04-19 03:14:31 -04:00
|
|
|
(add-hook 'web-mode-hook 'turn-off-smartparens-mode)
|
|
|
|
:config
|
2016-05-18 04:33:57 -04:00
|
|
|
(def-company-backend! web-mode (web-html yasnippet))
|
2016-04-26 01:57:27 -04:00
|
|
|
(setq web-mode-enable-html-entities-fontification t)
|
2016-05-19 03:19:54 -04:00
|
|
|
(push '("html" "jade" "pug" "jsx" "tsx") projectile-other-file-alist)
|
2016-04-23 22:08:46 -04:00
|
|
|
|
2016-04-19 03:14:31 -04:00
|
|
|
(map! :map web-mode-map :i "SPC" 'self-insert-command)
|
2015-06-15 09:06:10 +02:00
|
|
|
|
2015-07-22 17:36:03 +02:00
|
|
|
(after! nlinum
|
|
|
|
;; Fix blank line numbers after unfolding
|
|
|
|
(advice-add 'web-mode-fold-or-unfold :after 'nlinum--flush))
|
|
|
|
|
2015-11-30 05:31:20 -05:00
|
|
|
(map! :map web-mode-map
|
|
|
|
"M-/" 'web-mode-comment-or-uncomment
|
2016-05-20 22:37:30 -04:00
|
|
|
:n "M-r" 'doom/web-refresh-browser
|
2015-11-30 05:31:20 -05:00
|
|
|
:n "za" 'web-mode-fold-or-unfold
|
|
|
|
(:localleader :n "t" 'web-mode-element-rename)
|
|
|
|
:nv "]a" 'web-mode-attribute-next
|
|
|
|
:nv "[a" 'web-mode-attribute-previous
|
|
|
|
:nv "]t" 'web-mode-tag-next
|
|
|
|
:nv "[t" 'web-mode-tag-previous
|
|
|
|
:nv "]T" 'web-mode-element-child
|
|
|
|
:nv "[T" 'web-mode-element-parent))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
2016-05-11 05:36:49 -04:00
|
|
|
|
|
|
|
;;
|
|
|
|
;; Tools
|
2016-04-19 03:14:31 -04:00
|
|
|
;;
|
2016-05-11 05:36:49 -04:00
|
|
|
|
2015-06-15 09:06:10 +02:00
|
|
|
(use-package emmet-mode
|
2016-03-26 01:22:06 -04:00
|
|
|
:commands (emmet-mode)
|
2015-11-14 02:41:53 -05:00
|
|
|
:init
|
|
|
|
(add-hook! (scss-mode web-mode html-mode haml-mode nxml-mode) 'emmet-mode)
|
|
|
|
(defvar emmet-mode-keymap (make-sparse-keymap))
|
2015-06-15 09:06:10 +02:00
|
|
|
:config
|
|
|
|
(setq emmet-move-cursor-between-quotes t)
|
2015-11-30 05:31:20 -05:00
|
|
|
(map! :map emmet-mode-keymap
|
|
|
|
:v "M-e" 'emmet-wrap-with-markup
|
|
|
|
:i "M-e" 'emmet-expand-yas
|
|
|
|
:i "M-E" 'emmet-expand-line))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
2016-05-11 05:36:49 -04:00
|
|
|
|
2016-04-16 21:36:24 -04:00
|
|
|
;;
|
2016-05-11 05:36:49 -04:00
|
|
|
;; Project types
|
|
|
|
;;
|
|
|
|
|
2016-05-20 16:56:36 -04:00
|
|
|
(defvar bower-conf (make-hash-table :test 'equal))
|
|
|
|
(def-project-type! bower "bower"
|
|
|
|
:modes (web-mode js-mode coffee-mode css-mode sass-mode pug-mode)
|
|
|
|
:files ("bower.json")
|
|
|
|
:when
|
|
|
|
(lambda (&rest _)
|
2016-05-20 22:37:30 -04:00
|
|
|
(let* ((project-path (doom/project-root))
|
2016-05-20 16:56:36 -04:00
|
|
|
(hash (gethash project-path bower-conf))
|
|
|
|
(package-file (f-expand "bower.json" project-path))
|
|
|
|
deps)
|
|
|
|
(awhen (and (not hash) (f-exists? package-file)
|
2016-06-06 19:40:14 -04:00
|
|
|
(ignore-errors (json-read-file package-file)))
|
2016-05-20 16:56:36 -04:00
|
|
|
(puthash project-path it bower-conf)))
|
|
|
|
t))
|
|
|
|
|
|
|
|
(def-project-type! angularjs "angular"
|
|
|
|
:modes (nodejs-project-mode bower-project-mode)
|
|
|
|
:when
|
|
|
|
(lambda (&rest _)
|
2016-05-20 22:37:30 -04:00
|
|
|
(let* ((project (doom/project-root))
|
2016-05-20 16:56:36 -04:00
|
|
|
(bower (gethash project bower-conf))
|
|
|
|
(npm (gethash project npm-conf))
|
|
|
|
(deps (append (cdr-safe (assq 'dependencies bower))
|
|
|
|
(cdr-safe (assq 'dependencies npm))
|
|
|
|
(cdr-safe (assq 'devDependencies bower))
|
|
|
|
(cdr-safe (assq 'devDependencies npm)))))
|
|
|
|
(assq 'angular deps))))
|
|
|
|
|
2016-04-23 22:08:46 -04:00
|
|
|
(def-project-type! jekyll ":{"
|
2016-05-20 09:20:34 -04:00
|
|
|
:modes (web-mode js-mode coffee-mode css-mode haml-mode pug-mode)
|
2016-01-21 19:33:54 -05:00
|
|
|
:match "/\\(\\(css\\|_\\(layouts\\|posts\\|sass\\)\\)/.+\\|.+.html\\)$"
|
2016-03-28 21:42:04 -04:00
|
|
|
:files ("config.yml" "_layouts/")
|
2016-04-19 03:14:31 -04:00
|
|
|
(add-hook! mode
|
2016-04-16 21:36:24 -04:00
|
|
|
(when (eq major-mode 'web-mode)
|
|
|
|
(web-mode-set-engine "django"))))
|
|
|
|
|
2016-04-23 22:08:46 -04:00
|
|
|
(def-project-type! wordpress "wp"
|
2016-05-19 03:19:54 -04:00
|
|
|
:modes (php-mode web-mode css-mode haml-mode pug-mode)
|
2016-01-21 19:33:54 -05:00
|
|
|
:match "/wp-\\(\\(content\\|admin\\|includes\\)/\\)?.+$"
|
2016-03-28 21:42:04 -04:00
|
|
|
:files ("wp-config.php" "wp-content/"))
|
2016-04-16 21:36:24 -04:00
|
|
|
|
2015-06-15 09:06:10 +02:00
|
|
|
(provide 'module-web)
|
|
|
|
;;; module-web.el ends here
|