Mercurial > emacs
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 |