Configure embrace.el and evil-surround

This commit is contained in:
Henrik Lissner 2016-05-07 22:04:20 -04:00
parent 35199496d4
commit 94b63e9e34
3 changed files with 43 additions and 28 deletions

View file

@ -346,23 +346,22 @@
evil-Surround-edit evil-Surround-edit
evil-surround-region) evil-surround-region)
:config :config
(global-evil-surround-mode 1) (global-evil-surround-mode 1))
;; Escaped surround characters
(setq-default evil-surround-pairs-alist
(cons '(?\\ . narf/evil-surround-escaped)
evil-surround-pairs-alist))
(add-hook! emacs-lisp-mode
(push '(?\` . ("`" . "'")) evil-surround-pairs-alist))
(add-hook! python-mode
(push '((?d . ("\"\"\"" . "\"\"\""))) evil-surround-pairs-alist)))
(use-package evil-embrace (use-package evil-embrace
:after evil-surround :after evil-surround
:config :config
(evil-embrace-enable-evil-surround-integration) (evil-embrace-enable-evil-surround-integration)
(embrace-add-pair-regexp ?\\ "\\[[{(]" "\\[]})]" 'narf/evil-surround-escaped)) ;; Escaped surround characters
(embrace-add-pair-regexp ?\\ "\\[[{(]" "\\[]})]" 'narf/embrace-escaped)
(add-hook 'LaTeX-mode-hook 'embrace-LaTeX-mode-hook)
(add-hook 'org-mode-hook 'embrace-org-mode-hook)
(add-hook! emacs-lisp-mode
(embrace-add-pair ?\` "`" "'"))
(add-hook! (emacs-lisp-mode lisp-mode)
(embrace-add-pair-regexp ?f "([^ ]+ " ")" 'narf/embrace-elisp-fn))
(add-hook! (org-mode latex-mode)
(embrace-add-pair-regexp ?l "\\[a-z]+{" "}" 'narf/embrace-latex)))
(use-package evil-visualstar (use-package evil-visualstar
:commands (global-evil-visualstar-mode :commands (global-evil-visualstar-mode

View file

@ -0,0 +1,32 @@
;;; defuns-embrace.el
(defun narf--embrace-get-pair (char)
(acond ((cdr-safe (assoc (string-to-char char) evil-surround-pairs-alist))
`(,(car it) . ,(cdr it)))
((assoc-default char embrace--pairs-list)
(if (functionp (embrace-pair-struct-read-function it))
(let ((pair (funcall (embrace-pair-struct-read-function it))))
`(,(car pair) . ,(cdr pair)))
`(,(embrace-pair-struct-left it) . ,(embrace-pair-struct-right it))))
(t `(,char . ,char))))
;;;###autoload
(defun narf/embrace-escaped ()
"Escaped surround characters."
(let* ((char (string (read-char "\\")))
(pair (narf--embrace-get-pair char))
(text (if (sp-point-in-string) "\\\\%s" "\\%s")))
(cons (format text (car pair))
(format text (cdr pair)))))
;;;###autoload
(defun narf/embrace-latex ()
"LaTeX commands"
(cons (format "\\%s{" (read-string "\\")) "}"))
;;;###autoload
(defun narf/embrace-elisp-fn ()
(cons (format "(%s " (or (read-string "(") "")) ")"))
(provide 'defuns-embrace)
;;; defuns-embrace.el ends here

View file

@ -42,22 +42,6 @@
(when evil-exchange--overlays (when evil-exchange--overlays
(evil-exchange-cancel))) (evil-exchange-cancel)))
;;;###autoload
(defun narf/evil-surround-escaped ()
"Escaped surround characters."
(let* ((char (string (read-char "\\")))
(pair (acond ((cdr-safe (assoc (string-to-char char) evil-surround-pairs-alist))
`(,(car it) . ,(cdr it)))
(t `(,char . ,char))))
(text (if (sp-point-in-string) "\\\\%s" "\\%s")))
(cons (format text (car pair))
(format text (cdr pair)))))
;;;###autoload
(defun narf/evil-surround-latex ()
"LaTeX commands"
(cons (format "\\%s{" (read-string "\\")) "}"))
;;;###autoload (autoload 'narf/evil-macro-on-all-lines "defuns-evil" nil t) ;;;###autoload (autoload 'narf/evil-macro-on-all-lines "defuns-evil" nil t)
(evil-define-operator narf/evil-macro-on-all-lines (beg end &optional macro) (evil-define-operator narf/evil-macro-on-all-lines (beg end &optional macro)
"Apply macro to each line." "Apply macro to each line."