[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/mpv c6b3fa013c 36/50: Add mpv-run-command function to sync
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/mpv c6b3fa013c 36/50: Add mpv-run-command function to synchronously run commands |
Date: |
Tue, 28 Dec 2021 00:58:43 -0500 (EST) |
branch: elpa/mpv
commit c6b3fa013caa6848e564a5502e2e072584103cb9
Author: Johann Klähn <johann@jklaehn.de>
Commit: Johann Klähn <johann@jklaehn.de>
Add mpv-run-command function to synchronously run commands
Closes #3.
---
mpv.el | 34 ++++++++++++++++++++++++----------
1 file changed, 24 insertions(+), 10 deletions(-)
diff --git a/mpv.el b/mpv.el
index db6375552c..ab9ed7d506 100644
--- a/mpv.el
+++ b/mpv.el
@@ -155,6 +155,25 @@ below."
"" nil fn delay-command)
t))
+(defun mpv-run-command (command &rest arguments)
+ "Send a COMMAND to mpv, passing the remaining ARGUMENTS.
+Block while waiting for the response."
+ (when (mpv-live-p)
+ (let* ((response
+ (cl-block mpv-run-command-wait-for-response
+ (mpv--enqueue
+ (cons command arguments)
+ (lambda (response)
+ (cl-return-from mpv-run-command-wait-for-response
+ response)))
+ (while (mpv-live-p)
+ (sleep-for 0.05))))
+ (status (alist-get 'error response))
+ (data (alist-get 'data response)))
+ (unless (string-equal status "success")
+ (error "`%s' failed: %s" command status))
+ data)))
+
(defun mpv--tq-filter (tq string)
"Append to the queue's buffer and process the new data.
@@ -183,14 +202,12 @@ passes unsolicited event messages to `mpv-on-event-hook'."
(delete-region (point-min) (point))
;; event messages have form {"event": ...}
;; answers have form {"error": ..., "data": ...}
- ;; FIXME: handle errors?
(cond
((assoc 'event answer)
(run-hook-with-args 'mpv-on-event-hook answer))
((not (tq-queue-empty tq))
(unwind-protect
- (funcall (tq-queue-head-fn tq)
- (cdr (assoc 'data answer)))
+ (funcall (tq-queue-head-fn tq) answer)
(tq-queue-pop tq))))
;; Recurse to check for further JSON messages.
(mpv--tq-process-buffer tq))))
@@ -228,13 +245,10 @@ See `mpv-start' if you need to pass further arguments and
When called with a non-nil ARG, insert a timer list item like
`org-timer-item'."
(interactive "P")
- (let ((buffer (current-buffer)))
- (mpv--enqueue '("get_property" "playback-time")
- (lambda (time)
- (with-current-buffer buffer
- (funcall
- (if arg #'mpv--position-insert-as-org-item #'insert)
- (org-timer-secs-to-hms (round time))))))))
+ (let ((time (mpv-run-command "get_property" "playback-time")))
+ (funcall
+ (if arg #'mpv--position-insert-as-org-item #'insert)
+ (org-timer-secs-to-hms (round time)))))
(defun mpv--position-insert-as-org-item (time-string)
"Insert a description-type item with the playback position TIME-STRING.
- [nongnu] branch elpa/mpv created (now 9bd6d36cc7), ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 899559ae77 04/50: some fixes, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv ee505feff0 16/50: add .gitignore, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 0a02225f4e 30/50: autoload all interactive functions, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 27b98410e5 45/50: Fix decreasing volume or speed by multiple steps, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 8da5b19f3d 07/50: cleanup, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 91b094c966 02/50: initial import, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv f0da905fd3 06/50: implement pausing and inserting playback position, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 6338f0d6b5 12/50: rename to mpv.el, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv e3fad297cd 18/50: add README.md, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv c6b3fa013c 36/50: Add mpv-run-command function to synchronously run commands,
ELPA Syncer <=
- [nongnu] elpa/mpv 9dedf3b7c1 34/50: Monkey-patch org-timer-item instead of reimplementing, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 174cd4b68b 31/50: call expand-file-name on files passed to mpv-play, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 3849da1e45 01/50: root commit, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 33ca8987ed 03/50: work around spurious event messages, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 6fe510798a 26/50: fix mpv-speed-set, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv fcdca618df 29/50: add badge for MELPA stable, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv d7bb3a7082 40/50: Add sleep and timeout to mpv-kill and mpv-play, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv bc89524528 15/50: use timer formatting from org-timer.el, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv b026ae5bb6 46/50: Merge pull request #19 from c1-g/volume, ELPA Syncer, 2021/12/28
- [nongnu] elpa/mpv 1e666079b8 05/50: skip junk at beginning of buffer, ELPA Syncer, 2021/12/28