aboutsummaryrefslogtreecommitdiff
path: root/bard-elisp/bard-media.el
diff options
context:
space:
mode:
authorBardofSprites <[email protected]>2026-01-30 07:48:00 -0500
committerBardofSprites <[email protected]>2026-01-30 07:48:00 -0500
commit5bd1310456d6bee510c431882a625c27fba5db2e (patch)
treed9125777d84c8216685cbacebdd6752d1a35dfec /bard-elisp/bard-media.el
parent4fb0bf4471ffdd27f09a194276186d44f34bd771 (diff)
optionally browse marked nsxiv files in dired
Diffstat (limited to 'bard-elisp/bard-media.el')
-rw-r--r--bard-elisp/bard-media.el28
1 files changed, 24 insertions, 4 deletions
diff --git a/bard-elisp/bard-media.el b/bard-elisp/bard-media.el
index b7ebacd..d28e78d 100644
--- a/bard-elisp/bard-media.el
+++ b/bard-elisp/bard-media.el
@@ -87,11 +87,31 @@ Asks the user whether to enable recursive mode and whether to output marked file
(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."
- (let ((files (dired-get-marked-files)))
+ "Open nsxiv on the marked files in Dired."
+ (let* ((files (dired-get-marked-files))
+ (stdout (if (y-or-n-p "Output marked files to buffer? ") "-o" "")))
(message "Opening marked files: %s" (string-join files ", "))
- (apply #'start-process "nsxiv" "*nsxiv*" "nsxiv" "-t" files)))
+ (when (string= stdout "-o")
+ (with-current-buffer (get-buffer-create "*nsxiv*")
+ (read-only-mode 0)
+ (erase-buffer)))
+ ;; Corrected apply call:
+ (let ((process (apply #'start-process
+ "nsxiv"
+ "*nsxiv*"
+ (append (list "nsxiv" "-t" stdout) files))))
+ (when (string= stdout "-o")
+ (set-process-sentinel
+ process
+ (lambda (proc event)
+ (when (string= event "finished\n")
+ (with-current-buffer "*nsxiv*"
+ (read-only-mode nil)
+ (goto-char (point-min)))
+ (let ((files (with-current-buffer "*nsxiv*"
+ (split-string (buffer-string) "\n" t))))
+ (bard/open-marked-in-dired files)))))
+ (pop-to-buffer "*nsxiv*")))))
(defun bard/image-browser ()
"Open nsxiv in a context-sensitive way: