Create æ-enclose-region and bind it to M-(

It encloses region in the specified character, or pair of brackets.
Gergely Polonkai 7 years ago
parent 6fa0b51045
commit 2165c8aa78

@ -117,6 +117,7 @@
(load "zim.el")
(load "clearcase.el")
(load "jekyll.el")
(load "enclose-string.el")
(add-hook 'c-mode-hook
(lambda ()
@ -359,3 +360,5 @@ Version 2016-02-16"
(add-hook 'org-mode-hook
(lambda ()
(if (display-graphic-p) (org-bullets-mode t))))
(global-set-key (kbd "M-(") 'æ-enclose-region)

@ -0,0 +1,34 @@
(defun æ-enclose-region (character &optional start end)
"Enclose region in CHARACTER. If region is empty, simply inserts
CHARACTER two times and moves point between them.
If character is present in `insert-pair-alist', this function
will enclose region in the corresponding pair. In this case,
CHARACTER must be the opening member of the pair."
(interactive "cWhat character? \nr")
(setq open character close character)
(let ((pair (assq character insert-pair-alist)))
(if pair
(if (nth 2 pair)
(setq open (nth 1 pair) close (nth 2 pair))
(setq open (nth 0 pair) close (nth 1 pair)))))
(unless (and open close)
(setq open character)
(setq close character))
(unless (use-region-p)
(setq start (point) end (point)))
(goto-char end)
(insert-char close)
(goto-char start)
(insert-char open))
(unless (use-region-p)