comparison lisp/desktop.el @ 40210:01666fd1b210

(desktop-last-buffer): New variable. (desktop-create-buffer): Set it. (desktop-read): Bind it and switch to that buffer.
author Gerd Moellmann <gerd@gnu.org>
date Tue, 23 Oct 2001 13:52:45 +0000
parents 15f5a37cdf42
children 6ce8f906931a
comparison
equal deleted inserted replaced
40209:9b3574f65ee0 40210:01666fd1b210
574 desktop-basefilename 574 desktop-basefilename
575 (car dirs))))) 575 (car dirs)))))
576 (setq dirs (cdr dirs))) 576 (setq dirs (cdr dirs)))
577 (setq desktop-dirname (and dirs (expand-file-name (car dirs)))) 577 (setq desktop-dirname (and dirs (expand-file-name (car dirs))))
578 (if desktop-dirname 578 (if desktop-dirname
579 (progn 579 (let ((desktop-last-buffer nil))
580 ;; `load-with-code-conversion' calls `eval-buffer' which
581 ;; contains a `save-excursion', so we end up with the same
582 ;; buffer before and after the load. This is a problem
583 ;; when the desktop is read initially when Emacs starts up
584 ;; because, if we still are in *scratch* after running
585 ;; `after-init-hook', the splash screen will be displayed.
580 (load (expand-file-name desktop-basefilename desktop-dirname) 586 (load (expand-file-name desktop-basefilename desktop-dirname)
581 t t t) 587 t t t)
588 (when desktop-last-buffer
589 (switch-to-buffer desktop-last-buffer))
582 (run-hooks 'desktop-delay-hook) 590 (run-hooks 'desktop-delay-hook)
583 (setq desktop-delay-hook nil) 591 (setq desktop-delay-hook nil)
584 (message "Desktop loaded.")) 592 (message "Desktop loaded."))
585 (desktop-clear))))) 593 (desktop-clear)))))
586 ;; ---------------------------------------------------------------------------- 594 ;; ----------------------------------------------------------------------------
664 (error (pop-to-buffer buf)))) 672 (error (pop-to-buffer buf))))
665 'ignored))) 673 'ignored)))
666 ;; ---------------------------------------------------------------------------- 674 ;; ----------------------------------------------------------------------------
667 ;; Create a buffer, load its file, set is mode, ...; called from Desktop file 675 ;; Create a buffer, load its file, set is mode, ...; called from Desktop file
668 ;; only. 676 ;; only.
677
678 (defvar desktop-last-buffer nil
679 "Last buffer read. Dynamically bound in `desktop-read'.")
680
669 (defun desktop-create-buffer (ver desktop-buffer-file-name desktop-buffer-name 681 (defun desktop-create-buffer (ver desktop-buffer-file-name desktop-buffer-name
670 desktop-buffer-major-mode 682 desktop-buffer-major-mode
671 mim pt mk ro desktop-buffer-misc 683 mim pt mk ro desktop-buffer-misc
672 &optional locals) 684 &optional locals)
673 (let ((hlist desktop-buffer-handlers) 685 (let ((hlist desktop-buffer-handlers)
676 (while (and (not result) hlist) 688 (while (and (not result) hlist)
677 (setq handler (car hlist)) 689 (setq handler (car hlist))
678 (setq result (funcall handler)) 690 (setq result (funcall handler))
679 (setq hlist (cdr hlist))) 691 (setq hlist (cdr hlist)))
680 (when (bufferp result) 692 (when (bufferp result)
693 (setq desktop-last-buffer result)
681 (set-buffer result) 694 (set-buffer result)
682 (if (not (equal (buffer-name) desktop-buffer-name)) 695 (if (not (equal (buffer-name) desktop-buffer-name))
683 (rename-buffer desktop-buffer-name)) 696 (rename-buffer desktop-buffer-name))
684 ;; minor modes 697 ;; minor modes
685 (cond ((equal '(t) mim) (auto-fill-mode 1)) ; backwards compatible 698 (cond ((equal '(t) mim) (auto-fill-mode 1)) ; backwards compatible