35 lines
1.2 KiB
EmacsLisp
35 lines
1.2 KiB
EmacsLisp
;;; defuns-embrace.el
|
|
|
|
(defun doom--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 doom/embrace-escaped ()
|
|
"Backslash-escaped surround character support for embrace."
|
|
(let ((char (read-char "\\")))
|
|
(if (eq char 27)
|
|
(cons "" "")
|
|
(let ((pair (doom--embrace-get-pair (string char)))
|
|
(text (if (sp-point-in-string) "\\\\%s" "\\%s")))
|
|
(cons (format text (car pair))
|
|
(format text (cdr pair)))))))
|
|
|
|
;;;###autoload
|
|
(defun doom/embrace-latex ()
|
|
"LaTeX command support for embrace."
|
|
(cons (format "\\%s{" (read-string "\\")) "}"))
|
|
|
|
;;;###autoload
|
|
(defun doom/embrace-elisp-fn ()
|
|
"Elisp function support for embrace."
|
|
(cons (format "(%s " (or (read-string "(") "")) ")"))
|
|
|
|
(provide 'defuns-embrace)
|
|
;;; defuns-embrace.el ends here
|