Function: ex-substitute
ex-substitute is a byte-compiled function defined in vip.el.gz.
Signature
(ex-substitute &optional REPEAT R-FLAG)
Documentation
ex substitute.
If REPEAT use previous reg-exp which is ex-reg-exp or vip-s-string
Source Code
;; Defined in /usr/src/emacs/lisp/obsolete/vip.el.gz
(defun ex-substitute (&optional repeat r-flag)
"ex substitute.
If REPEAT use previous reg-exp which is ex-reg-exp or
vip-s-string"
(let (pat repl (opt-g nil) (opt-c nil) (matched-pos nil))
(if repeat (setq ex-token nil) (vip-get-ex-pat))
(if (null ex-token)
(setq pat (if r-flag vip-s-string ex-reg-exp)
repl ex-repl)
(setq pat (if (string= ex-token "") vip-s-string ex-token))
(setq vip-s-string pat
ex-reg-exp pat)
(vip-get-ex-pat)
(if (null ex-token)
(setq ex-token ""
ex-repl "")
(setq repl ex-token
ex-repl ex-token)))
(while (vip-get-ex-opt-gc)
(if (string= ex-token "g") (setq opt-g t) (setq opt-c t)))
(vip-get-ex-count)
(if ex-count
(save-excursion
(if ex-addresses (goto-char (car ex-addresses)))
(set-mark (point))
(forward-line (1- ex-count))
(setq ex-addresses (cons (point) (cons (mark) nil))))
(if (null ex-addresses)
(setq ex-addresses (cons (point) (cons (point) nil)))
(if (null (cdr ex-addresses))
(setq ex-addresses (cons (car ex-addresses) ex-addresses)))))
;(setq G opt-g)
(let ((beg (car ex-addresses)) (end (car (cdr ex-addresses)))
eol-mark) ;;(cont t)
(save-excursion
(vip-enlarge-region beg end)
(let ((limit (save-excursion
(goto-char (max (point) (mark)))
(point-marker))))
(goto-char (min (point) (mark)))
(while (< (point) limit)
(end-of-line)
(setq eol-mark (point-marker))
(beginning-of-line)
(if opt-g
(progn
(while (and (not (eolp))
(re-search-forward pat eol-mark t))
(if (or (not opt-c) (y-or-n-p "Replace? "))
(progn
(setq matched-pos (point))
(replace-match repl))))
(end-of-line)
(forward-char))
(if (and (re-search-forward pat eol-mark t)
(or (not opt-c) (y-or-n-p "Replace? ")))
(progn
(setq matched-pos (point))
(replace-match repl)))
(end-of-line)
(forward-char))))))
(if matched-pos (goto-char matched-pos))
(beginning-of-line)
(if opt-c (message "done"))))