Marking files now works recursively, too.

This commit is contained in:
contrapunctus 2020-01-14 12:37:37 +05:30
parent eef2f8bea9
commit d6abe6645b
3 changed files with 17 additions and 3 deletions

View File

@ -4,6 +4,10 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Unreleased
### Added
* Marking files now works recursively, too.
## [0.3.0] - 2020-01-14
### Added
* Open sxiv at the image at point

View File

@ -19,7 +19,7 @@ Run it from a text file containing one file name per line to open the listed fil
1. [x] Create user-customizable variable to hold default arguments
2. [x] Start sxiv on the file at point (using `-n ...`)
3. [x] Let user specify paths to be excluded.
4. [ ] Mark files in subdirectories if run recursively (by inserting the subdirectory into the current buffer)
4. [x] Mark files in subdirectories if run recursively (by inserting the subdirectory into the current buffer)
5. [ ] Let user edit options (ideally with transient.el) when called with null argument/two prefix arguments
6. [ ] When running with a lot of files, sxiv may take some time to start. Signal to the user that it is starting, and let them kill it if they want.
7. What should be the behavior when we open Dired-marked files, then mark files within sxiv?

14
sxiv.el
View File

@ -42,15 +42,25 @@ With no marked files, or if not in a Dired buffer, return nil."
nil)
nil))
(defun sxiv-insert-subdirs (paths)
"Insert subdirectories from PATHS into the current Dired buffer.
Return PATHS unchanged."
(mapc (lambda (path)
;; is the file a direct child? (i.e. exists in the current directory?)
(unless (file-exists-p (file-name-nondirectory path))
(dired-insert-subdir (file-name-directory path))))
paths)
paths)
(defun sxiv-filter (_process output)
"Open a `dired' buffer and mark any files marked by the user in `sxiv'.
Used as process filter for `sxiv'.
OUTPUT is the output of the sxiv process as a string."
(find-file sxiv--directory)
(--> output
(split-string it "\n")
(--> (split-string output "\n")
(-drop-last 1 it)
(sxiv-insert-subdirs it)
(sxiv-dired-mark-files it)))
(defun sxiv-dired-mark-files (files)