81 lines
2.2 KiB
EmacsLisp
81 lines
2.2 KiB
EmacsLisp
;;; fuel-log.el -- logging utilities
|
||
|
||
;; Copyright (C) 2008, 2009 Jose Antonio Ortega Ruiz
|
||
;; See http://factorcode.org/license.txt for BSD license.
|
||
|
||
;; Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
|
||
;; Keywords: languages, fuel, factor
|
||
;; Start date: Sun Dec 14, 2008 01:00
|
||
|
||
;;; Comentary:
|
||
|
||
;; Some utilities for maintaining a simple log buffer, mainly for
|
||
;; debugging purposes.
|
||
|
||
;;; Code:
|
||
|
||
(require 'fuel-base)
|
||
|
||
|
||
;;; Customization:
|
||
|
||
(defvar fuel-log--buffer-name "*fuel messages*"
|
||
"Name of the log buffer")
|
||
|
||
(defvar fuel-log--max-buffer-size 32000
|
||
"Maximum size of the Factor messages log")
|
||
|
||
(defvar fuel-log--max-message-size 512
|
||
"Maximum size of individual log messages")
|
||
|
||
(defvar fuel-log--verbose-p t
|
||
"Log level for Factor messages")
|
||
|
||
(defvar fuel-log--inhibit-p nil
|
||
"Set this to t to inhibit all log messages")
|
||
|
||
(defvar fuel-log--debug-p nil
|
||
"If t, all messages are logged no matter what")
|
||
|
||
;;;###autoload
|
||
(define-derived-mode factor-messages-mode fundamental-mode "FUEL Messages"
|
||
"Simple mode to log interactions with the factor listener"
|
||
(buffer-disable-undo)
|
||
(setq-local comint-redirect-subvert-readonly t)
|
||
(add-hook 'after-change-functions
|
||
'(lambda (b e len)
|
||
(let ((inhibit-read-only t))
|
||
(when (> b fuel-log--max-buffer-size)
|
||
(delete-region (point-min) b))))
|
||
nil t)
|
||
(setq buffer-read-only t))
|
||
|
||
(defun fuel-log--buffer ()
|
||
(or (get-buffer fuel-log--buffer-name)
|
||
(with-current-buffer (get-buffer-create fuel-log--buffer-name)
|
||
(factor-messages-mode)
|
||
(current-buffer))))
|
||
|
||
(defun fuel-log--msg (type &rest args)
|
||
(when (or fuel-log--debug-p (not fuel-log--inhibit-p))
|
||
(with-current-buffer (fuel-log--buffer)
|
||
(let ((inhibit-read-only t))
|
||
(insert
|
||
(fuel-shorten-str (format "\n%s: %s\n" type (apply 'format args))
|
||
fuel-log--max-message-size))))))
|
||
|
||
(defsubst fuel-log--warn (&rest args)
|
||
(apply 'fuel-log--msg 'WARNING args))
|
||
|
||
(defsubst fuel-log--error (&rest args)
|
||
(apply 'fuel-log--msg 'ERROR args))
|
||
|
||
(defsubst fuel-log--info (&rest args)
|
||
(when fuel-log--verbose-p
|
||
(apply 'fuel-log--msg 'INFO args) ""))
|
||
|
||
|
||
(provide 'fuel-log)
|
||
|
||
;;; fuel-log.el ends here
|