Function: c-tnt-chng-cleanup

c-tnt-chng-cleanup is a byte-compiled function defined in cc-defs.el.gz.

Signature

(c-tnt-chng-cleanup KEEP SAVED-STATE)

Source Code

;; Defined in /usr/src/emacs/lisp/progmodes/cc-defs.el.gz
	  (buffer-modified-p)))		; 5

(defun c-tnt-chng-cleanup (keep saved-state)
  ;; Used internally in `c-tentative-buffer-changes'.

  (let ((saved-undo-list (elt saved-state 0)))
    (if (eq buffer-undo-list saved-undo-list)
	;; No change was done after all.
	(setq buffer-undo-list (cdr saved-undo-list))

      (if keep
	  (if (eq saved-undo-list t)
	      (progn
		(c-benign-error
		 "Can't save additional undo list in c-tnt-chng-cleanup")
		(setq buffer-undo-list t))
	    ;; Find and remove the undo boundary.
	    (let ((p buffer-undo-list))
	      (while (not (eq (cdr p) saved-undo-list))
		(setq p (cdr p)))
	      (setcdr p (cdr saved-undo-list))))

	(let ((undo-in-progress t)
	      (end-undo-list (if (eq saved-undo-list t)
				 nil
			       ;; `primitive-undo' will remove the boundary.
			       (cdr saved-undo-list))))
	  (while (not (eq buffer-undo-list end-undo-list))
	    (setq buffer-undo-list (primitive-undo 1 buffer-undo-list))))
	(if (eq saved-undo-list t)
	    (setq buffer-undo-list t))

	(when (buffer-live-p (elt saved-state 1))
	  (set-buffer (elt saved-state 1))
	  (goto-char (elt saved-state 2))
	  (set-mark (elt saved-state 3))
	  (c-set-region-active (elt saved-state 4))
	  (and (not (elt saved-state 5))
	       (buffer-modified-p)
	       (set-buffer-modified-p nil)))))))