diff options
Diffstat (limited to 'lisp/servall-results.el')
-rw-r--r-- | lisp/servall-results.el | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lisp/servall-results.el b/lisp/servall-results.el new file mode 100644 index 0000000..33a1461 --- /dev/null +++ b/lisp/servall-results.el @@ -0,0 +1,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) + (funcall servall-results-open-function)) + +(provide 'servall-results) |