aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuanma Barranquero2003-05-19 22:17:30 +0000
committerJuanma Barranquero2003-05-19 22:17:30 +0000
commit7bcbf3c23cb1eaf99e43736b09cb9b451b7cb1c8 (patch)
treede6ec395d64c904857baa46d0f793254abd95644
parentab16145759593e5e0eff935a8eb10abbaf57f5a8 (diff)
downloademacs-7bcbf3c23cb1eaf99e43736b09cb9b451b7cb1c8.tar.gz
emacs-7bcbf3c23cb1eaf99e43736b09cb9b451b7cb1c8.zip
(desktop-save): Ensure parameter is expanded and ends with a slash before
assigning it to desktop-dirname and default-directory. (desktop-read): Put buffers existing prior to evaluating the desktop (and not reused) at the end of the buffer list. (desktop-create-buffer): Don't update desktop-first-buffer for old desktop files.
-rw-r--r--lisp/desktop.el111
1 files changed, 55 insertions, 56 deletions
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 5213e968cf0..7508d46ce29 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -581,53 +581,49 @@ DIRNAME must be the directory in which the desktop file will be saved."
581 "Save the Desktop file. Parameter DIRNAME specifies where to save desktop." 581 "Save the Desktop file. Parameter DIRNAME specifies where to save desktop."
582 (interactive "DDirectory to save desktop file in: ") 582 (interactive "DDirectory to save desktop file in: ")
583 (run-hooks 'desktop-save-hook) 583 (run-hooks 'desktop-save-hook)
584 (setq dirname (file-name-as-directory (expand-file-name dirname)))
584 (save-excursion 585 (save-excursion
585 (let ((filename (expand-file-name desktop-base-file-name dirname)) 586 (let ((filename (concat dirname desktop-base-file-name))
586 (info 587 (info
587 (mapcar 588 (mapcar
588 (function 589 (function
589 (lambda (b) 590 (lambda (b)
590 (set-buffer b) 591 (set-buffer b)
591 (list 592 (list
592 (desktop-file-name (buffer-file-name) dirname) 593 (desktop-file-name (buffer-file-name) dirname)
593 (buffer-name) 594 (buffer-name)
594 major-mode 595 major-mode
595 ;; minor modes 596 ;; minor modes
596 (let (ret) 597 (let (ret)
597 (mapcar 598 (mapcar
598 #'(lambda (mim) 599 #'(lambda (mim)
599 (and 600 (and
600 (boundp mim) 601 (boundp mim)
601 (symbol-value mim) 602 (symbol-value mim)
602 (setq 603 (setq ret
603 ret 604 (cons
604 (cons 605 (let ((special (assq mim desktop-minor-mode-table)))
605 (let ( 606 (if special (cadr special) mim))
606 (special (assq mim desktop-minor-mode-table)) 607 ret))))
607 ) 608 (mapcar #'car minor-mode-alist))
608 (if special (cadr special) mim)) 609 ret)
609 ret)))) 610 (point)
610 (mapcar #'car minor-mode-alist)) 611 (list (mark t) mark-active)
611 ret) 612 buffer-read-only
612 (point) 613 (run-hook-with-args-until-success 'desktop-buffer-misc-functions)
613 (list (mark t) mark-active) 614 (let ((locals desktop-locals-to-save)
614 buffer-read-only 615 (loclist (buffer-local-variables))
615 (run-hook-with-args-until-success 'desktop-buffer-misc-functions) 616 (ll))
616 (let ( 617 (while locals
617 (locals desktop-locals-to-save) 618 (let ((here (assq (car locals) loclist)))
618 (loclist (buffer-local-variables)) 619 (if here
619 (ll) 620 (setq ll (cons here ll))
620 ) 621 (when (member (car locals) loclist)
621 (while locals 622 (setq ll (cons (car locals) ll)))))
622 (let ((here (assq (car locals) loclist))) 623 (setq locals (cdr locals)))
623 (if here 624 ll))))
624 (setq ll (cons here ll)) 625 (buffer-list)))
625 (when (member (car locals) loclist) 626 (buf (get-buffer-create "*desktop*")))
626 (setq ll (cons (car locals) ll)))))
627 (setq locals (cdr locals)))
628 ll))))
629 (buffer-list)))
630 (buf (get-buffer-create "*desktop*")))
631 (set-buffer buf) 627 (set-buffer buf)
632 (erase-buffer) 628 (erase-buffer)
633 629
@@ -695,11 +691,14 @@ Returns t if it has read a desktop file, nil otherwise."
695 (setq desktop-dirname (and dirs (expand-file-name (car dirs)))) 691 (setq desktop-dirname (and dirs (expand-file-name (car dirs))))
696 (if desktop-dirname 692 (if desktop-dirname
697 (let ((desktop-first-buffer nil)) 693 (let ((desktop-first-buffer nil))
698 ;; `desktop-create-buffer' sets `desktop-first-buffer' to the first 694 ;; Evaluate desktop buffer.
699 ;; buffer in the desktop file (the last for desktop files written
700 ;; by desktop version prior to 206).
701 (load (expand-file-name desktop-base-file-name desktop-dirname) t t t) 695 (load (expand-file-name desktop-base-file-name desktop-dirname) t t t)
702 (when desktop-first-buffer (switch-to-buffer desktop-first-buffer)) 696 ;; `desktop-create-buffer' puts buffers at end of the buffer list.
697 ;; We want buffers existing prior to evaluating the desktop (and not reused)
698 ;; to be placed at the end of the buffer list, so we move them here.
699 (mapcar 'bury-buffer
700 (nreverse (cdr (memq desktop-first-buffer (nreverse (buffer-list))))))
701 (switch-to-buffer (car (buffer-list)))
703 (run-hooks 'desktop-delay-hook) 702 (run-hooks 'desktop-delay-hook)
704 (setq desktop-delay-hook nil) 703 (setq desktop-delay-hook nil)
705 (run-hooks 'desktop-after-read-hook) 704 (run-hooks 'desktop-after-read-hook)
@@ -885,14 +884,14 @@ This function always sets `desktop-enable' to t."
885 (setq result (funcall handler)) 884 (setq result (funcall handler))
886 (setq hlist (cdr hlist))) 885 (setq hlist (cdr hlist)))
887 (unless (bufferp result) (setq result nil)) 886 (unless (bufferp result) (setq result nil))
887 ;; Restore buffer list order with new buffer at end. Don't change
888 ;; the order for old desktop files (old desktop module behaviour).
888 (unless (< desktop-file-version 206) 889 (unless (< desktop-file-version 206)
889 (when result (setq buffer-list (cons result buffer-list))) 890 (mapcar 'bury-buffer buffer-list)
890 (mapcar 'bury-buffer buffer-list)) 891 (when result (bury-buffer result)))
891 (when result 892 (when result
892 (if (< desktop-file-version 206) 893 (unless (or desktop-first-buffer (< desktop-file-version 206))
893 (setq desktop-first-buffer result) 894 (setq desktop-first-buffer result))
894 (bury-buffer result))
895 (unless desktop-first-buffer (setq desktop-first-buffer result))
896 (set-buffer result) 895 (set-buffer result)
897 (unless (equal (buffer-name) desktop-buffer-name) 896 (unless (equal (buffer-name) desktop-buffer-name)
898 (rename-buffer desktop-buffer-name)) 897 (rename-buffer desktop-buffer-name))