Speed up duplicate-line by a factor of 2

* lisp/misc.el (duplicate-line): Add the newline to the string to be
inserted instead of inserting it separately.
This makes duplicate-line as fast as duplicate-dwim with a contiguous
region.  Both could easily be made faster yet by making the code more
complex.
This commit is contained in:
Mattias Engdegård 2023-06-27 17:00:11 +02:00
parent eca7394bdf
commit cf4ccc5828

View file

@ -71,13 +71,15 @@ Also see the `copy-from-above-command' command."
(interactive "p")
(unless n
(setq n 1))
(let ((line (buffer-substring (line-beginning-position) (line-end-position))))
(let ((line (concat (buffer-substring (line-beginning-position)
(line-end-position))
"\n")))
(save-excursion
(forward-line 1)
(unless (bolp)
(insert "\n"))
(dotimes (_ n)
(insert line "\n")))))
(insert line)))))
(declare-function rectangle--duplicate-right "rect" (n))