log4-hi-mode.el
author Oleksandr Gavenko <gavenkoa@gmail.com>
Tue, 22 Sep 2020 12:53:26 +0300
changeset 1621 95a7aa1e3e60
parent 1610 f88b5c82e16c
child 1622 954b7c665c1a
permissions -rw-r--r--
Activate typescript mode with eval-after-load as feature isn't registerd during startup process so we cannot detect it earlier.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1261
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
     1
;;; log4-hi-mode.el --- Syntax highlighting logs keywords.
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
     2
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
     3
;;; Commentary:
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
     4
;; Used for highlighting ERROR/WARN/INFO like keywords and dates in logs.
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
     5
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
     6
;;; Code:
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
     7
1520
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
     8
(defgroup log4-hi nil
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
     9
  "`log4-hi-mode' mode for highlighting logs."
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    10
  :prefix "log4-hi-"
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    11
  :group 'text)
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    12
1078
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    13
(defface log4-hi-error-face
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    14
  '((t :inherit error))
1520
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    15
  "Face for critical message."
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    16
  :group 'log4-hi)
1078
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    17
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    18
(defface log4-hi-warn-face
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    19
  '((t :inherit warning))
1520
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    20
  "Face for urgent message."
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    21
  :group 'log4-hi)
1078
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    22
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    23
(defface log4-hi-info-face
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    24
  '((t :inherit success))
1520
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    25
  "Face for informational message."
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    26
  :group 'log4-hi)
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    27
1083
d4b063fc0f5e Add highlighting for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1078
diff changeset
    28
(defface log4-hi-func-face
d4b063fc0f5e Add highlighting for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1078
diff changeset
    29
  '((t :inherit font-lock-function-name-face))
1520
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    30
  "Face for functions in trace."
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    31
  :group 'log4-hi)
1083
d4b063fc0f5e Add highlighting for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1078
diff changeset
    32
1136
26996dddc80f Add highlighting for time.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1134
diff changeset
    33
(defface log4-hi-time-face
26996dddc80f Add highlighting for time.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1134
diff changeset
    34
  '((t :inherit font-lock-builtin-face))
1520
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    35
  "Face for time."
049eff94d357 Fix: Warning: defface fails to specify containing group.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1518
diff changeset
    36
  :group 'log4-hi)
1136
26996dddc80f Add highlighting for time.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1134
diff changeset
    37
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    38
(defvar log4-hi-keywords
1078
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    39
  '(("FATAL\\|ERROR" . 'log4-hi-error-face)
1134
d91fa7f7033a Add keyword for highlighting.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1083
diff changeset
    40
    ("WARN\\|SEVERE" . 'log4-hi-warn-face)
1078
bd0c280abe8a Define own faces to remove dependency on compile.el.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1077
diff changeset
    41
    ("INFO\\|DEBUG\\|TRACE" . 'log4-hi-info-face) ))
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    42
1137
b260dc221119 Refactoring: fix according to naming convention.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1136
diff changeset
    43
(defvar log4-hi-func-keywords
1610
f88b5c82e16c Added docs, limited regex lookup for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1609
diff changeset
    44
  '(("^.\\{0,5\\}at [[:alnum:]./]+\\.\\([[:alnum:]$]+\\.[[:alnum:]$<>]+\\)([[:alnum:]]+\\.java:[0-9]+)" 1 'log4-hi-func-face) )
f88b5c82e16c Added docs, limited regex lookup for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1609
diff changeset
    45
  "Highlight regex for line from Java stack trace.")
1083
d4b063fc0f5e Add highlighting for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1078
diff changeset
    46
1136
26996dddc80f Add highlighting for time.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1134
diff changeset
    47
(defvar log4-hi-time-keywords
1610
f88b5c82e16c Added docs, limited regex lookup for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1609
diff changeset
    48
  '(("\\(:?[0-9]\\{2\\}?[0-9]\\{2\\}.[0-9]\\{2\\}.[0-9]\\{2\\}.\\|\\<\\)[0-9]?[0-9]:[0-9][0-9]:[0-9][0-9]\\>\\(:?\\.[0-9]\\{3\\}\\)?" . 'log4-hi-time-face))
f88b5c82e16c Added docs, limited regex lookup for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1609
diff changeset
    49
  "Highlight regex for ISO date.")
1136
26996dddc80f Add highlighting for time.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1134
diff changeset
    50
1137
b260dc221119 Refactoring: fix according to naming convention.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1136
diff changeset
    51
(defvar log4-hi-func t
1083
d4b063fc0f5e Add highlighting for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1078
diff changeset
    52
  "Mark to use hilighting of function names in stacktraces. Currently only Java supported.")
d4b063fc0f5e Add highlighting for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1078
diff changeset
    53
1497
9a881de3da24 Define function to easy navigate to Java source file from Java exception.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1261
diff changeset
    54
(defvar log4-hi-mode-map (make-sparse-keymap)
9a881de3da24 Define function to easy navigate to Java source file from Java exception.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1261
diff changeset
    55
  "Keymap for `log4-hi-mode'.")
9a881de3da24 Define function to easy navigate to Java source file from Java exception.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1261
diff changeset
    56
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    57
;;;###autoload
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    58
(define-minor-mode log4-hi-mode
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    59
  "Highlight standard elements in log4* like log-files."
1497
9a881de3da24 Define function to easy navigate to Java source file from Java exception.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1261
diff changeset
    60
  nil " log4-hi" log4-hi-mode-map
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    61
  :global nil
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    62
  (catch 'exit
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    63
    (when log4-hi-mode
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    64
      (font-lock-mode 1)
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    65
      (font-lock-add-keywords nil log4-hi-keywords)
1136
26996dddc80f Add highlighting for time.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1134
diff changeset
    66
      (font-lock-add-keywords nil log4-hi-time-keywords)
1137
b260dc221119 Refactoring: fix according to naming convention.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1136
diff changeset
    67
      (when log4-hi-func (font-lock-add-keywords nil log4-hi-func-keywords))
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    68
      (throw 'exit nil))
1083
d4b063fc0f5e Add highlighting for Java stack traces.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1078
diff changeset
    69
    (font-lock-remove-keywords nil log4-hi-keywords)
1136
26996dddc80f Add highlighting for time.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1134
diff changeset
    70
    (font-lock-remove-keywords nil log4-hi-time-keywords)
1137
b260dc221119 Refactoring: fix according to naming convention.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1136
diff changeset
    71
    (font-lock-remove-keywords nil log4-hi-func-keywords))
1518
7965eec19342 Fix: Warning: "font-lock-fontify-buffer" is for interactive use only; use
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1499
diff changeset
    72
  (font-lock-flush))
1076
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    73
eed45b8a9e3a Highlight standard elements in log4* like log-files.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff changeset
    74
(provide 'log4-hi-mode)
1261
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
    75
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
    76
(provide 'log4-hi-mode)
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
    77
ebbd2c480f1d Fix checkdoc warnings.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 1137
diff changeset
    78
;;; log4-hi-mode.el ends here