aboutsummaryrefslogtreecommitdiff
path: root/bard-elisp
diff options
context:
space:
mode:
authorBardofSprites <[email protected]>2025-12-26 18:19:36 -0500
committerBardofSprites <[email protected]>2025-12-26 18:19:36 -0500
commit79dbaae4a966414a228ed5d3790207195606722d (patch)
treec5ae32d78bd61d9861a661bc851df2f1d26fd513 /bard-elisp
parente6d264228cbb6ddcb6f681ceec711dfa5a74cb37 (diff)
update nsxiv command
Diffstat (limited to 'bard-elisp')
-rw-r--r--bard-elisp/bard-media.el22
1 files changed, 20 insertions, 2 deletions
diff --git a/bard-elisp/bard-media.el b/bard-elisp/bard-media.el
index e670e7c..b5d1707 100644
--- a/bard-elisp/bard-media.el
+++ b/bard-elisp/bard-media.el
@@ -31,7 +31,15 @@ Asks the user whether to enable recursive mode and whether to output marked file
(stdout (if (y-or-n-p "Output marked files to buffer? ") "-o" ""))
(full-dir (expand-file-name directory))
(args (remove "" (list "nsxiv" "-t" stdout recursive full-dir))))
+
+ ;; Pre-clear the output buffer if needed
+ (when (string= stdout "-o")
+ (with-current-buffer (get-buffer-create "*nsxiv*")
+ (read-only-mode 0)
+ (erase-buffer)))
+
(message "Running: %s" (string-join args " "))
+
(let ((process (apply #'start-process "nsxiv" "*nsxiv*" args)))
(when (string= stdout "-o")
(set-process-sentinel
@@ -40,9 +48,19 @@ Asks the user whether to enable recursive mode and whether to output marked file
(when (string= event "finished\n")
(with-current-buffer "*nsxiv*"
(read-only-mode nil)
- (erase-buffer)))))
+ (goto-char (point-min)))
+ ;; Read marked files
+ (let ((files (with-current-buffer "*nsxiv*"
+ (split-string (buffer-string) "\n" t))))
+ (bard/open-marked-in-dired files)))))
(pop-to-buffer "*nsxiv*")))))
+(defun bard/open-marked-in-dired (files)
+ "Open a list of FILES in an interactive Dired buffer."
+ (if (and files (listp files))
+ (dired (cons "*nsxiv-marked*" files))
+ (message "No valid files to show in Dired.")))
+
(defun bard/image-browser-marked ()
"Open nsxiv on the marked files in Dired.
Assumes that files have already been validated."
@@ -87,7 +105,7 @@ Assumes that files have already been validated."
(unless (string-match-p "^https?://" url)
(error "Current track is not a valid video URL"))
- (let ((cmd (format "%s -f best -o \"%s\" \"%s\""
+ (let ((cmd (format "%s -o \"%s\" \"%s\""
downloader output-template url)))
(message "Downloading video from: %s" url)
(let ((exit-code (shell-command cmd)))