summaryrefslogtreecommitdiff
path: root/lisp/rect.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/rect.el')
-rw-r--r--lisp/rect.el21
1 files changed, 21 insertions, 0 deletions
diff --git a/lisp/rect.el b/lisp/rect.el
index 47df95b04e4..eebbf999d40 100644
--- a/lisp/rect.el
+++ b/lisp/rect.el
@@ -930,6 +930,27 @@ Ignores `line-move-visual'."
(mapc #'delete-overlay (nthcdr 5 rol))
(setcar (cdr rol) nil)))
+(defun rectangle--duplicate-right (n)
+ "Duplicate the rectangular region N times on the right-hand side."
+ (let ((cols (rectangle--pos-cols (point) (mark))))
+ (apply-on-rectangle
+ (lambda (startcol endcol)
+ (let ((lines (list nil)))
+ (extract-rectangle-line startcol endcol lines)
+ (move-to-column endcol t)
+ (dotimes (_ n)
+ (insert (cadr lines)))))
+ (region-beginning) (region-end))
+ ;; Recompute the rectangle state; no crutches should be needed now.
+ (let ((p (point))
+ (m (mark)))
+ (rectangle--reset-crutches)
+ (goto-char m)
+ (move-to-column (cdr cols) t)
+ (set-mark (point))
+ (goto-char p)
+ (move-to-column (car cols) t))))
+
(provide 'rect)
;;; rect.el ends here