forked from FG42/FG42
121 lines
4.1 KiB
EmacsLisp
121 lines
4.1 KiB
EmacsLisp
;; Functions -------------------------------------------------
|
|
;;;###autoload
|
|
(defun web-mode-hook-func ()
|
|
"Hooks for Web mode."
|
|
(with-ability code-completion
|
|
(require 'company-web-html)
|
|
(set (make-local-variable
|
|
'company-backends) '(company-web-html))
|
|
|
|
(define-key web-mode-map (kbd "C-'") 'company-web-html))
|
|
(setq web-mode-css-indent-offset 2)
|
|
(setq web-mode-code-indent-offset 2)
|
|
|
|
(setq web-mode-markup-indent-offset 2))
|
|
|
|
;;;###autoload
|
|
(defun extensions/web-activate-modes ()
|
|
"Activate necessary modes"
|
|
(setq css-indent-offset 2)
|
|
|
|
(with-ability rainbow
|
|
(rainbow-mode t))
|
|
|
|
(with-ability spell
|
|
(flyspell-prog-mode))
|
|
|
|
(with-ability flycheck
|
|
(flycheck-mode t)))
|
|
|
|
;;;###autoload
|
|
(defun jsx ()
|
|
"Activate web-mode for editing jsx."
|
|
(interactive)
|
|
|
|
(flycheck-define-checker jsxhint-checker
|
|
"A JSX syntax and style checker based on JSXHint."
|
|
|
|
:command ("jsxhint" source)
|
|
:error-patterns
|
|
((error line-start (1+ nonl) ": line " line ", col " column ", " (message) line-end))
|
|
:modes (web-mode))
|
|
|
|
(add-hook 'web-mode-hook
|
|
(lambda ()
|
|
(when (equal web-mode-content-type "jsx")
|
|
;; enable flycheck
|
|
(flycheck-select-checker 'jsxhint-checker)
|
|
(flycheck-mode))))
|
|
|
|
(defadvice web-mode-highlight-part (around tweak-jsx activate)
|
|
(if (equal web-mode-content-type "jsx")
|
|
(let ((web-mode-enable-part-face nil))
|
|
ad-do-it)
|
|
ad-do-it))
|
|
|
|
(setq web-mode-markup-indent-offset 2)
|
|
(setq web-mode-code-indent-offset 2)
|
|
|
|
(setq web-mode-content-types-alist
|
|
'(("jsx" . "\\.js[x]?\\'")))
|
|
|
|
(web-mode))
|
|
|
|
;;;###autoload
|
|
(defun extensions/web-initialize ()
|
|
"Web development plugin initialization."
|
|
(message "Initializing 'web' extension.")
|
|
|
|
(ability web-editor ('flycheck)
|
|
"Gives FG42 the ability to edit web contents."
|
|
(require 'web-mode)
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.jsp\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.handlebars\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.html$" . web-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.jsx$" . jsx))
|
|
|
|
(add-hook 'web-mode-hook 'web-mode-hook-func)
|
|
(add-hook 'web-mode-hook 'emmet-mode)
|
|
(add-hook 'web-mode-hook 'extensions/web-activate-modes))
|
|
|
|
(ability css-editor
|
|
"Gives FG42 the ability to edit CSS."
|
|
(add-hook 'css-mode-hook 'extensions/web-activate-modes))
|
|
|
|
(ability sass-editor
|
|
"Gives FG42 the ability to edit SASS/SCSS."
|
|
|
|
(add-to-list 'auto-mode-alist '("\\.scss$" . scss-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.sass$" . sass-mode))
|
|
|
|
(setq scss-compile-at-save nil)
|
|
(setq sass-compile-at-save nil)
|
|
|
|
(add-hook 'scss-mode-hook 'extensions/web-activate-modes)
|
|
(add-hook 'sass-mode-hook 'extensions/web-activate-modes))
|
|
|
|
(ability less-editor
|
|
"Gives FG42 the ability to edit lesscss."
|
|
(add-to-list 'auto-mode-alist '("\\.less$" . less-css-mode))
|
|
(add-hook 'less-css-mode-hook 'extensions/web-activate-modes))
|
|
|
|
(ability js-editor
|
|
"Gives FG42 the ability to edit Javascript."
|
|
(add-hook 'js2-mode-hook 'extensions/web-activate-modes)
|
|
(add-to-list 'auto-mode-alist '("\\.js.erb$" . js2-mode))
|
|
(add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)))
|
|
(ability jsx-editor
|
|
"Gives FG42 the ability to edit JSX."
|
|
(add-to-list 'auto-mode-alist '("\\.jsx$" . jsx))))
|
|
|
|
|
|
|
|
(provide 'extensions/web/init)
|