conf-web-mode.el 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. ;;; Code:
  2. (require 'web-mode)
  3. (require 'company)
  4. (require 'company-web-html)
  5. (require 'company-web-jade)
  6. (require 'web-beautify)
  7. ;; Control
  8. (defcustom distopico:web-company-backends
  9. '(company-yasnippet
  10. company-dabbrev company-capf
  11. company-keywords company-restclient
  12. company-dabbrev-code company-gtags company-etags)
  13. "General `company-mode' backends for diferents web modes."
  14. :type 'list
  15. :group 'distopico)
  16. ;; Baisc
  17. (add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
  18. (add-to-list 'auto-mode-alist '("\\.inc\\'" . web-mode))
  19. (add-to-list 'auto-mode-alist '("\\.tpl\\'" . web-mode))
  20. (add-to-list 'auto-mode-alist '("\\.ftl\\'" . web-mode))
  21. (add-to-list 'auto-mode-alist '("\\.php\\'" . php-mode))
  22. (add-to-list 'auto-mode-alist '("\\.blade\\.php\\'" . web-mode))
  23. (add-to-list 'auto-mode-alist '("\\.jsp\\'" . web-mode))
  24. (add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
  25. (add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
  26. (add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
  27. (add-to-list 'auto-mode-alist '("\\.swig\\'" . web-mode))
  28. (add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
  29. (add-to-list 'auto-mode-alist '("\\.*tpl\\'" . web-mode))
  30. (add-to-list 'auto-mode-alist '("\\.*tml\\'" . web-mode))
  31. (add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
  32. (add-to-list 'auto-mode-alist '("/\\(views\\|html\\|templates\\)/.*\\.php\\'" . web-mode))
  33. ;; Engines
  34. (setq web-mode-engines-alist
  35. '(
  36. ("php" . "\\.phtml\\'")
  37. ("blade" . "\\.blade\\'")
  38. ("django" . "\\.[sd]tpl\\'")
  39. ("django" . "\\.[sd]tml\\'")
  40. ("swig" . "\\.swig\\'")))
  41. ;; Settings
  42. (setq-default web-mode-enable-auto-pairing t
  43. web-mode-enable-auto-opening t
  44. web-mode-enable-auto-closing t
  45. web-mode-enable-auto-indentation t
  46. web-mode-enable-auto-quoting t
  47. web-mode-enable-auto-expanding t
  48. web-mode-enable-block-face t
  49. web-mode-enable-part-face t
  50. web-mode-enable-comment-keywords t
  51. web-mode-enable-css-colorization t
  52. web-mode-enable-current-element-highlight t
  53. web-mode-enable-current-column-highlight t
  54. web-mode-enable-heredoc-fontification t
  55. web-mode-enable-engine-detection t
  56. web-mode-markup-indent-offset 2
  57. web-mode-css-indent-offset 2
  58. web-mode-code-indent-offset 2
  59. web-mode-style-padding 2
  60. web-mode-script-padding 2
  61. web-mode-block-padding 0
  62. web-mode-comment-style 2)
  63. ;; Custom web-mode colors
  64. (custom-set-faces
  65. '(web-mode-html-tag-face
  66. ((t (:foreground "#729fcf"))))
  67. '(web-mode-html-tag-bracket-face
  68. ((t (:foreground "#FFE84B"))))
  69. '(web-mode-current-element-highlight-face
  70. ((t (:foreground "#FF8A4B"))))
  71. '(web-mode-current-element-highlight-face
  72. ((t (:background "#000000"
  73. :foreground "#FF8A4B")))))
  74. (eval-after-load 'web-mode
  75. '(progn
  76. ;; Set some keys
  77. (define-key web-mode-map (kbd "C-c C-b f") 'web-beautify-html)
  78. (define-key web-mode-map (kbd "C-'") 'company-web-html)))
  79. ;; Functions
  80. (defun distopico:web-mode-hook ()
  81. "Hooks for `web-mode'."
  82. ;; Company-mode
  83. (add-to-list (make-local-variable 'distopico:web-company-backends) 'company-web-html)
  84. (add-to-list (make-local-variable 'company-backends) distopico:web-company-backends))
  85. (defun distopico:pug-mode-hook ()
  86. "Hooks for `pug-mode'."
  87. (aggressive-indent-mode -1)
  88. ;; Company-mode
  89. (add-to-list (make-local-variable 'distopico:web-company-backends) 'company-web-jade)
  90. (add-to-list (make-local-variable 'company-backends) distopico:web-company-backends))
  91. (defun distopico:web-mode-before-auto-complete-hooks ()
  92. (let ((web-mode-cur-language
  93. (web-mode-language-at-pos)))
  94. (if (string= web-mode-cur-language "php")
  95. (yas-activate-extra-mode 'php-mode)
  96. (yas-deactivate-extra-mode 'php-mode))
  97. (if (string= web-mode-cur-language "css")
  98. (setq emmet-use-css-transform t)
  99. (setq emmet-use-css-transform nil))))
  100. ;; Hooks
  101. (add-hook 'web-mode-hook 'distopico:web-mode-hook)
  102. (add-hook 'web-mode-before-auto-complete-hooks 'distopico:web-mode-before-auto-complete-hooks)
  103. (add-hook 'pug-mode-hook 'distopico:pug-mode-hook)
  104. (provide 'conf-web-mode)