mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-02-20 20:07:36 +00:00
(picture-replace-match): New function.
This commit is contained in:
parent
9199fa7f7f
commit
5c927015ee
1 changed files with 22 additions and 0 deletions
|
|
@ -263,6 +263,28 @@ With positive argument insert that many lines."
|
|||
(forward-line -1)
|
||||
(insert contents))))
|
||||
|
||||
;; Like replace-match, but overwrites.
|
||||
(defun picture-replace-match (newtext fixedcase literal)
|
||||
(let (ocolumn change pos)
|
||||
(goto-char (setq pos (match-end 0)))
|
||||
(setq ocolumn (current-column))
|
||||
;; Make the replacement and undo it, to see how it changes the length.
|
||||
(let ((buffer-undo-list nil)
|
||||
list1)
|
||||
(replace-match newtext fixedcase literal)
|
||||
(setq change (- (current-column) ocolumn))
|
||||
(setq list1 buffer-undo-list)
|
||||
(while list1
|
||||
(setq list1 (primitive-undo 1 list1))))
|
||||
(goto-char pos)
|
||||
(if (> change 0)
|
||||
(delete-region (point)
|
||||
(progn
|
||||
(move-to-column-force (+ change (current-column)))
|
||||
(point))))
|
||||
(replace-match newtext fixedcase literal)
|
||||
(if (< change 0)
|
||||
(insert-char ?\ (- change)))))
|
||||
|
||||
;; Picture Tabs
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue