emacs-personal/modules/init-web-mode.el

76 lines
2.5 KiB
EmacsLisp

;;; 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)
("\\.tsx\\'" . 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