summaryrefslogtreecommitdiff
path: root/lisp/servall-wikipedia.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/servall-wikipedia.el')
-rw-r--r--lisp/servall-wikipedia.el44
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))