;;; desktop.el --- save partial status of Emacs when killed
-;; Copyright (C) 1993, 1994, 1995, 1997, 2000, 2001, 2002, 2003,
-;; 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
+;; Copyright (C) 1993-1995, 1997, 2000-2011 Free Software Foundation, Inc.
;; Author: Morten Welinder <terra@diku.dk>
;; Keywords: convenience
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.
:version "22.1")
(defcustom desktop-clear-preserve-buffers
- '("\\*scratch\\*" "\\*Messages\\*" "\\*server\\*" "\\*tramp/.+\\*")
+ '("\\*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)
(delete-other-windows))
;; ----------------------------------------------------------------------------
-(add-hook 'kill-emacs-hook 'desktop-kill)
+(unless noninteractive
+ (add-hook 'kill-emacs-hook 'desktop-kill))
(defun desktop-kill ()
"If `desktop-save-mode' is non-nil, do what `desktop-save' says to do.
(when (and desktop-save-mode
(let ((exists (file-exists-p (desktop-full-file-name))))
(or (eq desktop-save t)
- (and exists (memq desktop-save '(ask-if-new if-exists)))
+ (and exists (eq desktop-save 'if-exists))
+ ;; If it exists, but we aren't using it, we are going
+ ;; to ask for a new directory below.
+ (and exists desktop-dirname (eq desktop-save 'ask-if-new))
(and
(or (memq desktop-save '(ask ask-if-new))
(and exists (eq desktop-save 'ask-if-exists)))
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))
+ (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))))))
;; ----------------------------------------------------------------------------
(provide 'desktop)
-;; arch-tag: 221907c3-1771-4fd3-9c2e-c6f700c6ede9
;;; desktop.el ends here