Function: replace--push-stack

replace--push-stack is a macro defined in replace.el.gz.

Signature

(replace--push-stack REPLACED SEARCH-STR NEXT-REPLACE NEXT-REPLACEMENT MATCH-AGAIN STACK)

Source Code

;; Defined in /usr/src/emacs/lisp/replace.el.gz
;; A macro because we push STACK, i.e. a local var in `perform-replace'.
(defmacro replace--push-stack (replaced search-str next-replace next-replacement match-again stack)
  (declare (indent 0) (debug (form form form form form gv-place)))
  `(push (list (point) ,replaced
               ;; If the replacement has already happened, all we need is the
               ;; current match start and end.  We could get this with a trivial
               ;; match like
               ;; (save-excursion (goto-char (match-beginning 0))
               ;;                    (search-forward (match-string 0))
               ;;                 (match-data t))
               ;; if we really wanted to avoid manually constructing match data.
               ;; Adding current-buffer is necessary so that match-data calls
               ;; can return markers which are appropriate for editing.
	       (if ,replaced
		   (list
		    (match-beginning 0) (match-end 0) (current-buffer))
                 (match-data))
	       ,search-str ,next-replace ,next-replacement ,match-again)
         ,stack))