comparison lisp/desktop.el @ 57038:791b0637af6d

(desktop-clear-preserve-buffers): Remove make-obsolete-variable.
author Lars Hansen <larsh@soem.dk>
date Thu, 09 Sep 2004 19:44:37 +0000
parents 27173676bedf
children b72ba185298b 566253900690
comparison
equal deleted inserted replaced
57037:c1d931106039 57038:791b0637af6d
169 "Normal hook run before the desktop is saved in a desktop file. 169 "Normal hook run before the desktop is saved in a desktop file.
170 This is useful for truncating history lists, for example." 170 This is useful for truncating history lists, for example."
171 :type 'hook 171 :type 'hook
172 :group 'desktop) 172 :group 'desktop)
173 173
174 (defcustom desktop-globals-to-save '( 174 (defcustom desktop-globals-to-save
175 desktop-missing-file-warning 175 '(desktop-missing-file-warning
176 tags-file-name 176 tags-file-name
177 tags-table-list 177 tags-table-list
178 search-ring 178 search-ring
179 regexp-search-ring 179 regexp-search-ring
180 register-alist) 180 register-alist)
181 "List of global variables saved by `desktop-save'. 181 "List of global variables saved by `desktop-save'.
182 An element may be variable name (a symbol) or a cons cell of the form 182 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 183 \(VAR . MAX-SIZE), which means to truncate VAR's value to at most
184 MAX-SIZE elements (if the value is a list) before saving the value. 184 MAX-SIZE elements (if the value is a list) before saving the value.
185 Feature: Saving `kill-ring' implies saving `kill-ring-yank-pointer'." 185 Feature: Saving `kill-ring' implies saving `kill-ring-yank-pointer'."
186 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp))) 186 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
187 :group 'desktop) 187 :group 'desktop)
188 188
189 (defcustom desktop-globals-to-clear '( 189 (defcustom desktop-globals-to-clear
190 kill-ring 190 '(kill-ring
191 kill-ring-yank-pointer 191 kill-ring-yank-pointer
192 search-ring 192 search-ring
193 search-ring-yank-pointer 193 search-ring-yank-pointer
194 regexp-search-ring 194 regexp-search-ring
195 regexp-search-ring-yank-pointer) 195 regexp-search-ring-yank-pointer)
196 "List of global variables to clear by `desktop-clear'. 196 "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 197 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 198 \(VAR . FORM). Symbols are set to nil and for cons cells VAR is set
199 to the value obtained by evaluateing FORM." 199 to the value obtained by evaluateing FORM."
200 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp))) 200 :type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
201 :group 'desktop) 201 :group 'desktop)
202 202
203 (defcustom desktop-clear-preserve-buffers-regexp 203 (defcustom desktop-clear-preserve-buffers-regexp
204 "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$" 204 "^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$"
205 "Regexp identifying buffers that `desktop-clear' should not delete." 205 "Regexp identifying buffers that `desktop-clear' should not delete.
206 See also `desktop-clear-preserve-buffers'."
206 :type 'regexp 207 :type 'regexp
207 :group 'desktop) 208 :group 'desktop)
208 209
209 ;; Maintained for backward compatibility
210 (defcustom desktop-clear-preserve-buffers nil 210 (defcustom desktop-clear-preserve-buffers nil
211 "*List of buffer names that `desktop-clear' should not delete. 211 "*List of buffer names that `desktop-clear' should not delete.
212 This variable is maintained for backward compatibility only." 212 See also `desktop-clear-preserve-buffers-regexp'."
213 :type '(repeat string) 213 :type '(repeat string)
214 :group 'desktop) 214 :group 'desktop)
215 (make-obsolete-variable 'desktop-clear-preserve-buffers 215
216 'desktop-clear-preserve-buffers-regexp) 216 (defcustom desktop-locals-to-save
217 217 '(desktop-locals-to-save ; Itself! Think it over.
218 (defcustom desktop-locals-to-save '( 218 truncate-lines
219 desktop-locals-to-save ; Itself! Think it over. 219 case-fold-search
220 truncate-lines 220 case-replace
221 case-fold-search 221 fill-column
222 case-replace 222 overwrite-mode
223 fill-column 223 change-log-default-name
224 overwrite-mode 224 line-number-mode
225 change-log-default-name 225 buffer-file-coding-system)
226 line-number-mode
227 buffer-file-coding-system)
228 "List of local variables to save for each buffer. 226 "List of local variables to save for each buffer.
229 The variables are saved only when they really are local." 227 The variables are saved only when they really are local."
230 :type '(repeat symbol) 228 :type '(repeat symbol)
231 :group 'desktop) 229 :group 'desktop)
232 (make-variable-buffer-local 'desktop-locals-to-save) 230 (make-variable-buffer-local 'desktop-locals-to-save)
280 (make-obsolete-variable 'desktop-buffer-modes-to-save 278 (make-obsolete-variable 'desktop-buffer-modes-to-save
281 'desktop-save-buffer) 279 'desktop-save-buffer)
282 (make-obsolete-variable 'desktop-buffer-misc-functions 280 (make-obsolete-variable 'desktop-buffer-misc-functions
283 'desktop-save-buffer) 281 'desktop-save-buffer)
284 282
285 (defcustom desktop-buffer-mode-handlers '( 283 (defcustom desktop-buffer-mode-handlers
286 (dired-mode . dired-restore-desktop-buffer) 284 '((dired-mode . dired-restore-desktop-buffer)
287 (rmail-mode . rmail-restore-desktop-buffer) 285 (rmail-mode . rmail-restore-desktop-buffer)
288 (mh-folder-mode . mh-restore-desktop-buffer) 286 (mh-folder-mode . mh-restore-desktop-buffer)
289 (Info-mode . Info-restore-desktop-buffer)) 287 (Info-mode . Info-restore-desktop-buffer))
290 "Alist of major mode specific functions to restore a desktop buffer. 288 "Alist of major mode specific functions to restore a desktop buffer.
291 Functions are called by `desktop-read'. List elements must have the form 289 Functions are called by `desktop-read'. List elements must have the form
292 \(MAJOR-MODE . RESTORE-BUFFER-FUNCTION). 290 \(MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
293 291
294 Buffers with a major mode not specified here, are restored by the default 292 Buffers with a major mode not specified here, are restored by the default
578 (setq dirname (file-name-as-directory (expand-file-name dirname))) 576 (setq dirname (file-name-as-directory (expand-file-name dirname)))
579 (save-excursion 577 (save-excursion
580 (let ((filename (expand-file-name desktop-base-file-name dirname)) 578 (let ((filename (expand-file-name desktop-base-file-name dirname))
581 (info 579 (info
582 (mapcar 580 (mapcar
583 (function 581 #'(lambda (b)
584 (lambda (b)
585 (set-buffer b) 582 (set-buffer b)
586 (list 583 (list
587 (desktop-file-name (buffer-file-name) dirname) 584 (desktop-file-name (buffer-file-name) dirname)
588 (buffer-name) 585 (buffer-name)
589 major-mode 586 major-mode
616 (if here 613 (if here
617 (setq ll (cons here ll)) 614 (setq ll (cons here ll))
618 (when (member (car locals) loclist) 615 (when (member (car locals) loclist)
619 (setq ll (cons (car locals) ll))))) 616 (setq ll (cons (car locals) ll)))))
620 (setq locals (cdr locals))) 617 (setq locals (cdr locals)))
621 ll)))) 618 ll)))
622 (buffer-list))) 619 (buffer-list)))
623 (buf (get-buffer-create "*desktop*"))) 620 (buf (get-buffer-create "*desktop*")))
624 (set-buffer buf) 621 (set-buffer buf)
625 (erase-buffer) 622 (erase-buffer)
626 623
637 "(setq kill-ring-yank-pointer (nthcdr " 634 "(setq kill-ring-yank-pointer (nthcdr "
638 (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer))) 635 (int-to-string (- (length kill-ring) (length kill-ring-yank-pointer)))
639 " kill-ring))\n")) 636 " kill-ring))\n"))
640 637
641 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n") 638 (insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
642 (mapcar 639 (mapcar #'(lambda (l)
643 (function 640 (if (apply 'desktop-save-buffer-p l)
644 (lambda (l) 641 (progn
645 (if (apply 'desktop-save-buffer-p l) 642 (insert "(desktop-create-buffer " desktop-file-version)
646 (progn 643 (mapcar #'(lambda (e)
647 (insert "(desktop-create-buffer " desktop-file-version) 644 (insert "\n " (desktop-value-to-string e)))
648 (mapcar 645 l)
649 (function 646 (insert ")\n\n"))))
650 (lambda (e) 647 info)
651 (insert "\n " (desktop-value-to-string e))))
652 l)
653 (insert ")\n\n")))))
654 info)
655 (setq default-directory dirname) 648 (setq default-directory dirname)
656 (when (file-exists-p filename) (delete-file filename)) 649 (when (file-exists-p filename) (delete-file filename))
657 (let ((coding-system-for-write 'emacs-mule)) 650 (let ((coding-system-for-write 'emacs-mule))
658 (write-region (point-min) (point-max) filename nil 'nomessage)))) 651 (write-region (point-min) (point-max) filename nil 'nomessage))))
659 (setq desktop-dirname dirname)) 652 (setq desktop-dirname dirname))
814 807
815 (eval-when-compile ; Just to silence the byte compiler 808 (eval-when-compile ; Just to silence the byte compiler
816 (defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read' 809 (defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read'
817 ) 810 )
818 811
819 (defun desktop-create-buffer ( 812 (defun desktop-create-buffer
820 desktop-file-version 813 (desktop-file-version
821 desktop-buffer-file-name 814 desktop-buffer-file-name
822 desktop-buffer-name 815 desktop-buffer-name
823 desktop-buffer-major-mode 816 desktop-buffer-major-mode
824 desktop-buffer-minor-modes 817 desktop-buffer-minor-modes
825 desktop-buffer-point 818 desktop-buffer-point
826 desktop-buffer-mark 819 desktop-buffer-mark
827 desktop-buffer-read-only 820 desktop-buffer-read-only
828 desktop-buffer-misc 821 desktop-buffer-misc
829 &optional 822 &optional
830 desktop-buffer-locals) 823 desktop-buffer-locals)
831 ;; Just to silence the byte compiler. Bound locally in `desktop-read'. 824 ;; Just to silence the byte compiler. Bound locally in `desktop-read'.
832 (eval-when-compile 825 (eval-when-compile
833 (defvar desktop-buffer-ok-count) 826 (defvar desktop-buffer-ok-count)
834 (defvar desktop-buffer-fail-count)) 827 (defvar desktop-buffer-fail-count))
835 ;; To make desktop files with relative file names possible, we cannot 828 ;; To make desktop files with relative file names possible, we cannot
836 ;; allow `default-directory' to change. Therefore we save current buffer. 829 ;; allow `default-directory' to change. Therefore we save current buffer.
837 (save-current-buffer 830 (save-current-buffer
838 (let ( 831 (let ((buffer-list (buffer-list))
839 (buffer-list (buffer-list)) 832 (result
840 (result 833 (condition-case err
841 (condition-case err 834 (funcall (or (cdr (assq desktop-buffer-major-mode
842 (funcall (or (cdr (assq desktop-buffer-major-mode desktop-buffer-mode-handlers)) 835 desktop-buffer-mode-handlers))
843 'desktop-restore-file-buffer) 836 'desktop-restore-file-buffer)
844 desktop-buffer-file-name 837 desktop-buffer-file-name
845 desktop-buffer-name 838 desktop-buffer-name
846 desktop-buffer-misc) 839 desktop-buffer-misc)
847 (error 840 (error
848 (message "Desktop: Can't load buffer %s: %s" 841 (message "Desktop: Can't load buffer %s: %s"
849 desktop-buffer-name (error-message-string err)) 842 desktop-buffer-name
850 (when desktop-missing-file-warning (sit-for 1)) 843 (error-message-string err))
851 nil))) 844 (when desktop-missing-file-warning (sit-for 1))
852 ) 845 nil))))
853 (if (bufferp result) 846 (if (bufferp result)
854 (setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count)) 847 (setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count))
855 (setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count)) 848 (setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count))
856 (setq result nil)) 849 (setq result nil))
857 (unless (bufferp result) (setq result nil)) 850 (unless (bufferp result) (setq result nil))
865 (setq desktop-first-buffer result)) 858 (setq desktop-first-buffer result))
866 (set-buffer result) 859 (set-buffer result)
867 (unless (equal (buffer-name) desktop-buffer-name) 860 (unless (equal (buffer-name) desktop-buffer-name)
868 (rename-buffer desktop-buffer-name)) 861 (rename-buffer desktop-buffer-name))
869 ;; minor modes 862 ;; minor modes
870 (cond ( 863 (cond ((equal '(t) desktop-buffer-minor-modes) ; backwards compatible
871 ;; backwards compatible 864 (auto-fill-mode 1))
872 (equal '(t) desktop-buffer-minor-modes) 865 ((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
873 (auto-fill-mode 1))( 866 (auto-fill-mode 0))
874 (equal '(nil) desktop-buffer-minor-modes) 867 (t
875 (auto-fill-mode 0))( 868 (mapcar #'(lambda (minor-mode)
876 t 869 (when (functionp minor-mode) (funcall minor-mode 1)))
877 (mapcar 870 desktop-buffer-minor-modes)))
878 #'(lambda (minor-mode)
879 (when (functionp minor-mode) (funcall minor-mode 1)))
880 desktop-buffer-minor-modes)))
881 ;; Even though point and mark are non-nil when written by `desktop-save' 871 ;; Even though point and mark are non-nil when written by `desktop-save'
882 ;; they may be modified by handlers wanting to set point or mark themselves. 872 ;; they may be modified by handlers wanting to set point or mark themselves.
883 (when desktop-buffer-point 873 (when desktop-buffer-point
884 (goto-char 874 (goto-char
885 (condition-case err 875 (condition-case err