From 131ca136d1e3912684c8acba26423736712f0abb Mon Sep 17 00:00:00 2001 From: "Eric S. Raymond" Date: Sat, 27 Mar 1993 01:58:26 +0000 Subject: [PATCH] (fill-rectangle) Added. Inspired by Lynn Slater's insert-box package in LCD, but the interface and implementation are different. --- lisp/rect.el | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/lisp/rect.el b/lisp/rect.el index e440904912f..7e80734a19c 100644 --- a/lisp/rect.el +++ b/lisp/rect.el @@ -192,6 +192,30 @@ but instead winds up to the right of the rectangle." (indent-to column))) ;;;###autoload +(defun fill-rectangle (start end text) + "Fill each line of the rectangle with corners at point and mark with +text, shifting text right. The text previously in the region is not +overwritten by the blanks, but instead winds up to the right of the +rectangle. Called from a program, takes three args; START, END and +TEXT." + (interactive "r\nsText:") + (operate-on-rectangle 'fill-rectangle-line start end nil) + (goto-char start)) + +(defun fill-rectangle-line (startpos begextra endextra) + (let ((column (+ (current-column) begextra endextra))) + (goto-char startpos) + (let ((ocol (current-column))) + (skip-chars-forward " \t") + (setq column (+ column (- (current-column) ocol)))) + (delete-region (point) + ;; Use skip-chars-backward's LIM argument to leave + ;; characters before STARTPOS undisturbed. + (progn (skip-chars-backward " \t" startpos) + (point))) + (insert text))) + +;;;###autoload (defun clear-rectangle (start end) "Blank out rectangle with corners at point and mark. The text previously in the region is overwritten by the blanks. -- 2.11.4.GIT