Simplify debugging and fix dynamic-scoping `eval'

* exwm-core.el (exwm-debug): New global minor mode to replace
`exwm-debug-on' and `exwm-debug-toggle'.

* exwm-manage.el (exwm-manage--get-configurations): Use
lexical-scoping `eval'.
This commit is contained in:
Chris Feng 2018-09-16 00:00:00 +00:00
parent 5903080b6e
commit 472f7cb82b
2 changed files with 7 additions and 15 deletions

View file

@ -68,10 +68,12 @@
(declare-function exwm-workspace-move-window "exwm-workspace.el" (declare-function exwm-workspace-move-window "exwm-workspace.el"
(frame-or-index &optional id)) (frame-or-index &optional id))
(defvar exwm-debug-on nil "Non-nil to turn on debug for EXWM.") (define-minor-mode exwm-debug
"Debug-logging enabled if non-nil"
:global t)
(defmacro exwm--debug (&rest forms) (defmacro exwm--debug (&rest forms)
(when exwm-debug-on `(progn ,@forms))) (when exwm-debug `(progn ,@forms)))
(defmacro exwm--log (&optional format-string &rest objects) (defmacro exwm--log (&optional format-string &rest objects)
"Emit a message prepending the name of the function being executed. "Emit a message prepending the name of the function being executed.
@ -79,22 +81,12 @@
FORMAT-STRING is a string specifying the message to output, as in FORMAT-STRING is a string specifying the message to output, as in
`format'. The OBJECTS arguments specify the substitutions." `format'. The OBJECTS arguments specify the substitutions."
(unless format-string (setq format-string "")) (unless format-string (setq format-string ""))
`(when exwm-debug-on `(when exwm-debug
(xcb-debug:message ,(concat "%s:\t" format-string "\n") (xcb-debug:message ,(concat "%s:\t" format-string "\n")
(xcb-debug:compile-time-function-name) (xcb-debug:compile-time-function-name)
,@objects) ,@objects)
nil)) nil))
(defun exwm-debug-toggle (&optional arg)
"Toggle EXWM debugging output.
When ARG is positive, turn debugging on; when negative off. When
ARG is nil, toggle debugging output."
(interactive
(list (or current-prefix-arg 'toggle)))
(setq exwm-debug-on (if (eq arg 'toggle)
(not exwm-debug-on)
(> 0 arg))))
(defsubst exwm--id->buffer (id) (defsubst exwm--id->buffer (id)
"X window ID => Emacs buffer." "X window ID => Emacs buffer."
(cdr (assoc id exwm--id-buffer-alist))) (cdr (assoc id exwm--id-buffer-alist)))
@ -201,7 +193,7 @@ least SECS seconds later."
(let ((map (make-sparse-keymap))) (let ((map (make-sparse-keymap)))
(define-key map "\C-c\C-d\C-l" #'xcb-debug:clear) (define-key map "\C-c\C-d\C-l" #'xcb-debug:clear)
(define-key map "\C-c\C-d\C-m" #'xcb-debug:mark) (define-key map "\C-c\C-d\C-m" #'xcb-debug:mark)
(define-key map "\C-c\C-d\C-t" #'exwm-debug-toggle) (define-key map "\C-c\C-d\C-t" #'exwm-debug)
(define-key map "\C-c\C-f" #'exwm-layout-set-fullscreen) (define-key map "\C-c\C-f" #'exwm-layout-set-fullscreen)
(define-key map "\C-c\C-h" #'exwm-floating-hide) (define-key map "\C-c\C-h" #'exwm-floating-hide)
(define-key map "\C-c\C-k" #'exwm-input-release-keyboard) (define-key map "\C-c\C-k" #'exwm-input-release-keyboard)

View file

@ -182,7 +182,7 @@ You can still make the X windows floating afterwards."
(when (derived-mode-p 'exwm-mode) (when (derived-mode-p 'exwm-mode)
(dolist (i exwm-manage-configurations) (dolist (i exwm-manage-configurations)
(save-current-buffer (save-current-buffer
(when (eval (car i)) (when (eval (car i) t)
(cl-return-from exwm-manage--get-configurations (cdr i))))))) (cl-return-from exwm-manage--get-configurations (cdr i)))))))
(defun exwm-manage--manage-window (id) (defun exwm-manage--manage-window (id)