]> git.eshelyaron.com Git - emacs.git/commitdiff
Add new command `duplicate-line'
authorLars Ingebrigtsen <larsi@gnus.org>
Fri, 17 Jun 2022 17:33:48 +0000 (19:33 +0200)
committerLars Ingebrigtsen <larsi@gnus.org>
Fri, 17 Jun 2022 17:34:26 +0000 (19:34 +0200)
* lisp/misc.el (copy-from-above-command): Mention it.
(duplicate-line): New command (bug#46621).

etc/NEWS
lisp/misc.el

index 3b9515c2d465af4ee4762a2d83add450e4bc5ce1..d27c18f4ecdbfbe9b180c01d249a634c62713ee9 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -298,6 +298,10 @@ startup.  Previously, these functions ignored
 \f
 * Changes in Emacs 29.1
 
+---
+** New command 'duplicate-line'.
+This command duplicates the current line the specified number of times.
+
 ---
 ** Files with the '.eld' extension are now visited in 'lisp-data-mode'.
 
index 0bb8ee6c7bcf0640fc008b8b979996be4a9f8b46..88932681c1fee62efdef6ec0f46f8c84fdbc6422 100644 (file)
@@ -33,7 +33,9 @@
   "Copy characters from previous nonblank line, starting just above point.
 Copy ARG characters, but not past the end of that line.
 If no argument given, copy the entire rest of the line.
-The characters copied are inserted in the buffer before point."
+The characters copied are inserted in the buffer before point.
+
+Also see the `copy-line' command."
   (interactive "P")
   (let ((cc (current-column))
        n
@@ -61,6 +63,19 @@ The characters copied are inserted in the buffer before point."
                                 (+ n (point)))))))
     (insert string)))
 
+;;;###autoload
+(defun duplicate-line (&optional n)
+  "Duplicate the current line N times.
+Also see the `copy-from-above-command' command."
+  (interactive "p")
+  (let ((line (buffer-substring (line-beginning-position) (line-end-position))))
+    (save-excursion
+      (forward-line 1)
+      (unless (bolp)
+        (insert "\n"))
+      (dotimes (_ n)
+        (insert line "\n")))))
+
 ;; Variation of `zap-to-char'.
 
 ;;;###autoload