From: Eshel Yaron Date: Wed, 7 Sep 2022 15:08:28 +0000 (+0300) Subject: ENHANCED: emit Prolog messages with color coding X-Git-Tag: v0.2.0~23 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0f86b23be97990614f2f0fa582f3a60371df34b1;p=dict.git ENHANCED: emit Prolog messages with color coding --- diff --git a/sweep.el b/sweep.el index a1d08b0..e6790d5 100644 --- a/sweep.el +++ b/sweep.el @@ -122,6 +122,47 @@ is used to find a the swipl executable." (require 'sweep-module)) (error "Sweep will not work until `sweep-module' is compiled!")))) + +(defface sweep-debug-prefix-face + '((default :inherit shadow)) + "Face used to highlight the \"DEBUG\" message prefix." + :group 'sweep-faces) + +(defvar sweep-debug-prefix-face 'sweep-debug-prefix-face + "Name of the face used to highlight the \"DEBUG\" message prefix.") + +(defface sweep-debug-topic-face + '((default :inherit shadow)) + "Face used to highlight the topic in debug messages." + :group 'sweep-faces) + +(defvar sweep-debug-topic-face 'sweep-debug-topic-face + "Name of the face used to highlight the topic in debug messages.") + +(defface sweep-info-prefix-face + '((default :inherit default)) + "Face used to highlight the \"INFO\" message prefix." + :group 'sweep-faces) + +(defvar sweep-info-prefix-face 'sweep-info-prefix-face + "Name of the face used to highlight the \"INFO\" message prefix.") + +(defface sweep-warning-prefix-face + '((default :inherit font-lock-warning-face)) + "Face used to highlight the \"WARNING\" message prefix." + :group 'sweep-faces) + +(defvar sweep-warning-prefix-face 'sweep-warning-prefix-face + "Name of the face used to highlight the \"WARNING\" message prefix.") + +(defface sweep-error-prefix-face + '((default :inherit error)) + "Face used to highlight the \"ERROR\" message prefix." + :group 'sweep-faces) + +(defvar sweep-error-prefix-face 'sweep-error-prefix-face + "Name of the face used to highlight the \"ERROR\" message prefix.") + (defun sweep-view-messages () "View the log of recent Prolog messages." (interactive) @@ -147,7 +188,27 @@ is used to find a the swipl executable." (with-current-buffer (get-buffer-create sweep-messages-buffer-name) (save-excursion (goto-char (point-max)) - (insert message) + (let ((kind (car message)) + (content (cdr message))) + (pcase kind + (`("debug" . ,topic) + (insert (propertize "DEBUG" 'face sweep-debug-prefix-face)) + (insert "[") + (insert (propertize topic 'face sweep-debug-topic-face)) + (insert "]: ") + (insert content)) + ("informational" + (insert (propertize "INFO" 'face sweep-info-prefix-face)) + (insert ": ") + (insert content)) + ("warning" + (insert (propertize "WARNING" 'face sweep-warning-prefix-face)) + (insert ": ") + (insert content)) + ("error" + (insert (propertize "ERROR" 'face sweep-error-prefix-face)) + (insert ": ") + (insert content)))) (newline)))) (defun sweep-start-prolog-server () diff --git a/sweep.pl b/sweep.pl index 7b97502..8afce75 100644 --- a/sweep.pl +++ b/sweep.pl @@ -593,12 +593,13 @@ sweep_setup_message_hook(_, _) :- sweep_message_hook(Term, Kind, Lines) )). -sweep_message_hook(Term, Kind, _Lines) :- - should_handle_message_kind(Kind), +sweep_message_hook(Term, Kind0, _Lines) :- + should_handle_message_kind(Kind0, Kind), !, message_to_string(Term, String), - sweep_funcall("sweep-message", String, _). + sweep_funcall("sweep-message", [Kind|String], _). -should_handle_message_kind(error). -should_handle_message_kind(warning). -should_handle_message_kind(debug(_)). +should_handle_message_kind(error, "error"). +should_handle_message_kind(warning, "warning"). +should_handle_message_kind(informational, "informational"). +should_handle_message_kind(debug(Topic0), ["debug"|Topic]) :- atom_string(Topic0, Topic).