diff --git a/modules/editor/evil/autoload/embrace.el b/modules/editor/evil/autoload/embrace.el index 4ed3fb2f6..37a825e78 100644 --- a/modules/editor/evil/autoload/embrace.el +++ b/modules/editor/evil/autoload/embrace.el @@ -31,3 +31,9 @@ (defun +evil--embrace-elisp-fn () "Elisp function support for embrace." (cons (format "(%s " (or (read-string "(") "")) ")")) + +;;;###autoload +(defun +evil--embrace-angle-brackets () + "Type/generic angle brackets." + (cons (format "%s<" (or (read-string "") "")) + ">")) diff --git a/modules/editor/evil/config.el b/modules/editor/evil/config.el index 88e2ed42c..84ea94272 100644 --- a/modules/editor/evil/config.el +++ b/modules/editor/evil/config.el @@ -202,6 +202,8 @@ directives. By default, this only recognizes C directives.") :hook (emacs-lisp-mode . embrace-emacs-lisp-mode-hook) :hook ((emacs-lisp-mode lisp-mode) . +evil|embrace-lisp-mode-hook) :hook ((org-mode LaTeX-mode) . +evil|embrace-latex-mode-hook) + :hook ((c++-mode rust-mode rustic-mode csharp-mode java-mode swift-mode typescript-mode) + . +evil|embrace-angle-bracket-modes-hook) :init (after! evil-surround (evil-embrace-enable-evil-surround-integration)) @@ -219,6 +221,16 @@ directives. By default, this only recognizes C directives.") :right-regexp ")")) embrace--pairs-list)) + (defun +evil|embrace-angle-bracket-modes-hook () + (set (make-local-variable 'evil-embrace-evil-surround-keys) + (delq ?< evil-embrace-evil-surround-keys)) + (push (cons ?< (make-embrace-pair-struct + :key ?< + :read-function #'+evil--embrace-angle-brackets + :left-regexp "\\[a-z]+<" + :right-regexp ">")) + embrace--pairs-list)) + ;; Add escaped-sequence support to embrace (setf (alist-get ?\\ (default-value 'embrace--pairs-list)) (make-embrace-pair-struct