Disable diff-font-lock-syntax as it visits files from Git and this is extremely slow in Cygwin+antivirus.
;;; log4-hi-mode.el --- Syntax highlighting logs keywords.
;;; Commentary:
;; Used for highlighting ERROR/WARN/INFO like keywords and dates in logs.
;;; Code:
(defgroup log4-hi nil
"`log4-hi-mode' mode for highlighting logs."
:prefix "log4-hi-"
:group 'text)
(defface log4-hi-error-face
'((t :inherit error))
"Face for critical message."
:group 'log4-hi)
(defface log4-hi-warn-face
'((t :inherit warning))
"Face for urgent message."
:group 'log4-hi)
(defface log4-hi-info-face
'((t :inherit success))
"Face for informational message."
:group 'log4-hi)
(defface log4-hi-func-face
'((t :inherit font-lock-function-name-face))
"Face for functions in trace."
:group 'log4-hi)
(defface log4-hi-time-face
'((t :inherit font-lock-builtin-face :height 0.7))
"Face for time."
:group 'log4-hi)
(defface log4-hi-hide-face
'((t :inherit shadow :height 0.7 :family "Arial"))
"Face for extra text for hiding."
:group 'log4-hi)
(defvar log4-hi-keywords
'(("FATAL\\|ERROR" . 'log4-hi-error-face)
("WARN\\|SEVERE" . 'log4-hi-warn-face)
("INFO\\|DEBUG\\|TRACE" . 'log4-hi-info-face) ))
(defvar log4-hi-func-keywords
'(("^.\\{0,5\\}at [[:alnum:]./]+\\.\\([[:alnum:]$]+\\.[[:alnum:]$<>]+\\)([[:alnum:]]+\\.java:[0-9]+)" 1 'log4-hi-func-face) )
"Highlight regex for line from Java stack trace.")
(defvar log4-hi-time-keywords
'(("\\(:?\\(:?[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,6\\}\\)?" . 'log4-hi-time-face))
"Highlight regex for ISO date.")
(defvar log4-hi-hide-regex
'(("\\[`.\\{3,100\\}`]" . 'log4-hi-hide-face))
"Highlight regex for extra text for hiding.")
(defvar log4-hi-func t
"Mark to use highlighting of function names in stacktraces. Currently only Java supported.")
(defvar log4-hi-mode-map (make-sparse-keymap)
"Keymap for `log4-hi-mode'.")
;;;###autoload
(define-minor-mode log4-hi-mode
"Highlight standard elements in log4* like log-files."
nil " log4-hi" log4-hi-mode-map
:global nil
(catch 'exit
(when log4-hi-mode
(font-lock-mode 1)
(font-lock-add-keywords nil log4-hi-keywords)
(font-lock-add-keywords nil log4-hi-time-keywords)
(font-lock-add-keywords nil log4-hi-hide-regex)
;; (when log4-hi-func (font-lock-add-keywords nil log4-hi-func-keywords))
;; (setq prettify-symbols-alist (list (cons "[`" ?$,2'f(B) (cons "`]" ?$,2'g(B)))
;; (prettify-symbols-mode 1)
(throw 'exit nil))
(font-lock-remove-keywords nil log4-hi-keywords)
(font-lock-remove-keywords nil log4-hi-time-keywords)
(font-lock-remove-keywords nil log4-hi-func-keywords)
(font-lock-remove-keywords nil log4-hi-hide-regex)
(prettify-symbols-mode -1))
(font-lock-flush))
(provide 'log4-hi-mode)
(provide 'log4-hi-mode)
;;; log4-hi-mode.el ends here