author | Oleksandr Gavenko <gavenkoa@gmail.com> |
Wed, 09 Feb 2011 12:05:27 +0200 | |
changeset 567 | 83b075682c97 |
parent 566 | 5efbc78b8c41 |
child 568 | 733640a153f5 |
permissions | -rwxr-xr-x |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
1 |
;;; my-log-mode.el --- major mode for error logs |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
2 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
3 |
;; Copyright (C) 2010 by Oleksandr Gavenko <gavenkoa@gmail.com> |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
4 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
5 |
;; You can do anything with this file without any warranty. |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
6 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
7 |
;; Author: Oleksandr Gavenko <gavenkoa@gmail.com> |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
8 |
;; Maintainer: Oleksandr Gavenko <gavenkoa@gmail.com> |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
9 |
;; Created: 2011-02-09 |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
10 |
;; Version: 0.1 |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
11 |
;; Keywords: logging |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
12 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
13 |
;;; Commentary: |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
14 |
;; |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
15 |
;; Very pure release. |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
16 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
17 |
;;; Code: |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
18 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
19 |
(defun my-log-goto (point) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
20 |
"" |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
21 |
(interactive "d") |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
22 |
(let ( start stop line fname fline (fregex "^\\([^:]+\\):\\([[:digit:]]+\\):") ) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
23 |
(save-excursion |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
24 |
(move-beginning-of-line 1) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
25 |
(setq start (point)) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
26 |
(move-end-of-line 1) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
27 |
(setq stop (point)) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
28 |
(setq line (filter-buffer-substring start stop)) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
29 |
(string-match fregex line) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
30 |
(setq fname (match-string 1 line)) |
566
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
31 |
(when fname |
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
32 |
(setq fline (string-to-int (match-string 2 line))) |
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
33 |
) |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
34 |
) |
566
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
35 |
(when (and fname (file-exists-p fname)) |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
36 |
(find-file-other-window fname) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
37 |
(goto-line fline) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
38 |
) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
39 |
)) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
40 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
41 |
(setq my-log-mode-map (make-sparse-keymap)) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
42 |
(define-key my-log-mode-map (kbd "RET") 'my-log-goto) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
43 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
44 |
(require 'generic-x) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
45 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
46 |
;;;###autoload |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
47 |
(define-generic-mode |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
48 |
'my-log-mode |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
49 |
nil |
566
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
50 |
nil |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
51 |
'( |
566
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
52 |
("^\\([^:]+\\):\\([[:digit:]]+\\):[^ |
567 | 53 |
]+$" (1 font-lock-function-name-face) (2 font-lock-type-face)) |
566
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
54 |
("^\\([^:]\\{1,10\\}\\):[^ |
567 | 55 |
]+$" (1 font-lock-keyword-face)) |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
56 |
) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
57 |
;; '("\\.log$") |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
58 |
nil |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
59 |
(list |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
60 |
(lambda nil |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
61 |
;; (setq buffer-read-only t) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
62 |
(use-local-map my-log-mode-map) |
566
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
63 |
(modify-syntax-entry ?' ".") |
5efbc78b8c41
Fix error when fline is nil. Optimize regex for highlighting. Set quotes as
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
565
diff
changeset
|
64 |
(modify-syntax-entry ?\" ".") |
565
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
65 |
)) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
66 |
) |
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
67 |
|
a9f4afeefe2a
Major mode for error logs.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents:
diff
changeset
|
68 |
;;; my-log-mode.el ends here |