Function: save-mark-and-excursion--restore
save-mark-and-excursion--restore is a byte-compiled function defined
in simple.el.gz.
Signature
(save-mark-and-excursion--restore SAVED-MARK-INFO)
Source Code
;; Defined in /usr/src/emacs/lisp/simple.el.gz
(defun save-mark-and-excursion--restore (saved-mark-info)
(let ((saved-mark (car saved-mark-info))
(omark (marker-position (mark-marker)))
(nmark nil)
(saved-mark-active (cdr saved-mark-info)))
;; Mark marker
(if (null saved-mark)
(set-marker (mark-marker) nil)
(setf nmark (marker-position saved-mark))
(set-marker (mark-marker) nmark)
(set-marker saved-mark nil))
;; Mark active
(let ((cur-mark-active mark-active))
(setq mark-active saved-mark-active)
;; If mark is active now, and either was not active or was at a
;; different place, run the activate hook.
(if saved-mark-active
(when (or (not cur-mark-active)
(not (eq omark nmark)))
(run-hooks 'activate-mark-hook))
;; If mark has ceased to be active, run deactivate hook.
(when cur-mark-active
(run-hooks 'deactivate-mark-hook))))))