X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/a2feb3de8868292a2096846e440c31e005252432..ad1f9d99b2d82cfb705baaeab166def5ddda5f72:/init.el diff --git a/init.el b/init.el index cb1a89b..5d4b8b5 100644 --- a/init.el +++ b/init.el @@ -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 @@ -277,7 +301,7 @@ For disabling the behaviour for certain buffers and/or modes." ;; scroll-margin 1 ;; scroll-conservatively 10000 scroll-step 1 - scroll-conservatively 10 + scroll-conservatively 101 scroll-preserve-screen-position 1 ;; focus follows mouse mouse-autoselect-window t) @@ -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)