summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Pogonyshev <pogonyshev@gmail.com>2022-07-27 21:20:55 +0200
committerEli Zaretskii <eliz@gnu.org>2022-07-28 09:11:34 +0300
commit4be938169d6d1fc7bf0f44b78728f21a65317aed (patch)
tree77d3887fbcd25860e19ff7d89211b8b0012e42ed
parent4ea1f6c7f84a6f70a184a0e33a0b35ba4950839a (diff)
downloademacs-4be938169d6d1fc7bf0f44b78728f21a65317aed.tar.gz
Release the desktop lock in 'kill-emacs-hook'
* lisp/desktop.el: Run 'desktop--on-kill' in 'kill-emacs-hook'. (desktop--on-kill): New function, refactored from 'desktop-kill'. (desktop-kill): Call 'desktop--on-kill'. (Bug#56800)
-rw-r--r--lisp/desktop.el12
1 files changed, 9 insertions, 3 deletions
diff --git a/lisp/desktop.el b/lisp/desktop.el
index 041dbcf7c11..9cd26646dec 100644
--- a/lisp/desktop.el
+++ b/lisp/desktop.el
@@ -733,7 +733,10 @@ if different)."
;; ----------------------------------------------------------------------------
(unless noninteractive
- (add-hook 'kill-emacs-query-functions #'desktop-kill))
+ (add-hook 'kill-emacs-query-functions #'desktop-kill)
+ ;; Certain things should be done even if
+ ;; `kill-emacs-query-functions' are not called.
+ (add-hook 'kill-emacs-hook #'desktop--on-kill))
(defun desktop-kill ()
"If `desktop-save-mode' is non-nil, do what `desktop-save' says to do.
@@ -760,12 +763,15 @@ is nil, ask the user where to save the desktop."
(file-error
(unless (yes-or-no-p "Error while saving the desktop. Ignore? ")
(signal (car err) (cdr err))))))
+ (desktop--on-kill)
+ t)
+
+(defun desktop--on-kill ()
;; If we own it, we don't anymore.
(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)
+ (desktop-release-lock))))
;; ----------------------------------------------------------------------------
(defun desktop-list* (&rest args)