aboutsummaryrefslogtreecommitdiff
path: root/config.org
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 /config.org
parent4fb0bf4471ffdd27f09a194276186d44f34bd771 (diff)
optionally browse marked nsxiv files in dired
Diffstat (limited to 'config.org')
-rw-r--r--config.org28
1 files changed, 24 insertions, 4 deletions
diff --git a/config.org b/config.org
index e6ba70c..1d9a357 100644
--- a/config.org
+++ b/config.org
@@ -3094,11 +3094,31 @@ I made a video about this workflow [[https://www.youtube.com/watch?v=fEUQEK_uXk0
(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: