diff options
author | Amin Bandali <bandali@gnu.org> | 2020-04-21 00:53:18 -0400 |
---|---|---|
committer | Amin Bandali <bandali@gnu.org> | 2020-04-21 00:53:18 -0400 |
commit | ad1f9d99b2d82cfb705baaeab166def5ddda5f72 (patch) | |
tree | b434e2595cbdb10d7adc632d3c76ecf24c2ecb6f | |
parent | 8c69260b3d8ba02b1f604b9a524a3d5f0a16df73 (diff) | |
download | configs-ad1f9d99b2d82cfb705baaeab166def5ddda5f72.tar.gz configs-ad1f9d99b2d82cfb705baaeab166def5ddda5f72.tar.xz configs-ad1f9d99b2d82cfb705baaeab166def5ddda5f72.zip |
* init.el(b/duplicate-line-or-region): New convenience function.
-rw-r--r-- | init.el | 25 |
1 files changed, 25 insertions, 0 deletions
@@ -255,6 +255,30 @@ For disabling the behaviour for certain buffers and/or modes." (interactive) (join-line 1)) +(defun b/duplicate-line-or-region (&optional n) + "Duplicate the current line, or region (if active). +Make N (default: 1) copies of the current line or region." + (interactive "*p") + (let ((u-r-p (use-region-p)) ; if region is active + (n1 (or n 1))) + (save-excursion + (let ((text + (if u-r-p + (buffer-substring (region-beginning) (region-end)) + (prog1 (thing-at-point 'line) + (end-of-line) + (if (eobp) + (newline) + (forward-line 1)))))) + (dotimes (_ (abs n1)) + (insert text)))) + (let* ((beg (if u-r-p + (region-beginning) + (line-beginning-position))) + (end (if u-r-p + (region-end) + (line-end-position))))))) + ;;; Defaults @@ -508,6 +532,7 @@ For disabling the behaviour for certain buffers and/or modes." (bind-keys ("C-a" . b/move-indentation-or-beginning-of-line) ("C-c a i" . ielm) + ("C-c d" . b/duplicate-line-or-region) ("C-c e b" . eval-buffer) ("C-c e e" . eval-last-sexp) |