/misc/fuel/fuel-log.el

http://github.com/abeaumont/factor · Emacs Lisp · 80 lines · 48 code · 20 blank · 12 comment · 1 complexity · 4e320a51b0da55be87755793b61008e0 MD5 · raw file

  1. ;;; fuel-log.el -- logging utilities
  2. ;; Copyright (C) 2008, 2009 Jose Antonio Ortega Ruiz
  3. ;; See http://factorcode.org/license.txt for BSD license.
  4. ;; Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
  5. ;; Keywords: languages, fuel, factor
  6. ;; Start date: Sun Dec 14, 2008 01:00
  7. ;;; Comentary:
  8. ;; Some utilities for maintaining a simple log buffer, mainly for
  9. ;; debugging purposes.
  10. ;;; Code:
  11. (require 'fuel-base)
  12. ;;; Customization:
  13. (defvar fuel-log--buffer-name "*fuel messages*"
  14. "Name of the log buffer")
  15. (defvar fuel-log--max-buffer-size 32000
  16. "Maximum size of the Factor messages log")
  17. (defvar fuel-log--max-message-size 512
  18. "Maximum size of individual log messages")
  19. (defvar fuel-log--verbose-p t
  20. "Log level for Factor messages")
  21. (defvar fuel-log--inhibit-p nil
  22. "Set this to t to inhibit all log messages")
  23. (defvar fuel-log--debug-p nil
  24. "If t, all messages are logged no matter what")
  25. (define-derived-mode factor-messages-mode fundamental-mode "FUEL Messages"
  26. "Simple mode to log interactions with the factor listener"
  27. (kill-all-local-variables)
  28. (buffer-disable-undo)
  29. (set (make-local-variable 'comint-redirect-subvert-readonly) t)
  30. (add-hook 'after-change-functions
  31. '(lambda (b e len)
  32. (let ((inhibit-read-only t))
  33. (when (> b fuel-log--max-buffer-size)
  34. (delete-region (point-min) b))))
  35. nil t)
  36. (setq buffer-read-only t))
  37. (defun fuel-log--buffer ()
  38. (or (get-buffer fuel-log--buffer-name)
  39. (save-current-buffer
  40. (set-buffer (get-buffer-create fuel-log--buffer-name))
  41. (factor-messages-mode)
  42. (current-buffer))))
  43. (defun fuel-log--msg (type &rest args)
  44. (when (or fuel-log--debug-p (not fuel-log--inhibit-p))
  45. (with-current-buffer (fuel-log--buffer)
  46. (let ((inhibit-read-only t))
  47. (insert
  48. (fuel--shorten-str (format "\n%s: %s\n" type (apply 'format args))
  49. fuel-log--max-message-size))))))
  50. (defsubst fuel-log--warn (&rest args)
  51. (apply 'fuel-log--msg 'WARNING args))
  52. (defsubst fuel-log--error (&rest args)
  53. (apply 'fuel-log--msg 'ERROR args))
  54. (defsubst fuel-log--info (&rest args)
  55. (when fuel-log--verbose-p
  56. (apply 'fuel-log--msg 'INFO args) ""))
  57. (provide 'fuel-log)
  58. ;;; fuel-log.el ends here