/[emacs]/emacs/lisp/desktop.el
ViewVC logotype

Diff of /emacs/lisp/desktop.el

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.54 by rms, Sat Apr 19 04:22:29 2003 UTC revision 1.55 by lektu, Mon May 19 22:17:30 2003 UTC
# Line 581  DIRNAME must be the directory in which t Line 581  DIRNAME must be the directory in which t
581    "Save the Desktop file. Parameter DIRNAME specifies where to save desktop."    "Save the Desktop file. Parameter DIRNAME specifies where to save desktop."
582    (interactive "DDirectory to save desktop file in: ")    (interactive "DDirectory to save desktop file in: ")
583    (run-hooks 'desktop-save-hook)    (run-hooks 'desktop-save-hook)
584      (setq dirname (file-name-as-directory (expand-file-name dirname)))
585    (save-excursion    (save-excursion
586      (let ((filename (expand-file-name desktop-base-file-name dirname))      (let ((filename (concat dirname desktop-base-file-name))
587        (info            (info
588          (mapcar              (mapcar
589            (function                (function
590              (lambda (b)                  (lambda (b)
591                (set-buffer b)                    (set-buffer b)
592                (list                    (list
593                  (desktop-file-name (buffer-file-name) dirname)                      (desktop-file-name (buffer-file-name) dirname)
594                  (buffer-name)                      (buffer-name)
595                  major-mode                      major-mode
596                  ;; minor modes                      ;; minor modes
597                  (let (ret)                      (let (ret)
598                    (mapcar                        (mapcar
599                      #'(lambda (mim)                          #'(lambda (mim)
600                        (and                            (and
601                          (boundp mim)                              (boundp mim)
602                          (symbol-value mim)                              (symbol-value mim)
603                          (setq                              (setq ret
604                            ret                                (cons
605                            (cons                                  (let ((special (assq mim desktop-minor-mode-table)))
606                              (let (                                    (if special (cadr special) mim))
607                                (special (assq mim desktop-minor-mode-table))                                  ret))))
608                              )                          (mapcar #'car minor-mode-alist))
609                                (if special (cadr special) mim))                        ret)
610                              ret))))                      (point)
611                      (mapcar #'car minor-mode-alist))                      (list (mark t) mark-active)
612                    ret)                      buffer-read-only
613                  (point)                      (run-hook-with-args-until-success 'desktop-buffer-misc-functions)
614                  (list (mark t) mark-active)                      (let ((locals desktop-locals-to-save)
615                  buffer-read-only                            (loclist (buffer-local-variables))
616                  (run-hook-with-args-until-success 'desktop-buffer-misc-functions)                            (ll))
617                  (let (                        (while locals
618                    (locals desktop-locals-to-save)                          (let ((here (assq (car locals) loclist)))
619                    (loclist (buffer-local-variables))                            (if here
620                    (ll)                              (setq ll (cons here ll))
621                  )                              (when (member (car locals) loclist)
622                    (while locals                                (setq ll (cons (car locals) ll)))))
623                      (let ((here (assq (car locals) loclist)))                          (setq locals (cdr locals)))
624                        (if here                        ll))))
625                          (setq ll (cons here ll))                (buffer-list)))
626                          (when (member (car locals) loclist)            (buf (get-buffer-create "*desktop*")))
                           (setq ll (cons (car locals) ll)))))  
                     (setq locals (cdr locals)))  
                   ll))))  
           (buffer-list)))  
       (buf (get-buffer-create "*desktop*")))  
627        (set-buffer buf)        (set-buffer buf)
628        (erase-buffer)        (erase-buffer)
629    
# Line 695  Returns t if it has read a desktop file, Line 691  Returns t if it has read a desktop file,
691        (setq desktop-dirname (and dirs (expand-file-name (car dirs))))        (setq desktop-dirname (and dirs (expand-file-name (car dirs))))
692        (if desktop-dirname        (if desktop-dirname
693          (let ((desktop-first-buffer nil))          (let ((desktop-first-buffer nil))
694            ;; `desktop-create-buffer' sets `desktop-first-buffer' to the first            ;; Evaluate desktop buffer.
           ;; buffer in the desktop file (the last for desktop files written  
           ;; by desktop version prior to 206).  
695            (load (expand-file-name desktop-base-file-name desktop-dirname) t t t)            (load (expand-file-name desktop-base-file-name desktop-dirname) t t t)
696            (when desktop-first-buffer (switch-to-buffer desktop-first-buffer))            ;; `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)))
702            (run-hooks 'desktop-delay-hook)            (run-hooks 'desktop-delay-hook)
703            (setq desktop-delay-hook nil)            (setq desktop-delay-hook nil)
704            (run-hooks 'desktop-after-read-hook)            (run-hooks 'desktop-after-read-hook)
# Line 885  This function always sets `desktop-enabl Line 884  This function always sets `desktop-enabl
884          (setq result (funcall handler))          (setq result (funcall handler))
885          (setq hlist (cdr hlist)))          (setq hlist (cdr hlist)))
886        (unless (bufferp result) (setq result nil))        (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).
889        (unless (< desktop-file-version 206)        (unless (< desktop-file-version 206)
890          (when result (setq buffer-list (cons result buffer-list)))          (mapcar 'bury-buffer buffer-list)
891          (mapcar 'bury-buffer buffer-list))          (when result (bury-buffer result)))
892        (when result        (when result
893          (if (< desktop-file-version 206)          (unless (or desktop-first-buffer (< desktop-file-version 206))
894            (setq desktop-first-buffer result)            (setq desktop-first-buffer result))
           (bury-buffer result))  
         (unless desktop-first-buffer (setq desktop-first-buffer result))  
895          (set-buffer result)          (set-buffer result)
896          (unless (equal (buffer-name) desktop-buffer-name)          (unless (equal (buffer-name) desktop-buffer-name)
897            (rename-buffer desktop-buffer-name))            (rename-buffer desktop-buffer-name))

Legend:
Removed from v.1.54  
changed lines
  Added in v.1.55

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26