diff options
Diffstat (limited to 'lisp/servall-wikipedia.el')
-rw-r--r-- | lisp/servall-wikipedia.el | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/lisp/servall-wikipedia.el b/lisp/servall-wikipedia.el index 309381b..aebfeb9 100644 --- a/lisp/servall-wikipedia.el +++ b/lisp/servall-wikipedia.el @@ -19,9 +19,12 @@ servall-results-re-search-function nil servall-results-open-function nil)) -(defun servall-results-update () +(defun servall-results-update (&optional cb) (interactive) - (funcall servall-results-update-function)) + ;; 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) @@ -31,7 +34,43 @@ (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)))) + +;; wikipedia results (define-derived-mode servall-wikipedia-results-mode servall-results-mode "servall-wikipedia-results" "Mode for showing and selecting wikipedia results" @@ -80,6 +119,7 @@ (defun servall-wikipedia-to-name (title) (replace-regexp-in-string " " "_" title)) +;; wikipedia view (defvar servall-wikipedia-view-mode-map (let ((map (make-sparse-keymap))) (setq map (copy-keymap special-mode-map)) |