| ;; Copyright (c) 2014 Microsoft Corporation. All rights reserved. | |
| ;; Released under Apache 2.0 license as described in the file LICENSE. | |
| ;; | |
| ;; Author: Soonho Kong | |
| ;; | |
| (require 'cl-lib) | |
| (defvar lean4-debug-mode nil) | |
| (defvar lean4-debug-buffer-name "*lean4-debug*") | |
| (defun lean4-turn-on-debug-mode (&optional print-msg) | |
| (interactive) | |
| (when (or (called-interactively-p 'any) print-msg) | |
| (message "lean: turn on debug mode")) | |
| (get-buffer-create lean4-debug-buffer-name) | |
| (buffer-disable-undo lean4-debug-buffer-name) | |
| (display-buffer lean4-debug-buffer-name 'display-buffer-reuse-window | |
| '((reusable-frames . t))) | |
| (setq lean4-debug-mode t)) | |
| (defun lean4-turn-off-debug-mode (&optional print-msg) | |
| (interactive) | |
| (when (eq major-mode 'lean4-mode) | |
| (when (or (called-interactively-p 'any) print-msg) | |
| (message "lean: turn off debug mode")) | |
| (setq lean4-debug-mode nil))) | |
| (defun lean4-output-to-buffer (buffer-name format-string args) | |
| (with-current-buffer | |
| (get-buffer-create buffer-name) | |
| (save-selected-window | |
| (ignore-errors | |
| (select-window (get-buffer-window buffer-name t))) | |
| (goto-char (point-max)) | |
| (insert (apply 'format format-string args))))) | |
| (defun lean4-debug (format-string &rest args) | |
| "Display a message at the bottom of the *lean4-debug* buffer." | |
| (when lean4-debug-mode | |
| (let ((time-str (format-time-string "%H:%M:%S.%3N" (current-time)))) | |
| (lean4-output-to-buffer lean4-debug-buffer-name | |
| (concat "%s -- " format-string "\n") | |
| (cons (propertize time-str 'face 'font-lock-keyword-face) | |
| args))))) | |
| (provide 'lean4-debug) |