X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/e983096bb6a50fdae6625cb363642bcd74ec39c5..b336bfcdf39f1e4d35bff4a7bd01d3b4bca8f516:/lisp/desktop.el diff --git a/lisp/desktop.el b/lisp/desktop.el index 7aa360cc47..c247565af2 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -1,7 +1,8 @@ ;;; 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, 2010 +;; Free Software Foundation, Inc. ;; Author: Morten Welinder ;; Keywords: convenience @@ -9,10 +10,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 +21,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 +41,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 @@ -167,7 +166,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,12 +221,12 @@ 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) :group 'desktop - :version "22.1") + :version "23.2") ; user-emacs-directory added (defcustom desktop-missing-file-warning nil "If non-nil, offer to recreate the buffer of a deleted file. @@ -278,7 +277,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 @@ -303,10 +303,12 @@ to the value obtained by evaluating FORM." :version "22.1") (defcustom desktop-clear-preserve-buffers - '("\\*scratch\\*" "\\*Messages\\*" "\\*server\\*" "\\*tramp/.+\\*") - "*List of buffers that `desktop-clear' should not delete. + '("\\*scratch\\*" "\\*Messages\\*" "\\*server\\*" "\\*tramp/.+\\*" + "\\*Warnings\\*") + "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." + :version "23.3" ; added Warnings - bug#6336 :type '(repeat string) :group 'desktop) @@ -334,19 +336,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 +359,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 ~. @@ -812,16 +814,23 @@ which means to truncate VAR's value to at most MAX-SIZE elements 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)) + (let ((case-fold-search nil) + dired-skip) + (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)) + ;; FIXME this is broken if desktop-files-not-to-save is nil. (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 - (not (string-match desktop-files-not-to-save - default-directory)))) + (not (setq dired-skip + (string-match desktop-files-not-to-save + default-directory))))) (and (null filename) + (null dired-skip) ; bug#5755 (with-current-buffer bufname desktop-save-buffer)))))) ;; ---------------------------------------------------------------------------- @@ -1049,7 +1058,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 @@ -1278,7 +1287,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")))) ;; ----------------------------------------------------------------------------