X-Git-Url: https://git.shemshak.org/~bandali/configs/blobdiff_plain/a2feb3de8868292a2096846e440c31e005252432..878e4e445a28e4a92d6ce0621b7a891e3d78a45b:/init.el?ds=sidebyside diff --git a/init.el b/init.el index cb1a89b..bb42550 100644 --- a/init.el +++ b/init.el @@ -255,6 +255,24 @@ 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)))))) + ;;; Defaults @@ -277,7 +295,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 +526,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)