[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/logview 01aa1ad1a6 124/259: Added submode for Monolog, a
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/logview 01aa1ad1a6 124/259: Added submode for Monolog, a PHP logging framework. Closes #35. |
Date: |
Fri, 31 Jan 2025 07:02:03 -0500 (EST) |
branch: elpa/logview
commit 01aa1ad1a64da8531dc3dd6d71c0b2632005dd2b
Author: Mace Ojala <maco@itu.dk>
Commit: Mace Ojala <maco@itu.dk>
Added submode for Monolog, a PHP logging framework. Closes #35.
Also prettifying test indents.
---
README.md | 2 +-
logview.el | 9 +-
test/logview.el | 331 +++++++++++++++++++++++++----------------------------
test/monolog/1.log | 10 ++
4 files changed, 173 insertions(+), 179 deletions(-)
diff --git a/README.md b/README.md
index 4ffd5c596c..a38276cd8e 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,7 @@ command bindings lack modifiers.
Out-of-the-box the mode should be able to parse standard SLF4J (Log4j,
Logback) files as long as they use ISO 8601 timestamps, Apache error
-logs and certain UNIX files in `/var/log`.
+logs, PHP Monolog logs, and certain UNIX files in `/var/log`.
### Installation
diff --git a/logview.el b/logview.el
index 3cea28db10..8d1db117c3 100644
--- a/logview.el
+++ b/logview.el
@@ -73,8 +73,11 @@
(aliases . ("Log4j" "Log4j2" "Logback"))))
;; We misuse thread as a field for hostname.
("UNIX" . ((format . "TIMESTAMP THREAD NAME:")))
- ("Apache Error Log" . ((format . "[TIMESTAMP] [NAME:LEVEL] [THREAD]
MESSAGE")
- (levels . "RFC 5424 lowercase"))))
+ ("Apache Error Log" . ((format . "[TIMESTAMP] [NAME:LEVEL] [THREAD]
MESSAGE")
+ (levels . "RFC 5424 lowercase")))
+ ("Monolog" . ((format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
+ (levels . "RFC 5424")
+ (aliases . ("PHP" "PSR-3")))))
"Alist of standard submodes.
This value is used as the fallback for customizable
`logview-additional-submodes'.")
@@ -118,7 +121,7 @@ This alist value is used as the fallback for customizable
("ISO 8601 time only + millis" "HH:mm:ss.SSS")
("ISO 8601 time only + micros"
"HH:mm:ss.SSSSSS")
("ISO 8601 time only" "HH:mm:ss")
- ("asctime" "EEE MMM dd
HH:mm:ss.SSSSSS yyyy")
+ (nil "EEE MMM dd
HH:mm:ss.SSSSSS yyyy")
(nil "MMM d HH:mm:ss")
(nil "MMM d h:mm:ss
a")
(nil "h:mm:ss a")))
diff --git a/test/logview.el b/test/logview.el
index dcbed9e2f7..d5e4f16868 100644
--- a/test/logview.el
+++ b/test/logview.el
@@ -56,51 +56,51 @@
(ert-deftest logview-test-log4j-standard-1 ()
(logview--test-with-file "log4j/en-1.log" ()
- (should (equal logview--submode-name "SLF4J"))
- (logview--locate-current-entry entry start
- (should (and entry (equal start 1))))))
+ (should (equal logview--submode-name "SLF4J"))
+ (logview--locate-current-entry entry start
+ (should (and entry (equal start 1))))))
(ert-deftest logview-test-log4j-national-timestamp-1 ()
(logview--test-with-file "log4j/fr-1.log" ()
- (should (equal logview--submode-name "SLF4J"))))
+ (should (equal logview--submode-name "SLF4J"))))
;; Issue #2.
(ert-deftest logview-test-log4j-parens-in-thread-name ()
(logview--test-with-file "log4j/parens-in-thread-name.log" ()
- (should (equal logview--submode-name "SLF4J"))
- ;; Make sure that the second line is also
recognized as an entry.
- ;; If it isn't, this will signal an error.
- (logview-next-entry)))
+ (should (equal logview--submode-name "SLF4J"))
+ ;; Make sure that the second line is also recognized as an entry.
+ ;; If it isn't, this will signal an error.
+ (logview-next-entry)))
(ert-deftest logview-test-go-to-message-beginning-1 ()
(logview--test-with-file "log4j/navigation-1.log" ()
- (should (equal logview--submode-name "SLF4J"))
- (forward-line 2)
- (logview-go-to-message-beginning)
- (should (looking-at "message 3$"))))
+ (should (equal logview--submode-name "SLF4J"))
+ (forward-line 2)
+ (logview-go-to-message-beginning)
+ (should (looking-at "message 3$"))))
(ert-deftest logview-test-go-to-message-beginning-2 ()
(logview--test-with-file "log4j/navigation-1.log" ()
- (should (equal logview--submode-name "SLF4J"))
- (transient-mark-mode 1)
- (forward-line 2)
- (logview-go-to-message-beginning t)
- (should (looking-at "message 3$"))
- (should (string= (buffer-substring-no-properties
(region-beginning) (region-end)) "message 3"))
- (should (use-region-p))))
+ (should (equal logview--submode-name "SLF4J"))
+ (transient-mark-mode 1)
+ (forward-line 2)
+ (logview-go-to-message-beginning t)
+ (should (looking-at "message 3$"))
+ (should (string= (buffer-substring-no-properties (region-beginning)
(region-end)) "message 3"))
+ (should (use-region-p))))
(ert-deftest logview-test-unix-standard-1 ()
(logview--test-with-file "unix/1.log" ()
- (should (equal logview--submode-name "UNIX"))
- (logview--locate-current-entry entry start
- (should (and entry (equal start 1))))))
+ (should (equal logview--submode-name "UNIX"))
+ (logview--locate-current-entry entry start
+ (should (and entry (equal start 1))))))
(ert-deftest logview-test-custom-submode-1 ()
(logview--test-with-file "custom/1.log" ((logview-additional-submodes
'(("custom" (format . "TIMESTAMP
LEVEL [NAME] ") (levels . "SLF4J")))))
- (should (equal logview--submode-name "custom"))
- (logview--locate-current-entry entry start
- (should (and entry (equal start 1))))))
+ (should (equal logview--submode-name "custom"))
+ (logview--locate-current-entry entry start
+ (should (and entry (equal start 1))))))
;; RFC 5424 levels.
;;
@@ -111,181 +111,162 @@
;;
;; TODO: An epic case of DRY in these tests, maybe a function would be a good
idea?
(ert-deftest logview-test-rfc5424-level-0-emergency ()
- (logview--test-with-file "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL:
MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (should (equal (logview--locate-current-entry entry
nil (logview--entry-level entry)) 0))
- (logview-go-to-message-beginning)
- (should (looking-at "Emergency message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 0))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Emergency message.$"))))
(ert-deftest logview-test-rfc5424-level-1-alert ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 1)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 1))
- (logview-go-to-message-beginning)
- (should (looking-at "Alert message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 1)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 1))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Alert message.$"))))
(ert-deftest logview-test-rfc5424-level-2-critical ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 2)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 2))
- (logview-go-to-message-beginning)
- (should (looking-at "Critical message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 2)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 2))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Critical message.$"))))
(ert-deftest logview-test-rfc5424-level-3-error ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 3)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 3))
- (logview-go-to-message-beginning)
- (should (looking-at "Error message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 3)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 3))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Error message.$"))))
(ert-deftest logview-test-rfc5424-level-4-warning ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 4)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 4))
- (logview-go-to-message-beginning)
- (should (looking-at "Warning message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 4)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 4))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Warning message.$"))))
(ert-deftest logview-test-rfc5424-level-5-notice ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 5)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 5))
- (logview-go-to-message-beginning)
- (should (looking-at "Notice message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 5)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 5))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Notice message.$"))))
(ert-deftest logview-test-rfc5424-level-6-info ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 6)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 6))
- (logview-go-to-message-beginning)
- (should (looking-at "Info message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 6)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 6))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Info message.$"))))
(ert-deftest logview-test-rfc5424-level-7-debug ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 7)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 7))
- (logview-go-to-message-beginning)
- (should (looking-at "Debug message.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 7)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 7))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Debug message.$"))))
(ert-deftest logview-test-rfc5424-level-undefined ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- ;; (logview-next-entry 8)
- (forward-line 8)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 7))
- (logview-go-to-message-beginning)
- ;; (should (looking-at "No such level defined by RFC 5424.$"))))
- (should (looking-at ""))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ ;; (logview-next-entry 8)
+ (forward-line 8)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 7))
+ (logview-go-to-message-beginning)
+ ;; (should (looking-at "No such level defined by RFC 5424.$"))))
+ (should (looking-at ""))))
(ert-deftest logview-test-rfc5424-level-defined-level-after-an-undefined-one ()
- (logview--test-with-file
- "levels/rfc-5424-levels.log"
- ((logview-additional-submodes
- '(("Monolog"
- (format . "[TIMESTAMP] NAME[THREAD].LEVEL: MESSAGE")
- (levels . "RFC 5424")))))
- (should (equal logview--submode-name "Monolog"))
- (logview-next-entry 8)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 6))
- (logview-go-to-message-beginning)
- (should (looking-at "Info message after an invalid level.$"))))
+ (logview--test-with-file "levels/rfc-5424-levels.log" ()
+ (should (equal logview--submode-name "Monolog"))
+ (logview-next-entry 8)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 6))
+ (logview-go-to-message-beginning)
+ (should (looking-at "Info message after an invalid level.$"))))
;; Apache error log submode
(ert-deftest logview-test-apache-submode-recognition ()
- (logview--test-with-file
- "apache/error.log" ()
- (should (equal logview--submode-name "Apache Error Log"))))
+ (logview--test-with-file "apache/error.log" ()
+ (should (equal logview--submode-name "Apache Error Log"))))
(ert-deftest logview-test-apache-submode-find-entries ()
- (logview--test-with-file
- "apache/error.log" ()
- (logview--locate-current-entry entry start
- (should (and entry (equal start 1))))))
+ (logview--test-with-file "apache/error.log" ()
+ (logview--locate-current-entry entry start
+ (should (and entry (equal start 1))))))
(ert-deftest logview-test-apache-submode-match-a-message ()
- (logview--test-with-file
- "apache/error.log" ()
- (logview--locate-current-entry entry start
- (logview-go-to-message-beginning)
- (should (looking-at "Emergency message.$")))))
+ (logview--test-with-file "apache/error.log" ()
+ (logview--locate-current-entry entry start
+ (logview-go-to-message-beginning)
+ (should (looking-at "Emergency message.$")))))
(ert-deftest logview-test-apache-submode-match-a-message-after-undefined-lines
()
- (logview--test-with-file
- "apache/error.log" ()
- (logview--locate-current-entry entry start
- (logview-next-entry 8)
- (logview-go-to-message-beginning)
- (should (looking-at "Info message after some undefined lines.")))))
-
-;;TODO: This, or something should test the eventual final levels
-;;LogView Mode works with. With that transition, maybe the RFC 5424
-;;and RFC 5424 lowercase level definitions could be merged.
+ (logview--test-with-file "apache/error.log" ()
+ (logview--locate-current-entry entry start
+ (logview-next-entry 8)
+ (logview-go-to-message-beginning)
+ (should (looking-at "Info message after some undefined lines.")))))
+
+;; TODO: This, or something should test the eventual final levels
+;; LogView Mode works with. With that transition, maybe the RFC 5424
+;; and RFC 5424 lowercase level definitions could be merged.
(ert-deftest logview-test-apache-submode-match-all-levels ()
- (logview--test-with-file
- "apache/error.log" ()
- (logview--locate-current-entry entry start
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 0))
- (logview-next-entry)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 1))
- (logview-next-entry)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 2))
- (logview-next-entry)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 3))
- (logview-next-entry)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 4))
- (logview-next-entry)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 5))
- (logview-next-entry)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 6))
- (logview-next-entry)
- (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 7)))))
+ (logview--test-with-file "apache/error.log" ()
+ (logview--locate-current-entry entry start
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 0))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 1))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 2))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 3))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 4))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 5))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 6))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 7)))))
+
+;; Monolog submode
+(ert-deftest logview-test-monolog-submode-recognition ()
+ (logview--test-with-file "monolog/1.log" ()
+ (should (equal logview--submode-name "Monolog"))))
+
+(ert-deftest logview-test-monolog-submode-find-entries ()
+ (logview--test-with-file "monolog/1.log" ()
+ (logview--locate-current-entry entry start
+ (should (and entry (equal start 1))))))
+
+(ert-deftest logview-test-monolog-submode-match-a-message ()
+ (logview--test-with-file "monolog/1.log" ()
+ (logview--locate-current-entry entry start
+ (logview-go-to-message-beginning)
+ (should (looking-at "Emergency message.$")))))
+
+(ert-deftest logview-test-monolog-submode-match-all-levels ()
+ (logview--test-with-file "monolog/1.log" ()
+ (logview--locate-current-entry entry start
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 0))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 1))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 2))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 3))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 4))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 5))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 6))
+ (logview-next-entry)
+ (should (equal (logview--locate-current-entry entry nil
(logview--entry-level entry)) 7)))))
diff --git a/test/monolog/1.log b/test/monolog/1.log
new file mode 100644
index 0000000000..10a7ae2e29
--- /dev/null
+++ b/test/monolog/1.log
@@ -0,0 +1,10 @@
+[2019-12-23 10:51:54] name[thread].EMERGENCY: Emergency message.
+[2019-12-23 10:51:55] name[thread].ALERT: Alert message.
+[2019-12-23 10:51:55] name[thread].CRITICAL: Critical message.
+[2019-12-23 10:51:56] name[thread].ERROR: Error message.
+[2019-12-23 10:51:56] name[thread].WARNING: Warning message.
+[2019-12-23 10:51:56] name[thread].NOTICE: Notice message.
+[2019-12-23 10:51:56] name[thread].INFO: Info message.
+[2019-12-23 10:51:56] name[thread].DEBUG: Debug message.
+[2019-12-23 10:51:56] name[thread].KITTENS: No such level defined by RFC 5424.
+[2019-12-23 10:51:56] name[thread].INFO: Info message after an invalid level.
- [nongnu] elpa/logview 23c4e73831 196/259: Also test on Emacs 29.1., (continued)
- [nongnu] elpa/logview 23c4e73831 196/259: Also test on Emacs 29.1., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 12a33e026b 220/259: Also test on Emacs 29.2 and 29.3., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview cc870eef58 200/259: da71d44 * Update copyright years., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 1d1524f491 221/259: Add checks for Emacs 29 forgotten in commit 75c4945 before using new macros., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview d0c8d5e70f 041/259: Add support for timestamps with microseconds, ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 134b41557a 077/259: Bump version because of an important bugfix., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview f2b84b96b3 065/259: Add pseudo-filter to always show entries of certain levels (e.g. errors and warnings), regardless of any text filters., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 181eec1aa6 004/259: Expand list of standard submodes and timestamps so that some files in '/var/log' are picked up automatically., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview aa996ca1df 074/259: Allow to specify message field in format string: important to avoid the implicit trailing whitespace where necessary; fixes #16., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 46d028b9ea 089/259: Fix for commit 30759b1: don't use `advice-add' when not defined (on older 24.x versions)., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 01aa1ad1a6 124/259: Added submode for Monolog, a PHP logging framework. Closes #35.,
ELPA Syncer <=
- [nongnu] elpa/logview 72566479cb 121/259: Explicitly specify desired distro in `.travis.yml'., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 638dbd4833 131/259: Bump version because of a new feature., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview c67298a215 133/259: Bump version because of a fixed regression., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview da71d448f6 150/259: Update copyright years., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview b1be477c58 139/259: Bump version because of a fix to command `z z'., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 5c1df0a560 148/259: Implement sections with fontification and movement functionality., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 5cd1d37757 134/259: Fix logview-go-to-difference-base-entry for submodes with no threads, ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 15208a7429 158/259: Repair view editing fontification after commit a53330c; minor refactoring., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 1fdeaec361 154/259: Fix section commands and also a few commands added earlier to behave properly when narrowing is in effect., ELPA Syncer, 2025/01/31
- [nongnu] elpa/logview 24ce7ff1f9 165/259: Also test on Emacs 28.2., ELPA Syncer, 2025/01/31