diff options
-rw-r--r-- | lisp/servall-results.el | 35 | ||||
-rw-r--r-- | lisp/servall-wikipedia.el | 70 | ||||
-rw-r--r-- | lisp/servall-ytdl.el | 41 | ||||
-rw-r--r-- | lisp/servall.el | 4 |
4 files changed, 81 insertions, 69 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) diff --git a/lisp/servall-wikipedia.el b/lisp/servall-wikipedia.el index aebfeb9..84385fa 100644 --- a/lisp/servall-wikipedia.el +++ b/lisp/servall-wikipedia.el @@ -1,74 +1,6 @@ ;; -*- lexical-binding: t; -*- (require 'servall-client) - -(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)) - -;; ytdl results -(define-derived-mode servall-ytdl-results-mode servall-results-mode - "servall-ytdl-results" - "Mode for showing and selecting ytdl results" - (setq-local servall-ytdl-results-query nil)) - -(defun servall-ytdl-search (query) - (interactive "sYtdl Query: ") - (with-current-buffer (get-buffer-create servall-results-buffer) - (servall-ytdl-results-mode) - (setq servall-ytdl-results-query query - servall-results-update-function 'servall-ytdl-results-update - servall-results-re-search-function 'servall-ytdl-search - servall-results-open-function 'servall-ytdl-results-open) - (servall-results-update (lambda () - (switch-to-buffer servall-results-buffer))))) - -(defun servall-ytdl-results-update (cb) - (servall-api-ytdl-search - servall-ytdl-results-query - (lambda (results) - (with-current-buffer (get-buffer-create servall-results-buffer) - (let* ((inhibit-read-only t)) - (erase-buffer) - (mapc - (lambda (result) - (let ((title (alist-get 'title result))) - (insert - (propertize - (concat "* " title "\n") - 'title title)) - (insert (alist-get 'description result) "\n\n"))) - results) - (goto-char (point-min)))) - (funcall cb)))) +(require 'servall-results) ;; wikipedia results (define-derived-mode servall-wikipedia-results-mode servall-results-mode diff --git a/lisp/servall-ytdl.el b/lisp/servall-ytdl.el new file mode 100644 index 0000000..426333b --- /dev/null +++ b/lisp/servall-ytdl.el @@ -0,0 +1,41 @@ +;; -*- lexical-binding: t; -*- +(require 'servall-client) +(require 'servall-results) + +;; ytdl results +(define-derived-mode servall-ytdl-results-mode servall-results-mode + "servall-ytdl-results" + "Mode for showing and selecting ytdl results" + (setq-local servall-ytdl-results-query nil)) + +(defun servall-ytdl-search (query) + (interactive "sYtdl Query: ") + (with-current-buffer (get-buffer-create servall-results-buffer) + (servall-ytdl-results-mode) + (setq servall-ytdl-results-query query + servall-results-update-function 'servall-ytdl-results-update + servall-results-re-search-function 'servall-ytdl-search + servall-results-open-function 'servall-ytdl-results-open) + (servall-results-update (lambda () + (switch-to-buffer servall-results-buffer))))) + +(defun servall-ytdl-results-update (cb) + (servall-api-ytdl-search + servall-ytdl-results-query + (lambda (results) + (with-current-buffer (get-buffer-create servall-results-buffer) + (let* ((inhibit-read-only t)) + (erase-buffer) + (mapc + (lambda (result) + (let ((title (alist-get 'title result))) + (insert + (propertize + (concat "* " title "\n") + 'title title)) + (insert (alist-get 'description result) "\n\n"))) + results) + (goto-char (point-min)))) + (funcall cb)))) + +(provide 'servall-ytdl) diff --git a/lisp/servall.el b/lisp/servall.el new file mode 100644 index 0000000..887fc57 --- /dev/null +++ b/lisp/servall.el @@ -0,0 +1,4 @@ +(require 'servall-wikipedia) +(require 'servall-ytdl) + +(provide 'servall) |