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.
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)))))