/[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.2.9 by miles, Tue Jul 6 09:38:05 2004 UTC revision 1.49.2.10 by miles, Thu Sep 16 00:14:58 2004 UTC
# Line 171  This is useful for truncating history li Line 171  This is useful for truncating history li
171    :type 'hook    :type 'hook
172    :group 'desktop)    :group 'desktop)
173    
174  (defcustom desktop-globals-to-save '(  (defcustom desktop-globals-to-save
175    desktop-missing-file-warning    '(desktop-missing-file-warning
176    tags-file-name      tags-file-name
177    tags-table-list      tags-table-list
178    search-ring      search-ring
179    regexp-search-ring      regexp-search-ring
180    register-alist)      register-alist)
181    "List of global variables saved by `desktop-save'.    "List of global variables saved by `desktop-save'.
182  An element may be variable name (a symbol) or a cons cell of the form  An element may be variable name (a symbol) or a cons cell of the form
183  \(VAR . MAX-SIZE), which means to truncate VAR's value to at most  \(VAR . MAX-SIZE), which means to truncate VAR's value to at most
# Line 186  Feature: Saving `kill-ring' implies savi Line 186  Feature: Saving `kill-ring' implies savi
186    :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))    :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
187    :group 'desktop)    :group 'desktop)
188    
189  (defcustom desktop-globals-to-clear '(  (defcustom desktop-globals-to-clear
190    kill-ring    '(kill-ring
191    kill-ring-yank-pointer      kill-ring-yank-pointer
192    search-ring      search-ring
193    search-ring-yank-pointer      search-ring-yank-pointer
194    regexp-search-ring      regexp-search-ring
195    regexp-search-ring-yank-pointer)      regexp-search-ring-yank-pointer)
196    "List of global variables to clear by `desktop-clear'.    "List of global variables to clear by `desktop-clear'.
197  An element may be variable name (a symbol) or a cons cell of the form  An element may be variable name (a symbol) or a cons cell of the form
198  \(VAR . FORM). Symbols are set to nil and for cons cells VAR is set  \(VAR . FORM). Symbols are set to nil and for cons cells VAR is set
# Line 202  to the value obtained by evaluateing FOR Line 202  to the value obtained by evaluateing FOR
202    
203  (defcustom desktop-clear-preserve-buffers-regexp  (defcustom desktop-clear-preserve-buffers-regexp
204    "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$"    "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$"
205    "Regexp identifying buffers that `desktop-clear' should not delete."    "Regexp identifying buffers that `desktop-clear' should not delete.
206    See also `desktop-clear-preserve-buffers'."
207    :type 'regexp    :type 'regexp
208    :group 'desktop)    :group 'desktop)
209    
 ;; Maintained for backward compatibility  
210  (defcustom desktop-clear-preserve-buffers nil  (defcustom desktop-clear-preserve-buffers nil
211    "*List of buffer names that `desktop-clear' should not delete.    "*List of buffer names that `desktop-clear' should not delete.
212  This variable is maintained for backward compatibility only."  See also `desktop-clear-preserve-buffers-regexp'."
213    :type '(repeat string)    :type '(repeat string)
214    :group 'desktop)    :group 'desktop)
 (make-obsolete-variable 'desktop-clear-preserve-buffers  
                         'desktop-clear-preserve-buffers-regexp)  
215    
216  (defcustom desktop-locals-to-save '(  (defcustom desktop-locals-to-save
217    desktop-locals-to-save  ; Itself!  Think it over.    '(desktop-locals-to-save  ; Itself!  Think it over.
218    truncate-lines      truncate-lines
219    case-fold-search      case-fold-search
220    case-replace      case-replace
221    fill-column      fill-column
222    overwrite-mode      overwrite-mode
223    change-log-default-name      change-log-default-name
224    line-number-mode      line-number-mode
225    buffer-file-coding-system)      buffer-file-coding-system)
226    "List of local variables to save for each buffer.    "List of local variables to save for each buffer.
227  The variables are saved only when they really are local."  The variables are saved only when they really are local."
228    :type '(repeat symbol)    :type '(repeat symbol)
# Line 282  DESKTOP-BUFFER-MISC.") Line 280  DESKTOP-BUFFER-MISC.")
280  (make-obsolete-variable 'desktop-buffer-misc-functions  (make-obsolete-variable 'desktop-buffer-misc-functions
281                          'desktop-save-buffer)                          'desktop-save-buffer)
282    
283  (defcustom desktop-buffer-mode-handlers '(  (defcustom desktop-buffer-mode-handlers
284    (dired-mode . dired-restore-desktop-buffer)    '((dired-mode . dired-restore-desktop-buffer)
285    (rmail-mode . rmail-restore-desktop-buffer)      (rmail-mode . rmail-restore-desktop-buffer)
286    (mh-folder-mode . mh-restore-desktop-buffer)      (mh-folder-mode . mh-restore-desktop-buffer)
287    (Info-mode . Info-restore-desktop-buffer))      (Info-mode . Info-restore-desktop-buffer))
288    "Alist of major mode specific functions to restore a desktop buffer.    "Alist of major mode specific functions to restore a desktop buffer.
289  Functions are called by `desktop-read'. List elements must have the form  Functions are called by `desktop-read'. List elements must have the form
290  \(MAJOR-MODE . RESTORE-BUFFER-FUNCTION).  \(MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
# Line 580  See also `desktop-base-file-name'." Line 578  See also `desktop-base-file-name'."
578      (let ((filename (expand-file-name desktop-base-file-name dirname))      (let ((filename (expand-file-name desktop-base-file-name dirname))
579            (info            (info
580              (mapcar              (mapcar
581                (function                #'(lambda (b)
                 (lambda (b)  
582                    (set-buffer b)                    (set-buffer b)
583                    (list                    (list
584                      (desktop-file-name (buffer-file-name) dirname)                      (desktop-file-name (buffer-file-name) dirname)
# Line 618  See also `desktop-base-file-name'." Line 615  See also `desktop-base-file-name'."
615                              (when (member (car locals) loclist)                              (when (member (car locals) loclist)
616                                (setq ll (cons (car locals) ll)))))                                (setq ll (cons (car locals) ll)))))
617                          (setq locals (cdr locals)))                          (setq locals (cdr locals)))
618                        ll))))                        ll)))
619                (buffer-list)))                (buffer-list)))
620            (buf (get-buffer-create "*desktop*")))            (buf (get-buffer-create "*desktop*")))
621        (set-buffer buf)        (set-buffer buf)
# Line 639  See also `desktop-base-file-name'." Line 636  See also `desktop-base-file-name'."
636            " kill-ring))\n"))            " kill-ring))\n"))
637    
638        (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")        (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
639        (mapcar        (mapcar #'(lambda (l)
640          (function                    (if (apply 'desktop-save-buffer-p l)
641            (lambda (l)                        (progn
642              (if (apply 'desktop-save-buffer-p l)                          (insert "(desktop-create-buffer " desktop-file-version)
643                (progn                          (mapcar #'(lambda (e)
644                  (insert "(desktop-create-buffer " desktop-file-version)                                      (insert "\n  " (desktop-value-to-string e)))
645                  (mapcar                                  l)
646                    (function                          (insert ")\n\n"))))
647                      (lambda (e)                info)
                       (insert "\n  " (desktop-value-to-string e))))  
                   l)  
                 (insert ")\n\n")))))  
         info)  
648        (setq default-directory dirname)        (setq default-directory dirname)
649        (when (file-exists-p filename) (delete-file filename))        (when (file-exists-p filename) (delete-file filename))
650        (let ((coding-system-for-write 'emacs-mule))        (let ((coding-system-for-write 'emacs-mule))
# Line 816  directory DIRNAME." Line 809  directory DIRNAME."
809     (defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read'     (defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read'
810  )  )
811    
812  (defun desktop-create-buffer (  (defun desktop-create-buffer
813    desktop-file-version    (desktop-file-version
814    desktop-buffer-file-name     desktop-buffer-file-name
815    desktop-buffer-name     desktop-buffer-name
816    desktop-buffer-major-mode     desktop-buffer-major-mode
817    desktop-buffer-minor-modes     desktop-buffer-minor-modes
818    desktop-buffer-point     desktop-buffer-point
819    desktop-buffer-mark     desktop-buffer-mark
820    desktop-buffer-read-only     desktop-buffer-read-only
821    desktop-buffer-misc     desktop-buffer-misc
822    &optional     &optional
823    desktop-buffer-locals)     desktop-buffer-locals)
824    ;; Just to silence the byte compiler. Bound locally in `desktop-read'.    ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
825    (eval-when-compile    (eval-when-compile
826      (defvar desktop-buffer-ok-count)      (defvar desktop-buffer-ok-count)
# Line 835  directory DIRNAME." Line 828  directory DIRNAME."
828    ;; To make desktop files with relative file names possible, we cannot    ;; To make desktop files with relative file names possible, we cannot
829    ;; allow `default-directory' to change. Therefore we save current buffer.    ;; allow `default-directory' to change. Therefore we save current buffer.
830    (save-current-buffer    (save-current-buffer
831      (let (      (let ((buffer-list (buffer-list))
832        (buffer-list (buffer-list))            (result
833        (result             (condition-case err
834           (condition-case err                 (funcall (or (cdr (assq desktop-buffer-major-mode
835               (funcall (or (cdr (assq desktop-buffer-major-mode desktop-buffer-mode-handlers))                                         desktop-buffer-mode-handlers))
836                            'desktop-restore-file-buffer)                              'desktop-restore-file-buffer)
837                        desktop-buffer-file-name                          desktop-buffer-file-name
838                        desktop-buffer-name                          desktop-buffer-name
839                        desktop-buffer-misc)                          desktop-buffer-misc)
840             (error               (error
841               (message "Desktop: Can't load buffer %s: %s"                (message "Desktop: Can't load buffer %s: %s"
842                        desktop-buffer-name (error-message-string err))                         desktop-buffer-name
843               (when desktop-missing-file-warning (sit-for 1))                         (error-message-string err))
844               nil)))                (when desktop-missing-file-warning (sit-for 1))
845      )                nil))))
846        (if (bufferp result)        (if (bufferp result)
847            (setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count))            (setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count))
848          (setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count))          (setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count))
# Line 867  directory DIRNAME." Line 860  directory DIRNAME."
860          (unless (equal (buffer-name) desktop-buffer-name)          (unless (equal (buffer-name) desktop-buffer-name)
861            (rename-buffer desktop-buffer-name))            (rename-buffer desktop-buffer-name))
862          ;; minor modes          ;; minor modes
863          (cond (          (cond ((equal '(t) desktop-buffer-minor-modes) ; backwards compatible
864            ;; backwards compatible                 (auto-fill-mode 1))
865            (equal '(t) desktop-buffer-minor-modes)                ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
866            (auto-fill-mode 1))(                 (auto-fill-mode 0))
867            (equal '(nil) desktop-buffer-minor-modes)                (t
868            (auto-fill-mode 0))(                 (mapcar #'(lambda (minor-mode)
869            t                             (when (functionp minor-mode) (funcall minor-mode 1)))
870            (mapcar                         desktop-buffer-minor-modes)))
             #'(lambda (minor-mode)  
               (when (functionp minor-mode) (funcall minor-mode 1)))  
             desktop-buffer-minor-modes)))  
871          ;; Even though point and mark are non-nil when written by `desktop-save'          ;; Even though point and mark are non-nil when written by `desktop-save'
872          ;; they may be modified by handlers wanting to set point or mark themselves.          ;; they may be modified by handlers wanting to set point or mark themselves.
873          (when desktop-buffer-point          (when desktop-buffer-point

Legend:
Removed from v.1.49.2.9  
changed lines
  Added in v.1.49.2.10

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