branch: elpa/cider commit 5920aa7d95f5ee478cbb0590f693af173c1b3209 Author: Roman Scherer <ro...@burningswell.com> Commit: Bozhidar Batsov <bozhi...@batsov.dev>
Make logview optional --- Eldev | 1 + cider-log.el | 48 +++++++++++++++++++-------- cider.el | 2 +- doc/modules/ROOT/pages/debugging/logging.adoc | 9 +++++ 4 files changed, 46 insertions(+), 14 deletions(-) diff --git a/Eldev b/Eldev index a4cbaf2615..5dc49631ff 100644 --- a/Eldev +++ b/Eldev @@ -9,6 +9,7 @@ (eldev-use-plugin 'autoloads) (eldev-add-loading-roots 'test "test/utils") +(eldev-add-extra-dependencies 'runtime '(:package logview :optional t)) (defvar cider-test-type 'main) (setf eldev-standard-excludes `(:or ,eldev-standard-excludes diff --git a/cider-log.el b/cider-log.el index efdb7ffaa0..1f039e1660 100644 --- a/cider-log.el +++ b/cider-log.el @@ -28,7 +28,7 @@ (require 'cider-inspector) (require 'cider-stacktrace) (require 'cl-lib) -(require 'logview) +(require 'logview nil t) (require 'org) (require 'seq) (require 'transient) @@ -82,6 +82,18 @@ :safe #'integerp :type 'integer) +(defcustom cider-log-use-logview (fboundp 'logview-mode) + "Whether to use `logview-mode' or not." + :group 'cider + :package-version '(cider . "1.8.0") + :safe #'booleanp + :type 'boolean) + +(defvar logview-mode-map) +(declare-function logview--guess-submode "logview" () t) +(declare-function logview-initialized-p "logview" () t) +(declare-function logview-mode "logview" () t) + (defvar cider-log--initialized-once-p nil "Set to t if log framework and appender have been initialized once.") @@ -565,7 +577,7 @@ The KEYS are used to lookup the values and are joined by SEPARATOR." (seq-doseq (buffer buffers) (with-current-buffer buffer (cider-log--insert-events buffer (list cider/log-event)) - (when (not (logview-initialized-p)) + (when (and cider-log-use-logview (not (logview-initialized-p))) (let ((framework cider-log-framework) (appender cider-log-appender) (consumer cider-log-consumer)) @@ -795,8 +807,9 @@ The KEYS are used to lookup the values and are joined by SEPARATOR." ;; Major mode (defvar cider-log-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map logview-mode-map) + (let ((map (make-sparse-keymap)) + (parent (if cider-log-use-logview logview-mode-map special-mode-map))) + (set-keymap-parent map parent) (define-key map (kbd "C-c M-l a") #'cider-log-appender) (define-key map (kbd "C-c M-l c") #'cider-log-consumer) (define-key map (kbd "C-c M-l e") #'cider-log-event) @@ -812,15 +825,8 @@ The KEYS are used to lookup the values and are joined by SEPARATOR." map) "The Cider log stream mode key map.") -(define-derived-mode cider-log-mode logview-mode "Cider Log" - "Major mode for inspecting Clojure log events. - -CIDER Log Mode allows you to capture, debug, inspect and view log events -emitted by Java logging frameworks. The captured log events can be -searched, streamed to the client, pretty printed and are integrated with -the CIDER Inspector and the CIDER stacktrace mode. - -\\{cider-log-mode-map}" +(defun cider-log--setup-mode () + "Setup CIDER log mode." (use-local-map cider-log-mode-map) (setq-local electric-indent-chars nil) (setq-local logview-show-ellipses nil) @@ -829,6 +835,22 @@ the CIDER Inspector and the CIDER stacktrace mode. (when (fboundp 'evil-set-initial-state) (evil-set-initial-state 'cider-log-mode 'emacs))) +(defvar cider-log--mode-doc + "Major mode for inspecting Clojure log events. + +CIDER Log Mode allows you to capture, debug, inspect and view log events +emitted by Java logging frameworks. The captured log events can be +searched, streamed to the client, pretty printed and are integrated with +the CIDER Inspector and the CIDER stacktrace mode. + +\\{cider-log-mode-map}") + +(if cider-log-use-logview + (define-derived-mode cider-log-mode logview-mode "Cider Log" cider-log--mode-doc + (cider-log--setup-mode)) + (define-derived-mode cider-log-mode special-mode "Cider Log" cider-log--mode-doc + (cider-log--setup-mode))) + ;; Transient Lisp Variable (defclass cider-log--lisp-variable (transient-lisp-variable) ()) diff --git a/cider.el b/cider.el index 423709b8c6..12d0bdbaa7 100644 --- a/cider.el +++ b/cider.el @@ -12,7 +12,7 @@ ;; Maintainer: Bozhidar Batsov <bozhi...@batsov.dev> ;; URL: http://www.github.com/clojure-emacs/cider ;; Version: 1.8.0-snapshot -;; Package-Requires: ((emacs "26") (clojure-mode "5.16.0") (parseedn "1.0.6") (queue "0.2") (spinner "1.7") (seq "2.22") (sesman "0.3.2") (logview "0.16.1") (transient "0.4.1")) +;; Package-Requires: ((emacs "26") (clojure-mode "5.16.0") (parseedn "1.0.6") (queue "0.2") (spinner "1.7") (seq "2.22") (sesman "0.3.2") (transient "0.4.1")) ;; Keywords: languages, clojure, cider ;; This program is free software: you can redistribute it and/or modify diff --git a/doc/modules/ROOT/pages/debugging/logging.adoc b/doc/modules/ROOT/pages/debugging/logging.adoc index 423dbd8cbd..ccb198f11a 100644 --- a/doc/modules/ROOT/pages/debugging/logging.adoc +++ b/doc/modules/ROOT/pages/debugging/logging.adoc @@ -25,6 +25,15 @@ logging related actions. - link:../usage/pretty_printing.html[Pretty Print] log events. - Show log events in the CIDER link:inspector.html[Inspector] - Show log event exceptions in the CIDER link:../usage/dealing_with_errors.html[Stacktrace Mode] +- Integration with https://github.com/doublep/logview[logview] + +== Dependencies + +https://github.com/doublep/logview[Logview] is an optional dependency +of CIDER Log Mode. We recommend using it, since it is responsible for +coloring the log events and it provides other useful features, such as +syntax highlighting, filtering and more. It is used automatically when +available and its use can be customized via `+cider-log-use-logview+`. == Usage