From 0ee42c1df061b47bef3f884165df385bca42e6bf Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sun, 24 Jun 2018 15:09:49 +0200 Subject: [PATCH] Improve smartparens+web-mode compatibility + Enables web-mode's autopairing functionality + Prevents duplicate >'s after web-mode autopairing. + Leave longer-than-3-character pairs to smartparens (there was only ) + Remove autopairer. Leave that to snippets (web-mode doesn't support prefixes longer than 3 letters, and is too much of a performance drain to have smartparens support it, so I added a "php" snippet that expands to ). + Tags now auto-close when you finish typing the opening tag. (web-mode-auto-close-style = 2) --- modules/lang/web/+html.el | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/lang/web/+html.el b/modules/lang/web/+html.el index c25b2b4d6..5c8af811e 100644 --- a/modules/lang/web/+html.el +++ b/modules/lang/web/+html.el @@ -16,7 +16,25 @@ :mode "templates/.+\\.php$" :config (setq web-mode-enable-html-entities-fontification t - web-mode-enable-auto-quoting nil) + web-mode-auto-close-style 2) + + (after! smartparens + ;; let smartparens handle these + (setq web-mode-enable-auto-quoting nil + web-mode-enable-auto-pairing t) + ;; Remove web-mode auto pairs that end with >, because smartparens autopairs + ;; them, causing duplicates. Also remove truncated autopairs, like . + (dolist (alist web-mode-engines-auto-pairs) + (setcdr alist (delq nil + (mapcar (lambda (pair) + (unless (string-match-p "^[a-z-]" (cdr pair)) + (cons (car pair) + (if (equal (substring (cdr pair) -1) ">") + (substring (cdr pair) 0 -1) + (cdr pair))))) + (cdr alist))))) + (setf (alist-get nil web-mode-engines-auto-pairs) nil)) (map! :map web-mode-map (:localleader