X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/08861c5cb87e91e83e5b0bf53cb53c1377434c8f..2b34df4ebc935a834a77b930b35c4a42f7236440:/lisp/desktop.el diff --git a/lisp/desktop.el b/lisp/desktop.el index b126925c46..01573be7db 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -1,7 +1,7 @@ ;;; desktop.el --- save partial status of Emacs when killed ;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2003, -;; 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. ;; Author: Morten Welinder ;; Keywords: convenience @@ -9,10 +9,10 @@ ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 3, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -20,9 +20,7 @@ ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -42,7 +40,7 @@ ;; (desktop-save-mode 1) ;; ;; For further usage information, look at the section -;; "Saving Emacs Sessions" in the GNU Emacs Manual. +;; (info "(emacs)Saving Emacs Sessions") in the GNU Emacs Manual. ;; When the desktop module is loaded, the function `desktop-kill' is ;; added to the `kill-emacs-hook'. This function is responsible for @@ -84,7 +82,7 @@ ;; (add-to-list 'desktop-minor-mode-handlers ;; '(bar-mode . bar-desktop-restore)) -;; in the module itself, and make shure that the mode function is +;; in the module itself, and make sure that the mode function is ;; autoloaded. See the docstrings of `desktop-buffer-mode-handlers' and ;; `desktop-minor-mode-handlers' for more info. @@ -167,7 +165,7 @@ and function `desktop-read' for details." (desktop-save-mode 0)) (defcustom desktop-save 'ask-if-new - "*Specifies whether the desktop should be saved when it is killed. + "Specifies whether the desktop should be saved when it is killed. A desktop is killed when the user changes desktop or quits Emacs. Possible values are: t -- always save. @@ -222,7 +220,7 @@ the normal hook `desktop-not-loaded-hook' is run." :group 'desktop :version "22.2") -(defcustom desktop-path '("." "~") +(defcustom desktop-path (list "." user-emacs-directory "~") "List of directories to search for the desktop file. The base name of the file is specified in `desktop-base-file-name'." :type '(repeat directory) @@ -278,7 +276,8 @@ for example." tags-table-list search-ring regexp-search-ring - register-alist) + register-alist + file-name-history) "List of global variables saved by `desktop-save'. An element may be variable name (a symbol) or a cons cell of the form \(VAR . MAX-SIZE), which means to truncate VAR's value to at most @@ -304,7 +303,7 @@ to the value obtained by evaluating FORM." (defcustom desktop-clear-preserve-buffers '("\\*scratch\\*" "\\*Messages\\*" "\\*server\\*" "\\*tramp/.+\\*") - "*List of buffers that `desktop-clear' should not delete. + "List of buffers that `desktop-clear' should not delete. Each element is a regular expression. Buffers with a name matched by any of these won't be deleted." :type '(repeat string) @@ -334,19 +333,19 @@ modes are restored automatically; they should not be listed here." :type '(repeat symbol) :group 'desktop) -;; We skip .log files because they are normally temporary. -;; (ftp) files because they require passwords and whatnot. -(defcustom desktop-buffers-not-to-save - "\\(^nn\\.a[0-9]+\\|\\.log\\|(ftp)\\)$" +(defcustom desktop-buffers-not-to-save nil "Regexp identifying buffers that are to be excluded from saving." - :type 'regexp + :type '(choice (const :tag "None" nil) + regexp) + :version "23.2" ; set to nil :group 'desktop) ;; Skip tramp and ange-ftp files (defcustom desktop-files-not-to-save - "^/[^/:]*:" + "\\(^/[^/:]*:\\|(ftp)$\\)" "Regexp identifying files whose buffers are to be excluded from saving." - :type 'regexp + :type '(choice (const :tag "None" nil) + regexp) :group 'desktop) ;; We skip TAGS files to save time (tags-file-name is saved instead). @@ -357,7 +356,7 @@ modes are restored automatically; they should not be listed here." :group 'desktop) (defcustom desktop-file-name-format 'absolute - "*Format in which desktop file names should be saved. + "Format in which desktop file names should be saved. Possible values are: absolute -- Absolute file name. tilde -- Relative to ~. @@ -456,7 +455,8 @@ Furthermore the major mode function must be autoloaded.") '((auto-fill-function auto-fill-mode) (vc-mode nil) (vc-dired-mode nil) - (erc-track-minor-mode nil)) + (erc-track-minor-mode nil) + (savehist-mode nil)) "Table mapping minor mode variables to minor mode functions. Each entry has the form (NAME RESTORE-FUNCTION). NAME is the name of the buffer-local variable indicating that the minor @@ -812,9 +812,12 @@ FILENAME is the visited file name, BUFNAME is the buffer name, and MODE is the major mode. \n\(fn FILENAME BUFNAME MODE)" (let ((case-fold-search nil)) - (and (not (string-match desktop-buffers-not-to-save bufname)) + (and (not (and (stringp desktop-buffers-not-to-save) + (not filename) + (string-match desktop-buffers-not-to-save bufname))) (not (memq mode desktop-modes-not-to-save)) (or (and filename + (stringp desktop-files-not-to-save) (not (string-match desktop-files-not-to-save filename))) (and (eq mode 'dired-mode) (with-current-buffer bufname @@ -1048,7 +1051,7 @@ directory DIRNAME." (if desktop-dirname (desktop-save desktop-dirname) (call-interactively 'desktop-save)) - (message "Desktop saved in %s" desktop-dirname)) + (message "Desktop saved in %s" (abbreviate-file-name desktop-dirname))) ;; ---------------------------------------------------------------------------- ;;;###autoload @@ -1277,7 +1280,7 @@ If there are no buffers left to create, kill the timer." (setq desktop-lazy-timer nil)) (when desktop-buffer-args-list (setq desktop-buffer-args-list nil) - (when (interactive-p) + (when (called-interactively-p 'interactive) (message "Lazy desktop load aborted")))) ;; ----------------------------------------------------------------------------