[Refactor] Refactor enclose-region

Now it doesn’t create unnecessary global variables.
This commit is contained in:
Gergely Polonkai 2019-02-19 10:44:31 +01:00
parent aa6e8495de
commit 8320e5708a

View File

@ -282,40 +282,38 @@ copied to the kill ring."
*** Enclose region in a specific character
#+BEGIN_SRC emacs-lisp
(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.
(defun gpolonkai/enclose-region (character &optional start end)
"Enclose region between CHARACTER.
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."
If region is empty and neither START nor END is set, 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)))
(let ((open character)
(close character)
(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)))))
(setq open (nth 0 pair) close (nth 1 pair))))
(unless (and open close)
(setq open character
close character))
(unless (use-region-p)
(setq start (point) end (point)))
(save-excursion
(goto-char end)
(insert-char close)
(unless (and open close)
(setq open character)
(setq close character))
(unless (use-region-p)
(setq start (point) end (point)))
(save-excursion
(goto-char end)
(insert-char close)
(goto-char start)
(insert-char open))
(unless (use-region-p)
(forward-char)))
(goto-char start)
(insert-char open))
(unless (use-region-p)
(forward-char))))
#+END_SRC
*** Convert camelCase to snake_case
@ -3246,7 +3244,7 @@ directory. It is available from [[http://plantuml.com/download][here]].
#+BEGIN_SRC emacs-lisp
(bind-keys
:map global-map
("M-(" . æ-enclose-region)
("M-(" . gpolonkai/enclose-region)
("<C-return>" . open-line-below)
("<C-S-return>" . open-line-above)
("M-t" . nil) ;; Remove the old keybinding