diff options
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/dirvish-config.el | 2 | ||||
| -rw-r--r-- | modules/music-config.el | 51 |
2 files changed, 27 insertions, 26 deletions
diff --git a/modules/dirvish-config.el b/modules/dirvish-config.el index 82b44008..47a821ea 100644 --- a/modules/dirvish-config.el +++ b/modules/dirvish-config.el @@ -277,7 +277,7 @@ regardless of what file or subdirectory the point is on." ("o" . cj/xdg-open) ("O" . cj/open-file-with-command) ; Prompts for command to run ("r" . dirvish-rsync) - ("p" . cj/dired-create-playlist-from-marked) + ("P" . cj/dired-create-playlist-from-marked) ("s" . dirvish-quicksort) ("v" . dirvish-vc-menu) ("y" . dirvish-yank-menu))) diff --git a/modules/music-config.el b/modules/music-config.el index 2ee2788b..f8ecb31d 100644 --- a/modules/music-config.el +++ b/modules/music-config.el @@ -226,7 +226,7 @@ Matching is case-insensitive." (choice-rel (completing-read "Choose music file or directory: " (cj/music--completion-table candidates) nil t)) - (cleaned-choice (if (string-suffix-p "/" choice-rel) + (cleaned-choice (if (string-suffix-p "/" choice-rel) (substring choice-rel 0 -1) choice-rel)) (choice-abs (expand-file-name cleaned-choice cj/music-root))) @@ -267,7 +267,7 @@ Tracks the saved file for future reference." (m3u-names-no-ext (mapcar (lambda (f) (file-name-sans-extension f)) m3u-files)) - (chosen-name (completing-read "Save playlist as: " + (chosen-name (completing-read "Save playlist as: " m3u-names-no-ext nil nil nil nil (format-time-string "playlist-%Y%m%d-%H%M%S"))) @@ -569,29 +569,30 @@ in the current window and provides appropriate feedback." (global-unset-key (kbd "<f10>")) (global-set-key (kbd "<f10>") #'cj/music-playlist-toggle) -;; TASK: Complete the Dired / EMMS integration -;; (defun cj/music-add-dired-selection () -;; "Add selected files or directories in Dired/Dirvish to the EMMS playlist. -;; If region is active, add marked files. Otherwise, add file at point. -;; Directories are added recursively." -;; (interactive) -;; (unless (derived-mode-p 'dired-mode) -;; (user-error "This command must be run in a Dired buffer")) -;; (let ((files (if (use-region-p) -;; (dired-get-marked-files) -;; (list (dired-get-file-for-visit))))) -;; (when (null files) -;; (user-error "No files selected")) -;; (dolist (file files) -;; (if (file-directory-p file) -;; (cj/music-add-directory-recursive file) -;; (if (cj/music--valid-file-p file) -;; (emms-add-file file) -;; (message "Skipping non-music file: %s" file)))) -;; (message "Added %d item(s) to EMMS playlist" (length files)))) -;; -;; TASK: add the dired keymapping to the above function -;; ("^" . cj/music-add-dired-selection) +;; ------------------------- Music Add Dired Selection ------------------------- + +(defun cj/music-add-dired-selection () + "Add selected files or directories in Dired/Dirvish to the EMMS playlist. +If region is active, add marked files. Otherwise, add file at point. +Directories are added recursively." + (interactive) + (unless (derived-mode-p 'dired-mode) + (user-error "This command must be run in a Dired buffer")) + (let ((files (if (use-region-p) + (dired-get-marked-files) + (list (dired-get-file-for-visit))))) + (when (null files) + (user-error "No files selected")) + (dolist (file files) + (if (file-directory-p file) + (cj/music-add-directory-recursive file) + (if (cj/music--valid-file-p file) + (emms-add-file file) + (message "Skipping non-music file: %s" file)))) + (message "Added %d item(s) to EMMS playlist" (length files)))) + +(with-eval-after-load 'dired + (define-key dirvish-mode-map "p" 'cj/music-add-dired-selection)) (provide 'music-config) ;;; music-config.el ends here |
