[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm a3dba8e 1/3: Fix restarting issues
From: |
Chris Feng |
Subject: |
[elpa] externals/exwm a3dba8e 1/3: Fix restarting issues |
Date: |
Sun, 31 Jul 2016 05:18:56 +0000 (UTC) |
branch: externals/exwm
commit a3dba8edd9001e89e24c204b9186fdf8b444e78c
Author: Chris Feng <address@hidden>
Commit: Chris Feng <address@hidden>
Fix restarting issues
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs):
* exwm.el (exwm-restart): Run `kill-emacs-hook' early; do not check for
X windows before restarting.
---
exwm-workspace.el | 15 ++++++++++-----
exwm.el | 8 ++------
2 files changed, 12 insertions(+), 11 deletions(-)
diff --git a/exwm-workspace.el b/exwm-workspace.el
index b73059a..3e2fe1a 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -1039,12 +1039,17 @@ Please check `exwm-workspace--minibuffer-own-frame-p'
first."
(declare-function exwm-manage--unmanage-window "exwm-manage.el")
(declare-function exwm--exit "exwm.el")
-(defun exwm-workspace--confirm-kill-emacs (prompt)
+(defun exwm-workspace--confirm-kill-emacs (prompt &optional force)
"Confirm before exiting Emacs."
- (when (pcase (length exwm--id-buffer-alist)
- (0 (y-or-n-p prompt))
- (x (yes-or-no-p (format "[EXWM] %d window%s currently alive. %s"
- x (if (= x 1) "" "s") prompt))))
+ (when (or (and force (not (eq force 'no-check)))
+ (and (or (eq force 'no-check) (not exwm--id-buffer-alist))
+ (y-or-n-p prompt))
+ (yes-or-no-p (format "[EXWM] %d window(s) will be destroyed. %s"
+ (length exwm--id-buffer-alist) prompt)))
+ ;; Run `kill-emacs-hook' before Emacs frames are unmapped so that
+ ;; errors can be visible.
+ (run-hooks 'kill-emacs-hook)
+ (setq kill-emacs-hook nil)
;; Hide & reparent out all frames (save-set can't be used here since
;; X windows will be re-mapped).
(when (exwm-workspace--minibuffer-own-frame-p)
diff --git a/exwm.el b/exwm.el
index b04990b..9a593d5 100644
--- a/exwm.el
+++ b/exwm.el
@@ -87,15 +87,11 @@
(defun exwm-restart ()
"Restart EXWM."
(interactive)
- (when (exwm-workspace--confirm-kill-emacs "[EXWM] Restart? ")
- (server-force-delete)
- (run-hooks 'kill-emacs-hook)
- ;; FIXME: more?
+ (when (exwm-workspace--confirm-kill-emacs "[EXWM] Restart? " 'no-check)
(apply #'call-process (car command-line-args) nil nil nil
(cdr command-line-args))
;; Kill this instance at last.
- (let ((kill-emacs-hook nil))
- (kill-emacs))))
+ (kill-emacs)))
(defun exwm--update-window-type (id &optional force)
"Update _NET_WM_WINDOW_TYPE."