Function: desktop-restore-file-buffer

desktop-restore-file-buffer is a byte-compiled function defined in desktop.el.gz.

Signature

(desktop-restore-file-buffer BUFFER-FILENAME BUFFER-NAME BUFFER-MISC)

Documentation

Restore a file buffer.

Source Code

;; Defined in /usr/src/emacs/lisp/desktop.el.gz
(defvar auto-insert)  ; from autoinsert.el
;; ----------------------------------------------------------------------------
(defun desktop-restore-file-buffer (buffer-filename
                                    _buffer-name
                                    _buffer-misc)
  "Restore a file buffer."
  (when buffer-filename
    (if (or (desktop-access-file buffer-filename)
	    (let ((msg (format "Desktop: File \"%s\" no longer accessible."
			       buffer-filename)))
	      (if desktop-missing-file-warning
		  (y-or-n-p (concat msg " Re-create buffer? "))
		(message "%s" msg)
		nil)))
	(let* ((auto-insert nil) ; Disable auto insertion
	       (coding-system-for-read
		(or coding-system-for-read
		    (cdr (assq 'buffer-file-coding-system
			       desktop-buffer-locals))))
	       (buf (find-file-noselect buffer-filename :nowarn)))
	  (condition-case nil
	      (switch-to-buffer buf)
	    (error (pop-to-buffer buf)))
	  (and (not (eq major-mode desktop-buffer-major-mode))
	       (functionp desktop-buffer-major-mode)
	       (funcall desktop-buffer-major-mode))
	  buf)
      nil)))