Updating Doom Emacs.

This commit is contained in:
Derek Taylor
2020-06-19 22:43:40 -05:00
parent 0f664d532a
commit a5c86c514a
453 changed files with 13527 additions and 12455 deletions

View File

@@ -24,10 +24,9 @@
(add-hook! '(css-mode-hook sass-mode-hook stylus-mode-hook)
#'rainbow-mode)
;; built-in, and contains both css-mode & scss-mode
;; built-in. Contains both css-mode & scss-mode
(after! css-mode
;; css-mode hooks apply to scss and less-css modes
(add-hook 'css-mode-hook #'rainbow-delimiters-mode)
(map! :localleader
:map scss-mode-map
"b" #'+css/scss-build
@@ -36,7 +35,6 @@
(use-package! counsel-css
:when (featurep! :completion ivy)
:commands counsel-css
:hook (css-mode . counsel-css-imenu-setup)
:init
(map! :map (css-mode-map scss-mode-map less-css-mode-map)
@@ -62,5 +60,8 @@
;;; Tools
(when (featurep! +lsp)
(add-hook! '(css-mode-hook sass-mode-hook less-css-mode-hook)
(add-hook! '(css-mode-local-vars-hook
scss-mode-local-vars-hook
sass-mode-local-vars-hook
less-css-mode-local-vars-hook)
#'lsp!))

View File

@@ -1,9 +1,25 @@
;;; lang/web/+html.el -*- lexical-binding: t; -*-
(use-package! web-mode
:mode "\\.\\(?:as\\(?:[cp]x\\)\\|blade\\.php\\|erb\\|hbs\\|j\\(?:inja\\|sp\\)\\|mustache\\|p?html?\\|svelte\\|t\\(?:pl\\.php\\|sx\\|wig\\)\\|vue\\)\\'"
:mode "\\.[px]?html?\\'"
:mode "\\.\\(?:tpl\\|blade\\)\\(?:\\.php\\)?\\'"
:mode "\\.erb\\'"
:mode "\\.l?eex\\'"
:mode "\\.jsp\\'"
:mode "\\.as[cp]x\\'"
:mode "\\.hbs\\'"
:mode "\\.mustache\\'"
:mode "\\.svelte\\'"
:mode "\\.twig\\'"
:mode "\\.jinja2?\\'"
:mode "wp-content/themes/.+/.+\\.php\\'"
:mode "templates/.+\\.php\\'"
:init
;; If the user has installed `vue-mode' then, by appending this to
;; `auto-mode-alist' rather than prepending it, its autoload will have
;; priority over this one.
(add-to-list 'auto-mode-alist '("\\.vue\\'" . web-mode) 'append)
:mode "\\.vue\\'"
:config
(set-docsets! 'web-mode "HTML" "CSS" "Twig" "WordPress")
@@ -13,7 +29,7 @@
'("tidy" "-q" "-indent"
"--tidy-mark" "no"
"--drop-empty-elements" "no"
"--show-body-only" "auto" ; don't inject html/body tags
("--show-body-only" "%s" (if +format-region-p "true" "auto"))
("--indent-spaces" "%d" tab-width)
("--indent-with-tabs" "%s" (if indent-tabs-mode "yes" "no"))
("-xml" (memq major-mode '(nxml-mode xml-mode))))
@@ -46,6 +62,29 @@
"\\(?:>\\|]\\|}\\)+\\'")))))
(delq! nil web-mode-engines-auto-pairs))
(add-to-list 'web-mode-engines-alist '("elixir" . "\\.eex\\'"))
(let ((types '("javascript" "jsx")))
(setq web-mode-comment-formats
(cl-remove-if (lambda (item) (member (car item) types))
web-mode-comment-formats))
(dolist (type types)
(push (cons type "//") web-mode-comment-formats)))
(add-hook! 'web-mode-hook
(defun +web--fix-js-comments-h ()
"Fix comment handling in `web-mode' for JavaScript."
(when (member web-mode-content-type '("javascript" "jsx"))
;; For some reason the default is to insert HTML comments even
;; in JavaScript.
(setq-local comment-start "//")
(setq-local comment-end "")
;; Needed since otherwise the default value generated by
;; `comment-normalize-vars' will key off the syntax and think
;; that a single "/" starts a comment, which completely borks
;; auto-fill.
(setq-local comment-start-skip "// *"))))
(map! :map web-mode-map
(:localleader
:desc "Rehighlight buffer" "h" #'web-mode-buffer-highlight
@@ -124,4 +163,6 @@
(when (featurep! +lsp)
(add-hook! '(html-mode-hook web-mode-hook) #'lsp!))
(add-hook! '(html-mode-local-vars-hook
web-mode-local-vars-hook)
#'lsp!))

View File

@@ -2,20 +2,25 @@
;;;###if (featurep! :editor evil)
;;;###autoload (autoload '+web:encode-html-entities "lang/web/autoload/evil" nil t)
(evil-define-operator +web:encode-html-entities (beg end &optional input)
(evil-define-operator +web:encode-html-entities (beg end &optional bang input)
"Encodes HTML entities in INPUT or the selected region."
(interactive "<r><a>")
(interactive "<r><!><a>")
(cond (input
(insert (+web-encode-entities input)))
(let ((result (+web-encode-entities input)))
(if bang
(kill-new result)
(insert result))))
((and beg end)
(+web/encode-entities-region beg end))))
;;;###autoload (autoload '+web:decode-html-entities "lang/web/autoload/evil" nil t)
(evil-define-operator +web:decode-html-entities (beg end &optional input)
(evil-define-operator +web:decode-html-entities (beg end &optional bang input)
"Decodes HTML entities in INPUT or the selected region."
(interactive "<r><a>")
(interactive "<r><!><a>")
(cond (input
(insert (+web-decode-entities input)))
(let ((result (+web-decode-entities input)))
(if bang
(kill-new result)
(insert result))))
((and beg end)
(+web/decode-entities-region beg end))))

View File

@@ -2,6 +2,7 @@
(defvar +web-entities-list
[["&amp;" "&"] ["&nbsp;" " "] ["&ensp;" ""] ["&emsp;" ""] ["&thinsp;" ""]
["&lt;" "<"] ["&gt;" ">"]
["&rlm;" ""] ["&lrm;" ""] ["&zwj;" ""] ["&zwnj;" ""]
["&iexcl;" "¡"] ["&cent;" "¢"] ["&pound;" "£"] ["&curren;" "¤"] ["&yen;" "¥"]
["&brvbar;" "¦"] ["&sect;" "§"] ["&uml;" "¨"] ["&copy;" "©"] ["&ordf;" "ª"]

View File

@@ -14,8 +14,8 @@
(setq-hook! 'rjsx-mode-hook emmet-expand-jsx-className? t)
(map! :map emmet-mode-keymap
:v [tab] #'emmet-wrap-with-markup
:i [tab] #'+web/indent-or-yas-or-emmet-expand
:i "M-E" #'emmet-expand-line))
[tab] #'+web/indent-or-yas-or-emmet-expand
"M-E" #'emmet-expand-line))
;;
@@ -29,6 +29,13 @@
(when (eq major-mode 'web-mode)
(web-mode-set-engine "django")))
(def-project-mode! +web-django-mode
:modes '(web-mode python-mode)
:files ("manage.py")
:on-enter
(when (derived-mode-p 'web-mode)
(web-mode-set-engine "django")))
(def-project-mode! +web-wordpress-mode
:modes '(php-mode web-mode css-mode haml-mode pug-mode)
:files (or "wp-config.php" "wp-config-sample.php"))

View File

@@ -2,23 +2,23 @@
;;; lang/web/packages.el
;; +html.el
(package! emmet-mode)
(package! haml-mode)
(package! pug-mode)
(package! slim-mode)
(when (package! web-mode)
(package! emmet-mode :pin "1acb821e0142136344ccf40c1e5fb664d7db2e70")
(package! haml-mode :pin "bf5b6c11b1206759d2b28af48765e04882dd1fc4")
(package! pug-mode :pin "685fd3414d89736bf232f5d1a6bed9e0353b98fe")
(package! slim-mode :pin "3636d18ab1c8b316eea71c4732eb44743e2ded87")
(when (package! web-mode :pin "a2badd04060f5f458f8f3def81cdaf81cfafb5a7")
(when (featurep! :completion company)
(package! company-web)))
(package! company-web :pin "f0cc9187c9c34f72ad71f5649a69c74f996bae9a")))
;; +css.el
(package! css-mode :built-in t)
(package! less-css-mode :built-in t)
(package! less-css-mode :built-in t :pin "c7fa3d56d83206b28657f2e56439dc62280a2bf2")
(package! sass-mode)
(package! stylus-mode)
(package! sws-mode)
(package! rainbow-mode)
(package! sass-mode :pin "247a0d4b509f10b28e4687cd8763492bca03599b")
(package! stylus-mode :pin "4dbde92542fc7ad61df38776980905a4721d642e")
(package! sws-mode :pin "4dbde92542fc7ad61df38776980905a4721d642e")
(package! rainbow-mode :pin "f780ddb18c2a73a666d093f606df92058e5601ea")
(when (featurep! :completion ivy)
(package! counsel-css))
(package! counsel-css :pin "6427dfcbda0d2bbd81db03f9d6b56b06c260ac02"))
(when (featurep! :completion helm)
(package! helm-css-scss))
(package! helm-css-scss :pin "48b996f73af1fef8d6e88a1c545d98f8c50b0cf3"))