[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/listen e4cdd0cf6c 064/103: Library and shell command im
From: |
ELPA Syncer |
Subject: |
[elpa] externals/listen e4cdd0cf6c 064/103: Library and shell command improvements |
Date: |
Mon, 26 Feb 2024 12:59:30 -0500 (EST) |
branch: externals/listen
commit e4cdd0cf6cc1a31752b7f15aba810fd9e0432a55
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>
Library and shell command improvements
---
listen-library.el | 57 ++++++++++++++++++++++++++++++++++++++++++-------------
listen.el | 16 ++++++++++------
2 files changed, 54 insertions(+), 19 deletions(-)
diff --git a/listen-library.el b/listen-library.el
index 4ad055fb8f..8f9c5e3eb7 100644
--- a/listen-library.el
+++ b/listen-library.el
@@ -65,7 +65,7 @@
(list #'genre #'artist #'date #'album
#'track-string)))))
;;;###autoload
-(cl-defun listen-library (paths &key name)
+(cl-defun listen-library (paths &key name buffer)
"Show a library view of PATHS.
PATHS is a list of paths to files and/or directories.
Interactively, with prefix, NAME may be specified to show in the
@@ -79,20 +79,51 @@ mode line and bookmark name."
append (directory-files-recursively path "." t)
else collect path))
(tracks (remq nil (mapcar #'listen-queue-track filenames)))
- (buffer (thread-last listen-library-taxy
- taxy-emptied
- (taxy-fill tracks)
- ;; (taxy-sort #'string< #'listen-queue-track-)
- (taxy-sort* #'string< #'taxy-name)
- taxy-magit-section-pp))
(buffer-name (if name
(format "*Listen library: %s" name)
- (generate-new-buffer-name (format "*Listen
library*")))))
- (pop-to-buffer buffer)
- (rename-buffer buffer-name)
- (setq-local bookmark-make-record-function
#'listen-library--bookmark-make-record)
- (setf listen-library-paths paths
- listen-library-name name)))
+ (generate-new-buffer-name (format "*Listen
library*"))))
+ (buffer (or buffer (get-buffer-create buffer-name)))
+ (inhibit-read-only t))
+ (with-current-buffer buffer
+ (listen-library-mode)
+ (setf listen-library-paths paths
+ listen-library-name name)
+ (erase-buffer)
+ (thread-last listen-library-taxy
+ taxy-emptied
+ (taxy-fill tracks)
+ ;; (taxy-sort #'string< #'listen-queue-track-)
+ (taxy-sort* #'string< #'taxy-name)
+ taxy-magit-section-insert))
+ (pop-to-buffer buffer)))
+
+(defvar-keymap listen-library-mode-map
+ :parent magit-section-mode-map
+ "!" #'listen-library-shell-command
+ "g" #'listen-library-revert)
+
+(define-derived-mode listen-library-mode magit-section-mode "Listen-Library"
+ (setq-local bookmark-make-record-function
#'listen-library--bookmark-make-record))
+
+(declare-function listen-shell-command "listen")
+(defun listen-library-shell-command (command filenames)
+ "Run COMMAND on FILENAMES.
+Interactively, read COMMAND and use tracks at point in
+`listen-library' buffer."
+ (interactive
+ (let* ((value (oref (magit-current-section) value))
+ (filenames (cl-typecase value
+ (listen-track (list (listen-track-filename value)))
+ (taxy-magit-section (mapcar #'listen-track-filename
(taxy-flatten value)))))
+ (command (read-shell-command (format "Run command on %S: "
filenames))))
+ (list command filenames)))
+ (listen-shell-command command filenames))
+
+(defun listen-library-revert ()
+ "Revert current listen library buffer."
+ (interactive)
+ (cl-assert listen-library-paths)
+ (listen-library listen-library-paths :name listen-library-name))
;;;;; Bookmark support
diff --git a/listen.el b/listen.el
index cba7e4356a..b2c5a08702 100755
--- a/listen.el
+++ b/listen.el
@@ -152,16 +152,20 @@ relative seek."
(list player (concat prefix (number-to-string seconds)))))
(listen--seek player seconds))
-(cl-defun listen-shell-command (command filename)
- "Run shell COMMAND on FILENAME.
+(cl-defun listen-shell-command (command filenames)
+ "Run shell COMMAND on FILENAMES.
Interactively, use the current player's current track, and read
command with completion."
(interactive
(let* ((player (listen--player))
- (filename (abbreviate-file-name (listen--filename player)))
- (command (read-shell-command (format "Run command on %S: "
filename))))
- (list command filename)))
- (let ((command (format "%s %s" command (shell-quote-argument
(expand-file-name filename)))))
+ (filenames (list (abbreviate-file-name (listen--filename player))))
+ (command (read-shell-command (format "Run command on %S: "
filenames))))
+ (list command filenames)))
+ (let ((command (format "%s %s" command
+ (mapconcat (lambda (filename)
+ (shell-quote-argument (expand-file-name
filename)))
+ filenames " ")))
+ (display-buffer-alist `((,(regexp-quote
shell-command-buffer-name-async) display-buffer-no-window))))
(async-shell-command command)))
;;;; Mode
- [elpa] externals/listen 67ef450cb7 053/103: Tidy, (continued)
- [elpa] externals/listen 67ef450cb7 053/103: Tidy, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 58eb2d9721 051/103: Mode, ELPA Syncer, 2024/02/26
- [elpa] externals/listen d215ddc330 058/103: Autoload bookmark handler, ELPA Syncer, 2024/02/26
- [elpa] externals/listen be4e25fda4 048/103: Queue bookmarks, ELPA Syncer, 2024/02/26
- [elpa] externals/listen e3c23b00f1 073/103: Release: v0.1, ELPA Syncer, 2024/02/26
- [elpa] externals/listen f4e2d8d71f 084/103: Add: (listen-queue-refresh), ELPA Syncer, 2024/02/26
- [elpa] externals/listen 2ac2eed1fd 082/103: Add: (listen-queue-shell-command), ELPA Syncer, 2024/02/26
- [elpa] externals/listen d84c2e8745 063/103: Library bookmarks, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 6ea353586e 086/103: Release: v0.2, ELPA Syncer, 2024/02/26
- [elpa] externals/listen d41da92402 096/103: Change: (listen-mpd-completing-read) Use completing-read-multiple, ELPA Syncer, 2024/02/26
- [elpa] externals/listen e4cdd0cf6c 064/103: Library and shell command improvements,
ELPA Syncer <=
- [elpa] externals/listen 214b87215c 067/103: Fix: (listen-mode-lighter), ELPA Syncer, 2024/02/26
- [elpa] externals/listen d417f11c49 068/103: Tidy, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 1371d14c26 062/103: Update docs, commentary, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 294a129ff2 081/103: Revert "Change: (listen-queue--update-buffer) Add REVERTP argument", ELPA Syncer, 2024/02/26
- [elpa] externals/listen b515c309ab 046/103: Improve transient, ELPA Syncer, 2024/02/26
- [elpa] externals/listen b9d4fd6c17 071/103: Order queue, faces, etc, ELPA Syncer, 2024/02/26
- [elpa] externals/listen b605713e0c 072/103: Queue fixes, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 6138622ee2 076/103: Fix: (listen-queue-play) Don't reactivate mode, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 30f7f02c74 079/103: Comment: Add TODO, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 66302803b4 038/103: Queue yank/kill, ELPA Syncer, 2024/02/26