Function: save-match-data

save-match-data is a macro defined in subr.el.gz.

Signature

(save-match-data &rest BODY)

Documentation

Execute the BODY forms, restoring the global value of the match data.

The value returned is the value of the last form in BODY. NOTE: The convention in Elisp is that any function, except for a few exceptions like car/assoc/+/goto-char, can clobber the match data, so save-match-data should normally be used to save *your* match data rather than your caller's match data.

Other relevant functions are documented in the regexp group.

View in manual

Probably introduced at or before Emacs version 20.1.

Shortdoc

;; regexp
(save-match-data \...)

Source Code

;; Defined in /usr/src/emacs/lisp/subr.el.gz
;;; Matching and match data.

(defmacro save-match-data (&rest body)
  "Execute the BODY forms, restoring the global value of the match data.
The value returned is the value of the last form in BODY.
NOTE: The convention in Elisp is that any function, except for a few
exceptions like car/assoc/+/goto-char, can clobber the match data,
so `save-match-data' should normally be used to save *your* match data
rather than your caller's match data."
  ;; It is better not to use backquote here,
  ;; because that makes a bootstrapping problem
  ;; if you need to recompile all the Lisp files using interpreted code.
  (declare (indent 0) (debug t))
  (let ((saved-match-data (make-symbol "saved-match-data")))
    (list 'let
	  (list (list saved-match-data '(match-data)))
	  (list 'unwind-protect
                (cons 'progn body)
                (list 'set-match-data saved-match-data t)))))