[Emacs] Add fd for file search in EMMS, better variables
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
d5628bd9fe
commit
a6a1b3e7b6
@ -2066,11 +2066,17 @@ configuration [[file:mpd.org][here]]).
|
||||
:straight (:build t)
|
||||
:init
|
||||
(require 'emms-setup)
|
||||
(require 'emms-mark)
|
||||
(emms-all)
|
||||
(add-to-list 'emms-info-functions 'emms-info-mpd)
|
||||
(add-to-list 'emms-player-list 'emms-player-mpd)
|
||||
(emms-player-mpd-sync-from-mpd)
|
||||
(emms-player-mpd-connect)
|
||||
|
||||
<<emms-fd-name>>
|
||||
<<emms-fd-function>>
|
||||
<<emms-search-set-variable>>
|
||||
|
||||
<<emms-media-hydra>>
|
||||
(defun emms-player-toggle-pause ()
|
||||
(interactive)
|
||||
@ -2079,7 +2085,11 @@ configuration [[file:mpd.org][here]]).
|
||||
((emms-source-file-default-directory (expand-file-name "~/Music"))
|
||||
(emms-player-mpd-server-name "localhost")
|
||||
(emms-player-mpd-server-port "6600")
|
||||
(emms-player-mpd-music-directory (expand-file-name "~/Music")))
|
||||
(emms-player-mpd-music-directory (expand-file-name "~/Music"))
|
||||
(emms-browser-thumbnail-small-size 64)
|
||||
(emms-browser-thumbnail-medium-size 128)
|
||||
(emms-browser-covers #'emms-browser-cache-thumbnail-async)
|
||||
(emms-playlist-default-major-mode 'emms-mark-mode))
|
||||
:general
|
||||
(phundrak/undefine
|
||||
:keymaps 'emms-browser-mode-map
|
||||
@ -2132,6 +2142,53 @@ configuration [[file:mpd.org][here]]).
|
||||
"uc" #'emms-cache-set-from-mpd-all))
|
||||
#+end_src
|
||||
|
||||
**** Finding files from EMMS
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: Packages-Configuration-Applications-EMMS-and-Media-Finding-files-from-EMMS-as6fgpv0baj0
|
||||
:header-args:emacs-lisp: :tangle no
|
||||
:END:
|
||||
EMMS has two default ways of finding files: either a built-in function
|
||||
relatively slow but portable, or with ~find~ which is arguably faster
|
||||
but less portable. Honestly, I don’t care about portability, I’ll
|
||||
always use this Emacs config on Linux, but I don’t want to use ~find~
|
||||
either since there is something even faster: ~fd~.
|
||||
|
||||
First we’ll declare a variable that can hold the path to the ~fd~
|
||||
executable:
|
||||
#+name: emms-fd-name
|
||||
#+begin_src emacs-lisp
|
||||
(defvar emms-source-file-fd (executable-find "fd"))
|
||||
#+end_src
|
||||
|
||||
Then, we need to declare a new function that will use ~fd~ to find
|
||||
files. The function, as specified by the documentation of
|
||||
~emms-source-file-directory-tree-function~, receives two arguments ~dir~
|
||||
and ~regex~. We can work with that!
|
||||
#+name: emms-fd-function
|
||||
#+begin_src emacs-lisp
|
||||
(defun emms-source-file-directory-tree-fd (dir regex)
|
||||
"Return a list of all files under DIR that match REGEX.
|
||||
This function uses the external fd utility. The name for fd may
|
||||
be supplied using `emms-source-file-fd'."
|
||||
(with-temp-buffer
|
||||
(call-process emms-source-file-fd
|
||||
nil t nil
|
||||
"-L" ; follow symlinks
|
||||
regex
|
||||
"-t f"
|
||||
(expand-file-name dir))
|
||||
(delete ""
|
||||
(split-string (buffer-substring (point-min)
|
||||
(point-max))
|
||||
"\n"))))
|
||||
#+end_src
|
||||
|
||||
We can finally set this function as our search function.
|
||||
#+name: emms-search-set-variable
|
||||
#+begin_src emacs-lisp
|
||||
(setq emms-source-file-directory-tree-function #'emms-source-file-directory-tree-fd)
|
||||
#+end_src
|
||||
|
||||
**** Keybinds
|
||||
:PROPERTIES:
|
||||
:CUSTOM_ID: Packages-Configuration-Applications-EMMS-and-Media-Keybinds-ue071zv0baj0
|
||||
|
Loading…
Reference in New Issue
Block a user