Update modules/lang/*
This commit is contained in:
parent
f0adef1b01
commit
e14e25ecb4
68 changed files with 1487 additions and 750 deletions
47
modules/lang/web/+css.el
Normal file
47
modules/lang/web/+css.el
Normal file
|
@ -0,0 +1,47 @@
|
|||
;;; lang/web/+css.el
|
||||
|
||||
(sp-with-modes '(css-mode scss-mode less-css-mode stylus-mode)
|
||||
(sp-local-pair "/*" "*/" :post-handlers '(("[d-3]||\n[i]" "RET") ("| " "SPC"))))
|
||||
|
||||
(@map :map* (css-mode-map scss-mode-map less-css-mode-map)
|
||||
:n "M-R" '+css/web-refresh-browser
|
||||
:localleader
|
||||
:nv ";" '+css/append-semicolon
|
||||
:prefix "r"
|
||||
:n "b" '+css/toggle-inline-or-block)
|
||||
|
||||
|
||||
;;
|
||||
;; Packages
|
||||
;;
|
||||
|
||||
(@def-package css-mode
|
||||
:mode "\\.css$"
|
||||
:mode ("\\.scss$" . scss-mode)
|
||||
:init
|
||||
(@add-hook css-mode
|
||||
'(yas-minor-mode-on flycheck-mode rainbow-mode highlight-numbers-mode
|
||||
;; doom|counsel-css-imenu-setup
|
||||
))
|
||||
|
||||
:config
|
||||
(@set :company-backend '(css-mode scss-mode) '(company-css company-yasnippet))
|
||||
(@set :build 'scss 'scss-mode '+css/scss-build))
|
||||
|
||||
|
||||
(@def-package sass-mode
|
||||
:mode "\\.sass$"
|
||||
:config
|
||||
(setq sass-command-options '("--style compressed"))
|
||||
(@set :build 'sass 'sass-mode '+css/sass-build)
|
||||
(@set :company-backend 'sass-mode '(company-css company-yasnippet)))
|
||||
|
||||
|
||||
(@def-package less-css-mode
|
||||
:mode "\\.less$")
|
||||
|
||||
|
||||
(@def-package stylus-mode
|
||||
:mode "\\.styl$"
|
||||
:init (@add-hook stylus-mode '(yas-minor-mode-on flycheck-mode)))
|
||||
|
63
modules/lang/web/+html.el
Normal file
63
modules/lang/web/+html.el
Normal file
|
@ -0,0 +1,63 @@
|
|||
;;; lang/web/config.el
|
||||
|
||||
(@def-package web-mode
|
||||
:mode ("\\.p?html?$"
|
||||
"\\.\\(tpl\\|blade\\)\\(\\.php\\)?$"
|
||||
"\\.erb$"
|
||||
"\\.jsp$"
|
||||
"\\.as[cp]x$"
|
||||
"\\.mustache$"
|
||||
"\\.tsx$"
|
||||
"wp-content/themes/.+/.+\\.php$")
|
||||
:init
|
||||
(add-hook 'web-mode-hook 'turn-off-smartparens-mode)
|
||||
:config
|
||||
(@set :company-backend 'web-mode '(company-web-html company-yasnippet))
|
||||
(setq web-mode-enable-html-entities-fontification t)
|
||||
|
||||
;; Fix blank line numbers after unfolding
|
||||
(advice-add 'web-mode-fold-or-unfold :after 'nlinum--flush)
|
||||
|
||||
(@map :map web-mode-map
|
||||
(:localleader :n "t" 'web-mode-element-rename)
|
||||
"M-/" 'web-mode-comment-or-uncomment
|
||||
:i "SPC" 'self-insert-command
|
||||
:n "M-r" 'doom/web-refresh-browser
|
||||
:n "za" 'web-mode-fold-or-unfold
|
||||
:nv "]a" 'web-mode-attribute-next
|
||||
:nv "[a" 'web-mode-attribute-previous
|
||||
:nv "]t" 'web-mode-tag-next
|
||||
:nv "[t" 'web-mode-tag-previous
|
||||
:nv "]T" 'web-mode-element-child
|
||||
:nv "[T" 'web-mode-element-parent)
|
||||
|
||||
(@def-package company-web :after company))
|
||||
|
||||
|
||||
(@def-package haml-mode :mode "\\.haml$")
|
||||
|
||||
|
||||
(@def-package pug-mode
|
||||
:mode ("\\.jade$" "\\.pug$")
|
||||
:config
|
||||
(@set :company-backend 'pug-mode '(company-yasnippet))
|
||||
(@map :map pug-mode-map
|
||||
:i [tab] 'doom/dumb-indent
|
||||
:i [backtab] 'doom/dumb-dedent))
|
||||
|
||||
|
||||
;;
|
||||
;; Tools
|
||||
;;
|
||||
|
||||
(@def-package emmet-mode
|
||||
:commands emmet-mode
|
||||
:preface (defvar emmet-mode-keymap (make-sparse-keymap))
|
||||
:init
|
||||
(@add-hook (scss-mode web-mode html-mode haml-mode nxml-mode) 'emmet-mode)
|
||||
:config
|
||||
(setq emmet-move-cursor-between-quotes t)
|
||||
(@map :map emmet-mode-keymap
|
||||
:v "M-e" 'emmet-wrap-with-markup
|
||||
:i "M-e" 'emmet-expand-yas
|
||||
:i "M-E" 'emmet-expand-line))
|
7
modules/lang/web/autoload/css.el
Normal file
7
modules/lang/web/autoload/css.el
Normal file
|
@ -0,0 +1,7 @@
|
|||
;;; lang/web/+css.el
|
||||
|
||||
;;;###autoload
|
||||
(defun +css/scss-build ()) ; TODO
|
||||
|
||||
;;;###autoload
|
||||
(defun +css/sass-build ()) ; TODO
|
20
modules/lang/web/autoload/evil.el
Normal file
20
modules/lang/web/autoload/evil.el
Normal file
|
@ -0,0 +1,20 @@
|
|||
;;; lang/html/autoload/evil.el
|
||||
|
||||
;;;###autoload (autoload '+html:encode-html-entities "lang/html/autoload/evil" nil t)
|
||||
(evil-define-operator +html:encode-html-entities (beg end &optional input)
|
||||
"Encodes HTML entities in the selected region."
|
||||
(interactive "<r><a>")
|
||||
(cond (input
|
||||
(insert (+html-encode-entities input)))
|
||||
((and beg end)
|
||||
(+html/encode-entities-region beg end))))
|
||||
|
||||
;;;###autoload (autoload '+html:decode-html-entities "lang/html/autoload/evil" nil t)
|
||||
(evil-define-operator +html:decode-html-entities (beg end &optional input)
|
||||
"Decodes HTML entities in the selected region."
|
||||
(interactive "<r><a>")
|
||||
(cond (input
|
||||
(insert (+html-decode-entities input)))
|
||||
((and beg end)
|
||||
(+html/decode-entities-region beg end))))
|
||||
|
59
modules/lang/web/autoload/html.el
Normal file
59
modules/lang/web/autoload/html.el
Normal file
|
@ -0,0 +1,59 @@
|
|||
;;; lang/web/autoload/html.el
|
||||
|
||||
;;;###autoload
|
||||
(defvar +web-entities-list
|
||||
[[" " " "] [" " " "] [" " " "] [" " " "]
|
||||
["‏" ""] ["‎" ""] ["‍" ""] ["‌" ""]
|
||||
["¡" "¡"] ["¢" "¢"] ["£" "£"] ["¤" "¤"] ["¥" "¥"] ["¦" "¦"] ["§" "§"] ["¨" "¨"] ["©" "©"] ["ª" "ª"] ["«" "«"] ["¬" "¬"] ["­" ""] ["®" "®"] ["¯" "¯"] ["°" "°"] ["±" "±"] ["²" "²"] ["³" "³"] ["´" "´"] ["µ" "µ"] ["¶" "¶"] ["·" "·"] ["¸" "¸"] ["¹" "¹"] ["º" "º"] ["»" "»"] ["¼" "¼"] ["½" "½"] ["¾" "¾"] ["¿" "¿"]
|
||||
["À" "À"] ["Á" "Á"] ["Â" "Â"] ["Ã" "Ã"] ["Ä" "Ä"] ["Å" "Å"] ["Æ" "Æ"] ["Ç" "Ç"] ["È" "È"] ["É" "É"] ["Ê" "Ê"] ["Ë" "Ë"] ["Ì" "Ì"] ["Í" "Í"] ["Î" "Î"] ["Ï" "Ï"] ["Ð" "Ð"] ["Ñ" "Ñ"] ["Ò" "Ò"] ["Ó" "Ó"] ["Ô" "Ô"] ["Õ" "Õ"] ["Ö" "Ö"] ["×" "×"] ["Ø" "Ø"] ["Ù" "Ù"] ["Ú" "Ú"] ["Û" "Û"] ["Ü" "Ü"] ["Ý" "Ý"] ["Þ" "Þ"] ["ß" "ß"] ["à" "à"] ["á" "á"] ["â" "â"] ["ã" "ã"] ["ä" "ä"] ["å" "å"] ["æ" "æ"] ["ç" "ç"] ["è" "è"] ["é" "é"] ["ê" "ê"] ["ë" "ë"] ["ì" "ì"] ["í" "í"] ["î" "î"] ["ï" "ï"] ["ð" "ð"] ["ñ" "ñ"] ["ò" "ò"] ["ó" "ó"] ["ô" "ô"] ["õ" "õ"] ["ö" "ö"]
|
||||
["÷" "÷"] ["ø" "ø"] ["ù" "ù"] ["ú" "ú"] ["û" "û"] ["ü" "ü"] ["ý" "ý"] ["þ" "þ"] ["ÿ" "ÿ"] ["ƒ" "ƒ"]
|
||||
["Α" "Α"] ["Β" "Β"] ["Γ" "Γ"] ["Δ" "Δ"] ["Ε" "Ε"] ["Ζ" "Ζ"] ["Η" "Η"] ["Θ" "Θ"] ["Ι" "Ι"] ["Κ" "Κ"] ["Λ" "Λ"] ["Μ" "Μ"] ["Ν" "Ν"] ["Ξ" "Ξ"] ["Ο" "Ο"] ["Π" "Π"] ["Ρ" "Ρ"] ["Σ" "Σ"] ["Τ" "Τ"] ["Υ" "Υ"] ["Φ" "Φ"] ["Χ" "Χ"] ["Ψ" "Ψ"] ["Ω" "Ω"] ["α" "α"] ["β" "β"] ["γ" "γ"] ["δ" "δ"] ["ε" "ε"] ["ζ" "ζ"] ["η" "η"] ["θ" "θ"] ["ι" "ι"] ["κ" "κ"] ["λ" "λ"] ["μ" "μ"] ["ν" "ν"] ["ξ" "ξ"] ["ο" "ο"] ["π" "π"] ["ρ" "ρ"] ["ς" "ς"] ["σ" "σ"] ["τ" "τ"] ["υ" "υ"] ["φ" "φ"] ["χ" "χ"] ["ψ" "ψ"] ["ω" "ω"] ["ϑ" "ϑ"] ["ϒ" "ϒ"] ["ϖ" "ϖ"]
|
||||
["•" "•"] ["…" "…"] ["′" "′"] ["″" "″"] ["‾" "‾"] ["⁄" "⁄"] ["℘" "℘"] ["ℑ" "ℑ"] ["ℜ" "ℜ"] ["™" "™"] ["ℵ" "ℵ"] ["←" "←"] ["↑" "↑"] ["→" "→"] ["↓" "↓"] ["↔" "↔"] ["↵" "↵"] ["⇐" "⇐"] ["⇑" "⇑"] ["⇒" "⇒"] ["⇓" "⇓"] ["⇔" "⇔"] ["∀" "∀"] ["∂" "∂"] ["∃" "∃"] ["∅" "∅"] ["∇" "∇"] ["∈" "∈"] ["∉" "∉"] ["∋" "∋"] ["∏" "∏"] ["∑" "∑"] ["−" "−"] ["∗" "∗"] ["√" "√"] ["∝" "∝"] ["∞" "∞"] ["∠" "∠"] ["∧" "∧"] ["∨" "∨"] ["∩" "∩"] ["∪" "∪"] ["∫" "∫"] ["∴" "∴"] ["∼" "∼"] ["≅" "≅"] ["≈" "≈"] ["≠" "≠"] ["≡" "≡"] ["≤" "≤"] ["≥" "≥"] ["⊂" "⊂"] ["⊃" "⊃"] ["⊄" "⊄"] ["⊆" "⊆"] ["⊇" "⊇"] ["⊕" "⊕"] ["⊗" "⊗"] ["⊥" "⊥"] ["⋅" "⋅"] ["⌈" "⌈"] ["⌉" "⌉"] ["⌊" "⌊"] ["⌋" "⌋"] ["⟨" "〈"] ["⟩" "〉"] ["◊" "◊"] ["♠" "♠"] ["♣" "♣"] ["♥" "♥"] ["♦" "♦"] [""" "\""] ["Œ" "Œ"] ["œ" "œ"] ["Š" "Š"] ["š" "š"] ["Ÿ" "Ÿ"] ["ˆ" "ˆ"] ["˜" "˜"] ["–" "–"] ["—" "—"] ["‘" "‘"] ["’" "’"] ["‚" "‚"] ["“" "“"] ["”" "”"] ["„" "„"] ["†" "†"] ["‡" "‡"] ["‰" "‰"] ["‹" "‹"] ["›" "›"] ["€" "€"]]
|
||||
"A list of sequence string pairs, representing an html entity and its decoded
|
||||
character.")
|
||||
|
||||
(defun +web--entities-string (text &optional decode-p)
|
||||
"HTML encode/decode TEXT. Based on Xah's replace HTML named entities function
|
||||
@ http://ergoemacs.org/emacs/elisp_replace_html_entities_command.html"
|
||||
(interactive "<!><r>")
|
||||
(mapc (lambda (rep)
|
||||
(let ((from (elt rep (if decode-p 0 1)))
|
||||
(to (elt rep (if decode-p 1 0))))
|
||||
(when (s-contains-p from text)
|
||||
(setq text (s-replace from to text)))))
|
||||
+web-entities-list)
|
||||
text)
|
||||
|
||||
(defun +web--entities-region (beg end &optional decode-p)
|
||||
"HTML encode/decode the selected region. Based on Xah's replace HTML named entities
|
||||
function @ http://ergoemacs.org/emacs/elisp_replace_html_entities_command.html"
|
||||
(save-restriction
|
||||
(narrow-to-region beg end)
|
||||
(let (case-fold-search)
|
||||
(mapc (lambda (rep)
|
||||
(goto-char (point-min))
|
||||
(while (search-forward (elt rep (if decode-p 0 1)) nil t)
|
||||
(replace-match (elt rep (if decode-p 1 0)) 'FIXEDCASE 'LITERAL)))
|
||||
reps))))
|
||||
|
||||
;;;###autoload
|
||||
(defun +web-encode-entities (text)
|
||||
"TODO"
|
||||
(+web--entities-string text nil))
|
||||
|
||||
;;;###autoload
|
||||
(defun +web-decode-entities (text)
|
||||
"TODO"
|
||||
(+web--entities-string text t))
|
||||
|
||||
;;;###autoload
|
||||
(defun +web/encode-entities-region (beg end)
|
||||
"Encode HTML entities in region."
|
||||
(interactive "r")
|
||||
(+web--entities-region beg end))
|
||||
|
||||
;;;###autoload
|
||||
(defun +web/decode-entities-region (beg end)
|
||||
"Decode HTML entities in region."
|
||||
(interactive "r")
|
||||
(+web--entities-region beg end t))
|
|
@ -1,113 +1,50 @@
|
|||
;;; module-web.el
|
||||
;;; lang/web/config.el
|
||||
|
||||
(use-package haml-mode :mode "\\.haml$")
|
||||
|
||||
(use-package pug-mode
|
||||
:mode ("\\.jade$" "\\.pug$")
|
||||
:config
|
||||
(def-company-backend! pug-mode (yasnippet))
|
||||
(push '("jade" "html") projectile-other-file-alist)
|
||||
(push '("pug" "html") projectile-other-file-alist)
|
||||
(map! :map pug-mode-map
|
||||
:i [tab] 'doom/dumb-indent
|
||||
:i [backtab] 'doom/dumb-dedent))
|
||||
|
||||
(use-package web-mode
|
||||
:mode ("\\.p?html?$"
|
||||
"\\.\\(tpl\\|blade\\)\\(\\.php\\)?$"
|
||||
"\\.erb$"
|
||||
"\\.jsp$"
|
||||
"\\.as[cp]x$"
|
||||
"\\.mustache$"
|
||||
"\\.tsx$"
|
||||
"wp-content/themes/.+/.+\\.php$")
|
||||
:init
|
||||
(add-hook 'web-mode-hook 'turn-off-smartparens-mode)
|
||||
:config
|
||||
(def-company-backend! web-mode (web-html yasnippet))
|
||||
(setq web-mode-enable-html-entities-fontification t)
|
||||
(push '("html" "jade" "pug" "jsx" "tsx") projectile-other-file-alist)
|
||||
|
||||
(map! :map web-mode-map :i "SPC" 'self-insert-command)
|
||||
|
||||
(after! nlinum
|
||||
;; Fix blank line numbers after unfolding
|
||||
(advice-add 'web-mode-fold-or-unfold :after 'nlinum--flush))
|
||||
|
||||
(map! :map web-mode-map
|
||||
"M-/" 'web-mode-comment-or-uncomment
|
||||
:n "M-r" 'doom/web-refresh-browser
|
||||
:n "za" 'web-mode-fold-or-unfold
|
||||
(:localleader :n "t" 'web-mode-element-rename)
|
||||
:nv "]a" 'web-mode-attribute-next
|
||||
:nv "[a" 'web-mode-attribute-previous
|
||||
:nv "]t" 'web-mode-tag-next
|
||||
:nv "[t" 'web-mode-tag-previous
|
||||
:nv "]T" 'web-mode-element-child
|
||||
:nv "[T" 'web-mode-element-parent))
|
||||
(@load +html)
|
||||
(@load +css)
|
||||
|
||||
|
||||
;;
|
||||
;; Tools
|
||||
;; TODO Frameworks
|
||||
;;
|
||||
|
||||
(use-package emmet-mode
|
||||
:commands (emmet-mode)
|
||||
:init
|
||||
(add-hook! (scss-mode web-mode html-mode haml-mode nxml-mode) 'emmet-mode)
|
||||
(defvar emmet-mode-keymap (make-sparse-keymap))
|
||||
:config
|
||||
(setq emmet-move-cursor-between-quotes t)
|
||||
(map! :map emmet-mode-keymap
|
||||
:v "M-e" 'emmet-wrap-with-markup
|
||||
:i "M-e" 'emmet-expand-yas
|
||||
:i "M-E" 'emmet-expand-line))
|
||||
;; (defvar bower-conf (make-hash-table :test 'equal))
|
||||
;; (@def-project bower "bower"
|
||||
;; :modes (web-mode js-mode coffee-mode css-mode sass-mode pug-mode)
|
||||
;; :files ("bower.json")
|
||||
;; :when
|
||||
;; (lambda (&rest _)
|
||||
;; (let* ((project-path (doom-project-root))
|
||||
;; (hash (gethash project-path bower-conf))
|
||||
;; (package-file (f-expand "bower.json" project-path))
|
||||
;; deps)
|
||||
;; (awhen (and (not hash) (f-exists? package-file)
|
||||
;; (ignore-errors (json-read-file package-file)))
|
||||
;; (puthash project-path it bower-conf)))
|
||||
;; t))
|
||||
|
||||
;; (@def-project angularjs "angular"
|
||||
;; :modes (nodejs-project-mode bower-project-mode)
|
||||
;; :when
|
||||
;; (lambda (&rest _)
|
||||
;; (let* ((project (doom-project-root))
|
||||
;; (bower (gethash project bower-conf))
|
||||
;; (npm (gethash project npm-conf))
|
||||
;; (deps (append (cdr-safe (assq 'dependencies bower))
|
||||
;; (cdr-safe (assq 'dependencies npm))
|
||||
;; (cdr-safe (assq 'devDependencies bower))
|
||||
;; (cdr-safe (assq 'devDependencies npm)))))
|
||||
;; (assq 'angular deps))))
|
||||
|
||||
;;
|
||||
;; Project types
|
||||
;;
|
||||
;; (@def-project jekyll ":{"
|
||||
;; :modes (web-mode js-mode coffee-mode css-mode haml-mode pug-mode)
|
||||
;; :match "/\\(\\(css\\|_\\(layouts\\|posts\\|sass\\)\\)/.+\\|.+.html\\)$"
|
||||
;; :files ("config.yml" "_layouts/")
|
||||
;; (@add-hook mode
|
||||
;; (when (eq major-mode 'web-mode)
|
||||
;; (web-mode-set-engine "django"))))
|
||||
|
||||
(defvar bower-conf (make-hash-table :test 'equal))
|
||||
(def-project-type! bower "bower"
|
||||
:modes (web-mode js-mode coffee-mode css-mode sass-mode pug-mode)
|
||||
:files ("bower.json")
|
||||
:when
|
||||
(lambda (&rest _)
|
||||
(let* ((project-path (doom/project-root))
|
||||
(hash (gethash project-path bower-conf))
|
||||
(package-file (f-expand "bower.json" project-path))
|
||||
deps)
|
||||
(awhen (and (not hash) (f-exists? package-file)
|
||||
(ignore-errors (json-read-file package-file)))
|
||||
(puthash project-path it bower-conf)))
|
||||
t))
|
||||
|
||||
(def-project-type! angularjs "angular"
|
||||
:modes (nodejs-project-mode bower-project-mode)
|
||||
:when
|
||||
(lambda (&rest _)
|
||||
(let* ((project (doom/project-root))
|
||||
(bower (gethash project bower-conf))
|
||||
(npm (gethash project npm-conf))
|
||||
(deps (append (cdr-safe (assq 'dependencies bower))
|
||||
(cdr-safe (assq 'dependencies npm))
|
||||
(cdr-safe (assq 'devDependencies bower))
|
||||
(cdr-safe (assq 'devDependencies npm)))))
|
||||
(assq 'angular deps))))
|
||||
|
||||
(def-project-type! jekyll ":{"
|
||||
:modes (web-mode js-mode coffee-mode css-mode haml-mode pug-mode)
|
||||
:match "/\\(\\(css\\|_\\(layouts\\|posts\\|sass\\)\\)/.+\\|.+.html\\)$"
|
||||
:files ("config.yml" "_layouts/")
|
||||
(add-hook! mode
|
||||
(when (eq major-mode 'web-mode)
|
||||
(web-mode-set-engine "django"))))
|
||||
|
||||
(def-project-type! wordpress "wp"
|
||||
:modes (php-mode web-mode css-mode haml-mode pug-mode)
|
||||
:match "/wp-\\(\\(content\\|admin\\|includes\\)/\\)?.+$"
|
||||
:files ("wp-config.php" "wp-content/"))
|
||||
|
||||
(provide 'module-web)
|
||||
;;; module-web.el ends here
|
||||
;; (@def-project wordpress "wp"
|
||||
;; :modes (php-mode web-mode css-mode haml-mode pug-mode)
|
||||
;; :match "/wp-\\(\\(content\\|admin\\|includes\\)/\\)?.+$"
|
||||
;; :files ("wp-config.php" "wp-content/"))
|
||||
|
|
18
modules/lang/web/packages.el
Normal file
18
modules/lang/web/packages.el
Normal file
|
@ -0,0 +1,18 @@
|
|||
;; -*- no-byte-compile: t; -*-
|
||||
;;; lang/web/packages.el
|
||||
|
||||
;; config.el
|
||||
;; n/a
|
||||
|
||||
;; +html.el
|
||||
(@package company-web)
|
||||
(@package emmet-mode)
|
||||
(@package haml-mode)
|
||||
(@package pug-mode)
|
||||
(@package web-mode)
|
||||
|
||||
;; +css.el
|
||||
(@package less-css-mode)
|
||||
(@package sass-mode)
|
||||
(@package stylus-mode)
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue