aboutsummaryrefslogtreecommitdiffstats
path: root/modules/init-web-mode.el
blob: 33333dc90a05e055c5f98622189d4eee839e4f29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
;;; init-web-mode.el --- .Emacs Configuration -*- lexical-binding: t -*-
;;; Commentary:
;;

;;; Code:
(use-package web-mode
  :pin "MELPA"
  :mode (("\\.html?\\'"     . web-mode)
         ("\\.djhtml\\'"    . web-mode)
         ("\\.blade.php\\'" . web-mode)
         ("\\.tpl\\'"       . web-mode)
         ("\\.twig\\'"      . web-mode)
         ("\\.jsp\\'"       . web-mode)
         ("\\.gsp\\'"       . web-mode)
         ("\\.scss\\'"      . web-mode)
         ("\\.ctp\\'"       . web-mode))
  :config
  ;; web-modeの設定
  (setq web-mode-enable-current-element-highlight t)
  (set-face-background 'web-mode-current-element-highlight-face "#616161")

  ;; Fix smarty
  (setq web-mode-engines-alist
        '(("smarty" . "\\.tpl\\'")))

  ;; Django hook
  ;; require projectile
  (defun my-django-mode ()
    (when (and (require 'web-mode nil t)
               (fboundp 'web-mode-set-engine))
      (if (projectile-project-p)
          (when (file-exists-p (concat (projectile-project-root) "manage.py"))
            (web-mode-set-engine "django")

            ;; HTML auto functions
            (setq web-mode-enable-auto-opening t)
            (setq web-mode-enable-auto-closing t)
            (setq web-mode-enable-auto-quoting t)
            (setq web-mode-enable-auto-expanding t)

            ;; Auto-pairing
            (require 'smartparens)
            (sp-pair "{% " " %}")
            (sp-pair "{{ " " }}")
            (sp-pair "{# " " #}")
            (sp-pair "{" nil :actions :rem)
            (sp-pair "<" ">")
            (setq web-mode-enable-auto-pairing nil)))))
  ;; Pelican hook
  (defun my-pelican-mode ()
    (when (and (require 'web-mode nil t)
               (fboundp 'web-mode-set-engine))
      (if (projectile-project-p)
          (when (file-exists-p (concat (projectile-project-root) "pelicanconf.py"))
            (web-mode-set-engine "django")

            ;; HTML auto functions
            (setq web-mode-enable-auto-opening t)
            (setq web-mode-enable-auto-closing t)
            (setq web-mode-enable-auto-quoting t)
            (setq web-mode-enable-auto-expanding t)

            ;; Auto-pairing
            (require 'smartparens)
            (sp-pair "{% " " %}")
            (sp-pair "{" nil :actions :rem)
            (sp-pair "<" ">")
            (setq web-mode-enable-auto-pairing nil)))))
  :hook
  (web-mode . my-django-mode)
  (web-mode . my-pelican-mode))

(provide 'init-web-mode)
;;; init-web-mode.el ends here