diff options
author | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2018-08-13T12·00+0000 |
---|---|---|
committer | Adrián Medraño Calvo <adrian@medranocalvo.com> | 2018-08-13T12·00+0000 |
commit | 8d15a39c4d4928d9bc38bed63e2bb85e4536af45 (patch) | |
tree | 055156597eb21aca3a42c4190ef88373a276d8b0 /exwm-core.el | |
parent | 4d43e3119a2d0cb002d87340cd11c1d372ad126e (diff) |
Print log output to an EXWM-specific messages buffer
Using `message' to log debugging information is cumbersome, as the output appears constantly in the minibuffer, obscuring prompts and other information. In the case of long messages, it might resize the minibuffer, which causes EXWM to perform additional actions due to the log output. This change reimplements EXWM debug logging using a separate buffer (*EXWM-DEBUG*). Basic functionality, like scrolling when point is at the end of the buffer is maintained. * exwm-core.el (exwm--log): Use `exwm-debug--message' instead of `message'. Prefix all messages with the name of the function. Make FORMAT-STRING argument optional. * exwm-debug.el: New file. (exwm-debug-buffer): New variable holding the buffer where debug messages are output to. (exwm-debug--message): New function printing a message to `exwm-debug-buffer'. (exwm-debug--backtrace): New function printing a backtrace.
Diffstat (limited to 'exwm-core.el')
-rw-r--r-- | exwm-core.el | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/exwm-core.el b/exwm-core.el index ab5159c6a7a4..66b79171f068 100644 --- a/exwm-core.el +++ b/exwm-core.el @@ -31,6 +31,7 @@ (require 'xcb) (require 'xcb-icccm) (require 'xcb-ewmh) +(require 'exwm-debug) (eval-and-compile (defvar exwm-debug-on nil "Non-nil to turn on debug for EXWM.")) @@ -70,10 +71,18 @@ (declare-function exwm-workspace-move-window "exwm-workspace.el" (frame-or-index &optional id)) -(defmacro exwm--log (format-string &rest args) - "Print debug message." +(defmacro exwm--log (&optional format-string &rest objects) + "Emit a message prepending the name of the function being executed. + +FORMAT-STRING is a string specifying the message to output, as in +`format'. The OBJECTS arguments specify the substitutions." (when exwm-debug-on - `(message (concat "[EXWM] " ,format-string) ,@args))) + (unless format-string (setq format-string "")) + `(progn + (exwm-debug--message (concat "%s:\t" ,format-string "\n") + (exwm-debug--compile-time-function-name) + ,@objects) + nil))) (defmacro exwm--debug (&rest forms) (when exwm-debug-on `(progn ,@forms))) |