|
1 |
|
2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; |
|
3 ;; Debian doc-base. |
|
4 |
|
5 (defvar debian-doc-dir "/usr/share/doc-base") |
|
6 (defvar debian-doc-buffer-name "*debian-doc*") |
|
7 (defvar debian-doc-buffer nil) |
|
8 |
|
9 (defvar debian-doc-mode-map (make-sparse-keymap)) |
|
10 |
|
11 (defconst debian-doc-font-lock-keywords |
|
12 '(("^[^ ][^:\n]*: " . font-lock-function-name-face) |
|
13 ("^\\(Index\\|Files\\): \\(/.*\\)" 2 font-lock-doc-face) |
|
14 ("^Format: \\(.*\\)" 1 font-lock-type-face) |
|
15 ("^Document: \\(.*\\)" 1 font-lock-keyword-face))) |
|
16 |
|
17 (defun debian-doc-mode () |
|
18 (kill-all-local-variables) |
|
19 (setq major-mode 'debian-doc-mode |
|
20 mode-name "Debian-Doc") |
|
21 (use-local-map debian-doc-mode-map) |
|
22 (setq font-lock-defaults '((debian-doc-font-lock-keywords) t nil nil nil))) |
|
23 |
|
24 (defvar debian-doc-completion-list nil) |
|
25 |
|
26 (defun debian-doc (&optional prefix) |
|
27 (interactive "P") |
|
28 (when prefix |
|
29 (kill-buffer debian-doc-buffer)) |
|
30 (if (buffer-live-p debian-doc-buffer) |
|
31 (switch-to-buffer debian-doc-buffer) |
|
32 (setq debian-doc-completion-list nil) |
|
33 (setq debian-doc-buffer (get-buffer-create debian-doc-buffer-name)) |
|
34 (switch-to-buffer debian-doc-buffer) |
|
35 (let ( (coding-system-for-read 'utf-8) ) |
|
36 (mapc (lambda (file) |
|
37 (when (file-regular-p file) |
|
38 ;; (with-temp-buffer |
|
39 ;; (insert-file-contents file)) |
|
40 (insert "\n-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-\n\n") |
|
41 (insert-file-contents file) |
|
42 (end-of-buffer))) |
|
43 (directory-files debian-doc-dir t))) |
|
44 (read-only-mode 1) |
|
45 (debian-doc-mode) |
|
46 (beginning-of-buffer))) |
|
47 |
|
48 (defun debian-doc-visit () |
|
49 (interactive) |
|
50 (let (word start) |
|
51 (debian-doc) |
|
52 (unless debian-doc-completion-list |
|
53 (save-excursion |
|
54 (beginning-of-buffer) |
|
55 (while (setq start (search-forward "Document: " nil t)) |
|
56 (end-of-line) |
|
57 (push (buffer-substring-no-properties start (point)) debian-doc-completion-list)))) |
|
58 (when (setq word (completing-read "Package: " debian-doc-completion-list nil t)) |
|
59 (beginning-of-buffer) |
|
60 (search-forward (concat "Document: " word) nil t) |
|
61 (recenter-top-bottom)))) |
|
62 (define-key debian-doc-mode-map (kbd "RET") 'debian-doc-visit-at-point) |
|
63 |