summaryrefslogtreecommitdiff
path: root/lisp/servall-results.el
blob: 137c52f8e1ec3801f08927285cd2fbb0145664ea (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
;; -*- lexical-binding: t; -*-
(defvar servall-results-mode-map
  (let ((map (make-sparse-keymap)))
    (setq map (copy-keymap special-mode-map))
    (define-key map "n" 'org-next-visible-heading)
    (define-key map "g" 'servall-results-update)
    (define-key map "\r" 'servall-results-open)
    (define-key map "p" 'org-previous-visible-heading)
    (define-key map "s" 'servall-results-re-search)
    map))
(defvar servall-results-buffer "*servall-results*")

(define-derived-mode servall-results-mode org-mode "servall-results"
  "Mode for showing and selecting results"
  (setq-local buffer-read-only t
              servall-results-update-function nil
              servall-results-re-search-function nil
              servall-results-open-function nil))

(defun servall-results-update (&optional cb)
  (interactive)
  ;; assuming the update function takes a cb iff cb is nonnil.
  (if cb 
      (funcall servall-results-update-function cb)
    (funcall servall-results-update-function)))

(defun servall-results-re-search ()
  (interactive)
  (call-interactively servall-results-re-search-function))

(defun servall-results-open ()
  (interactive)
  (call-interactively servall-results-open-function))

(provide 'servall-results)