diff options
Diffstat (limited to 'lisp/desktop.el')
-rw-r--r-- | lisp/desktop.el | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/lisp/desktop.el b/lisp/desktop.el index fb7c6c79a1a..3b257132163 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -706,8 +706,9 @@ if different)." "\\)\\'"))) (dolist (buffer (buffer-list)) (let ((bufname (buffer-name buffer))) - (unless (or (eq (aref bufname 0) ?\s) ;; Don't kill internal buffers - (string-match-p preserve-regexp bufname)) + (unless (or (null bufname) + (eq (aref bufname 0) ?\s) ;; Don't kill internal buffers + (string-match-p preserve-regexp bufname)) (kill-buffer buffer))))) (delete-other-windows) (when (and desktop-restore-frames @@ -731,7 +732,7 @@ if different)." ;; ---------------------------------------------------------------------------- (unless noninteractive - (add-hook 'kill-emacs-hook #'desktop-kill)) + (add-hook 'kill-emacs-query-functions #'desktop-kill)) (defun desktop-kill () "If `desktop-save-mode' is non-nil, do what `desktop-save' says to do. @@ -759,7 +760,11 @@ is nil, ask the user where to save the desktop." (unless (yes-or-no-p "Error while saving the desktop. Ignore? ") (signal (car err) (cdr err)))))) ;; If we own it, we don't anymore. - (when (eq (emacs-pid) (desktop-owner)) (desktop-release-lock))) + (when (eq (emacs-pid) (desktop-owner)) + ;; Allow exiting Emacs even if we can't delete the desktop file. + (ignore-error 'file-error + (desktop-release-lock))) + t) ;; ---------------------------------------------------------------------------- (defun desktop-list* (&rest args) |