2015-06-15 09:06:10 +02:00
|
|
|
;;; module-web.el
|
|
|
|
|
2016-01-01 16:19:44 -05:00
|
|
|
(add-hook! (sass-mode scss-mode) '(rainbow-mode flycheck-mode))
|
2015-10-09 18:00:24 -04:00
|
|
|
|
|
|
|
(use-package sass-mode
|
|
|
|
:mode "\\.sass$"
|
|
|
|
:config
|
2016-03-29 23:13:31 -04:00
|
|
|
(define-company-backend! sass-mode (css)))
|
2015-10-09 18:00:24 -04:00
|
|
|
|
|
|
|
(use-package scss-mode
|
|
|
|
:mode "\\.scss$"
|
2016-01-02 15:08:10 -05:00
|
|
|
:preface
|
|
|
|
(require 'css-mode)
|
2015-10-09 18:00:24 -04:00
|
|
|
:init
|
2016-02-20 15:30:30 -05:00
|
|
|
(define-docset! scss-mode "sass,bourbon")
|
2016-01-07 01:11:47 -05:00
|
|
|
(add-hook! scss-mode '(hs-minor-mode narf|hl-line-off))
|
2015-10-09 18:00:24 -04:00
|
|
|
(setq scss-compile-at-save nil)
|
|
|
|
:config
|
2016-03-28 21:39:13 -04:00
|
|
|
(sp-local-pair 'scss-mode "/*" "*/" :post-handlers '(("[d-3]||\n[i]" "RET") ("| " "SPC")))
|
|
|
|
|
2015-11-30 05:31:20 -05:00
|
|
|
(map! :map scss-mode-map
|
|
|
|
:n "M-r" 'narf/web-refresh-browser
|
2016-03-29 23:49:41 -04:00
|
|
|
(:localleader
|
2016-04-08 14:03:21 -04:00
|
|
|
:nv ";" 'narf/append-semicolon)
|
2015-11-30 05:31:20 -05:00
|
|
|
(:leader
|
2016-03-29 23:13:31 -04:00
|
|
|
:n ";" 'helm-css-scss
|
|
|
|
:n ":" 'helm-css-scss-multi))
|
|
|
|
|
|
|
|
(define-company-backend! scss-mode (css))
|
2015-10-09 18:00:24 -04:00
|
|
|
|
|
|
|
(after! web-beautify
|
|
|
|
(add-hook! scss-mode (setenv "jsbeautify_indent_size" "2"))
|
2015-11-30 05:31:20 -05:00
|
|
|
(map! :map scss-mode-map :m "gQ" 'web-beautify-css))
|
2015-10-09 18:00:24 -04:00
|
|
|
|
|
|
|
(after! emr
|
|
|
|
(emr-declare-command 'narf/scss-toggle-inline-or-block
|
|
|
|
:title "toggle inline/block"
|
|
|
|
:modes 'scss-mode
|
2016-03-29 23:13:31 -04:00
|
|
|
:predicate (lambda () (not (use-region-p))))))
|
2015-10-09 18:00:24 -04:00
|
|
|
|
2015-06-15 09:06:10 +02:00
|
|
|
(use-package web-beautify
|
|
|
|
:commands (web-beautify-js web-beautify-css web-beautify-html)
|
|
|
|
:init
|
|
|
|
(after! css-mode
|
|
|
|
(add-hook! css-mode (setenv "jsbeautify_indent_size" "2"))
|
2015-11-30 05:31:20 -05:00
|
|
|
(map! :map css-mode-map :m "gQ" 'web-beautify-css)))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
2016-01-18 01:43:28 -05:00
|
|
|
(use-package jaded-mode
|
2015-07-02 23:40:20 +02:00
|
|
|
:mode "\\.jade$"
|
2016-01-18 01:43:28 -05:00
|
|
|
:config
|
|
|
|
(map! :map jaded-mode-map
|
|
|
|
:i [tab] 'narf/dumb-indent
|
|
|
|
:i [backtab] 'narf/dumb-dedent))
|
2015-07-02 23:40:20 +02:00
|
|
|
|
2015-06-15 09:06:10 +02:00
|
|
|
(use-package web-mode
|
2016-03-27 18:18:43 -04:00
|
|
|
:mode ("\\.\\(p\\)?htm\\(l\\)?$"
|
2016-03-28 21:42:04 -04:00
|
|
|
"\\.\\(tpl\\|blade\\)\\(\\.php\\)?$"
|
2016-03-27 18:18:43 -04:00
|
|
|
"\\.erb$"
|
2016-03-28 21:42:04 -04:00
|
|
|
"wp-content/themes/.+/.+\\.php$")
|
2015-06-15 09:06:10 +02:00
|
|
|
:init
|
2016-01-18 01:43:28 -05:00
|
|
|
;; smartparens handles this
|
|
|
|
(setq web-mode-enable-auto-pairing nil
|
2015-12-23 03:46:12 -05:00
|
|
|
web-mode-enable-auto-quoting nil)
|
2015-06-15 09:06:10 +02:00
|
|
|
:config
|
2016-03-28 21:39:13 -04:00
|
|
|
(sp-with-modes '(web-mode)
|
|
|
|
(sp-local-pair "{{!--" "--}}" :post-handlers '(("||\n[i]" "RET") ("| " "SPC")))
|
|
|
|
(sp-local-pair "<%" "%>" :post-handlers '(("||\n[i]" "RET") ("| " "SPC")))
|
|
|
|
(sp-local-pair "{!!" "!!}" :post-handlers '(("||\n[i]" "RET") ("| " "SPC")))
|
|
|
|
(sp-local-pair "{#" "#}" :post-handlers '(("||\n[i]" "RET") ("| " "SPC"))))
|
|
|
|
|
2015-06-15 09:06:10 +02:00
|
|
|
(after! web-beautify
|
|
|
|
(add-hook! web-mode (setenv "jsbeautify_indent_size" "4"))
|
2015-11-30 05:31:20 -05:00
|
|
|
(map! :map web-mode-map :m "gQ" 'web-beautify-html))
|
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
|
2015-06-15 09:06:10 +02:00
|
|
|
|
2015-11-30 05:31:20 -05:00
|
|
|
:n "za" 'web-mode-fold-or-unfold
|
|
|
|
(:localleader :n "t" 'web-mode-element-rename)
|
2015-06-15 09:06:10 +02:00
|
|
|
|
2015-11-30 05:31:20 -05:00
|
|
|
:n "M-r" 'narf/web-refresh-browser
|
2015-07-31 18:45:33 +02:00
|
|
|
|
2015-11-30 05:31:20 -05:00
|
|
|
: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
|
|
|
|
|
|
|
(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
|
|
|
|
|
|
|
(define-minor-mode jekyll-mode
|
|
|
|
"Jekyll development mode."
|
|
|
|
:init-value nil
|
|
|
|
:lighter " :{"
|
|
|
|
:keymap (make-sparse-keymap)
|
|
|
|
(add-yas-minor-mode! 'jekyll-mode))
|
|
|
|
(associate! jekyll-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/")
|
|
|
|
:in (web-mode scss-mode html-mode markdown-mode yaml-mode))
|
2016-01-21 19:33:54 -05:00
|
|
|
(add-hook! jekyll-mode
|
|
|
|
(when (eq major-mode 'web-mode)
|
|
|
|
(web-mode-set-engine "django")))
|
2016-03-03 01:35:29 -05:00
|
|
|
(after! company-dict (add-to-list 'company-dict-minor-mode-list 'jekyll-mode))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
|
|
|
(define-minor-mode wordpress-mode
|
|
|
|
"Wordpress development mode."
|
|
|
|
:init-value nil
|
|
|
|
:lighter " wp"
|
|
|
|
:keymap (make-sparse-keymap)
|
|
|
|
(add-yas-minor-mode! 'wordpress-mode))
|
2016-01-21 19:33:54 -05:00
|
|
|
(associate! wordpress-mode
|
|
|
|
:match "/wp-\\(\\(content\\|admin\\|includes\\)/\\)?.+$"
|
2016-03-28 21:42:04 -04:00
|
|
|
:files ("wp-config.php" "wp-content/"))
|
2016-03-03 01:35:29 -05:00
|
|
|
(after! company-dict (add-to-list 'company-dict-minor-mode-list 'wordpress-mode))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
|
|
|
(provide 'module-web)
|
|
|
|
;;; module-web.el ends here
|