/[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.49 by rms, Mon Mar 11 09:15:27 2002 UTC revision 1.49.2.1 by miles, Fri Apr 4 06:20:01 2003 UTC
# Line 471  MODE is the major mode." Line 471  MODE is the major mode."
471               (and (null filename)               (and (null filename)
472                    (memq mode desktop-buffer-modes-to-save))))))                    (memq mode desktop-buffer-modes-to-save))))))
473  ;; ----------------------------------------------------------------------------  ;; ----------------------------------------------------------------------------
474    (defcustom desktop-relative-file-names nil
475      "*Store relative file names in the desktop file."
476      :type 'boolean
477      :group 'desktop)
478    
479  (defun desktop-save (dirname)  (defun desktop-save (dirname)
480    "Save the Desktop file.  Parameter DIRNAME specifies where to save desktop."    "Save the Desktop file.  Parameter DIRNAME specifies where to save desktop."
481    (interactive "DDirectory to save desktop file in: ")    (interactive "DDirectory to save desktop file in: ")
# Line 481  MODE is the major mode." Line 486  MODE is the major mode."
486                   (mapcar                   (mapcar
487                    (function                    (function
488                     (lambda (b)                     (lambda (b)
489                                (set-buffer b)                      (set-buffer b)
490                                (list                      (list
491                                 (buffer-file-name)                       (let ((bn (buffer-file-name)))
492                                 (buffer-name)                         (if bn
493                                 major-mode                             (if desktop-relative-file-names
494                                 ;; minor modes                                 (file-relative-name bn dirname)
495                                 (let (ret)                               bn)))
496                                   (mapcar                       (buffer-name)
497                                    #'(lambda (mim)                       major-mode
498                                        (and (boundp mim)                       ;; minor modes
499                                             (symbol-value mim)                       (let (ret)
500                                             (setq ret                         (mapcar
501                                                   (cons (let ((special (assq mim desktop-minor-mode-table)))                          #'(lambda (mim)
502                                                          (if special                              (and (boundp mim)
503                                                              (cadr special)                                   (symbol-value mim)
504                                                            mim))                                   (setq ret
505                                                        ret))))                                         (cons (let ((special (assq mim desktop-minor-mode-table)))
506                                    (mapcar #'car minor-mode-alist))                                                 (if special
507                                   ret)                                                     (cadr special)
508                                 (point)                                                   mim))
509                                 (list (mark t) mark-active)                                               ret))))
510                                 buffer-read-only                          (mapcar #'car minor-mode-alist))
511                                 (run-hook-with-args-until-success                         ret)
512                                  'desktop-buffer-misc-functions)                       (point)
513                                 (let ((locals desktop-locals-to-save)                       (list (mark t) mark-active)
514                                       (loclist (buffer-local-variables))                       buffer-read-only
515                                       (ll))                       (run-hook-with-args-until-success
516                                   (while locals                        'desktop-buffer-misc-functions)
517                                     (let ((here (assq (car locals) loclist)))                       (let ((locals desktop-locals-to-save)
518                                       (if here                             (loclist (buffer-local-variables))
519                                           (setq ll (cons here ll))                             (ll))
520                                         (if (member (car locals) loclist)                         (while locals
521                                             (setq ll (cons (car locals) ll)))))                           (let ((here (assq (car locals) loclist)))
522                                     (setq locals (cdr locals)))                             (if here
523                                   ll)                                 (setq ll (cons here ll))
524                                 )))                               (if (member (car locals) loclist)
525                                     (setq ll (cons (car locals) ll)))))
526                             (setq locals (cdr locals)))
527                           ll)
528                         )))
529                    (buffer-list))))                    (buffer-list))))
530            (buf (get-buffer-create "*desktop*")))            (buf (get-buffer-create "*desktop*")))
531        (set-buffer buf)        (set-buffer buf)
# Line 537  MODE is the major mode." Line 546  MODE is the major mode."
546        (insert "\n;; Buffer section:\n")        (insert "\n;; Buffer section:\n")
547        (mapcar        (mapcar
548         (function (lambda (l)         (function (lambda (l)
549                     (if (apply 'desktop-save-buffer-p l)           (if (apply 'desktop-save-buffer-p l)
550                         (progn               (progn
551                           (insert desktop-create-buffer-form)                 (insert desktop-create-buffer-form)
552                           (mapcar                 (mapcar
553                            (function (lambda (e)                  (function (lambda (e)
554                                        (insert "\n  "                    (insert "\n  "
555                                                (desktop-value-to-string e))))                            (desktop-value-to-string e))))
556                            l)                  l)
557                           (insert ")\n\n")))))                 (insert ")\n\n")))))
558         info)         info)
559        (setq default-directory dirname)        (setq default-directory dirname)
560        (if (file-exists-p filename) (delete-file filename))        (if (file-exists-p filename) (delete-file filename))

Legend:
Removed from v.1.49  
changed lines
  Added in v.1.49.2.1

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