Compare commits

...

1 Commits

Author SHA1 Message Date
ca2c7ae3c5 ctrl-r key 2025-09-12 22:19:18 +02:00
3 changed files with 77 additions and 1 deletions

View File

@@ -94,6 +94,7 @@ MODE_INSERT="show"
# --mbsearch # --mbsearch
# --preview # --preview
# --show-keybindings # --show-keybindings
# --remove-from-cache
case "${1:-}" in case "${1:-}" in
"--lines") "--lines")
# Print lines that are fed into fzf. # Print lines that are fed into fzf.
@@ -327,6 +328,26 @@ case "${1:-}" in
print_keybindings "$2" print_keybindings "$2"
exit 0 exit 0
;; ;;
"--remove-from-cache")
# Remove entry from cache to reload
#
# @argument $2: view
# @argument $3: MusicBrainz ID of current object
# @argument $4: MusicBrainz ID of selected object
case "$2" in
"$VIEW_ARTIST")
cache_rm_artist "$3"
cache_rm_releasegroup "$4"
;;
"$VIEW_RELEASEGROUP")
cache_rm_releasegroup "$3"
cache_rm_release "$4"
;;
"$VIEW_RELEASE") cache_rm_release "$3" ;;
"$VIEW_LIST_ALBUMS" | "$VIEW_SEARCH_ALBUM") cache_rm_releasegroup "$4" ;;
esac
exit 0
;;
esac esac
# Load configuration # Load configuration
@@ -683,6 +704,7 @@ open \"\$(dirname {4})\"" \
--bind="$KEYS_YANK_CURRENT:execute-silent:printf {2} | $CLIP" \ --bind="$KEYS_YANK_CURRENT:execute-silent:printf {2} | $CLIP" \
--bind="$KEYS_SHOW_PLAYLIST:transform:echo \"print($VIEW_PLAYLIST)+print()+print($FZF_CURRENT_VIEW)+print({2})+accept\"" \ --bind="$KEYS_SHOW_PLAYLIST:transform:echo \"print($VIEW_PLAYLIST)+print()+print($FZF_CURRENT_VIEW)+print({2})+accept\"" \
--bind="$KEYS_KEYBINDINGS:preview:$0 --show-keybindings $FZF_CURRENT_VIEW" \ --bind="$KEYS_KEYBINDINGS:preview:$0 --show-keybindings $FZF_CURRENT_VIEW" \
--bind="$KEYS_REFRESH:execute-silent($0 --remove-from-cache $FZF_CURRENT_VIEW {2} {3})+transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {2}" \
--bind="$KEYS_QUIT:print($VIEW_QUIT)+accept" \ --bind="$KEYS_QUIT:print($VIEW_QUIT)+accept" \
--bind="$KEYS_N_QUIT:transform:$IN_NORMAL_MODE && ($IN_LIST_ARTISTS_VIEW && echo \"print($VIEW_QUIT)+accept\" || $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS) || $PUT_FZF_KEY_LOGIC" \ --bind="$KEYS_N_QUIT:transform:$IN_NORMAL_MODE && ($IN_LIST_ARTISTS_VIEW && echo \"print($VIEW_QUIT)+accept\" || $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS) || $PUT_FZF_KEY_LOGIC" \
--bind="$KEYS_SCROLL_PREVIEW_DOWN:preview-down" \ --bind="$KEYS_SCROLL_PREVIEW_DOWN:preview-down" \

View File

@@ -244,3 +244,54 @@ cache_get_file_batch() {
cache_mbid_from_path_batch() { cache_mbid_from_path_batch() {
cat | awk -F "/" '{ print $(NF-1) }' cat | awk -F "/" '{ print $(NF-1) }'
} }
# Remove artist items from cache
#
# @argument $1: MusicBrainz arist ID
#
# This function is "safer" than other because it removes data. These safty
# checks are paranoid.
cache_rm_artist() {
[ "$CACHEDIR" ] || return 1
[ -d "$CACHEDIR" ] || return 1
[ -d "$CACHEDIR/$TYPE_ARTIST" ] || return 1
d="$CACHEDIR/$TYPE_ARTIST/$(__radix "$1")/"
[ "$d" ] || return 1
[ -d "$d" ] || return 1
info "removing $d"
rm -rf "$d"
}
# Remove release-group items from cache
#
# @argument $1: MusicBrainz release-group ID
#
# This function is "safer" than other because it removes data. These safty
# checks are paranoid.
cache_rm_releasegroup() {
[ "$CACHEDIR" ] || return 1
[ -d "$CACHEDIR" ] || return 1
[ -d "$CACHEDIR/$TYPE_RELEASEGROUP" ] || return 1
d="$CACHEDIR/$TYPE_RELEASEGROUP/$(__radix "$1")/"
[ "$d" ] || return 1
[ -d "$d" ] || return 1
info "removing $d"
rm -rf "$d"
}
# Remove release items from cache
#
# @argument $1: MusicBrainz release ID
#
# This function is "safer" than other because it removes data. These safty
# checks are paranoid.
cache_rm_release() {
[ "$CACHEDIR" ] || return 1
[ -d "$CACHEDIR" ] || return 1
[ -d "$CACHEDIR/$TYPE_RELEASE" ] || return 1
d="$CACHEDIR/$TYPE_RELEASE/$(__radix "$1")/"
[ "$d" ] || return 1
[ -d "$d" ] || return 1
info "removing $d"
rm -rf "$d"
}

View File

@@ -59,6 +59,7 @@
# - KEYS_SCROLL_PREVIEW_UP: Scroll preview up # - KEYS_SCROLL_PREVIEW_UP: Scroll preview up
# - KEYS_PREVIEW_OPEN: Open preview window # - KEYS_PREVIEW_OPEN: Open preview window
# - KEYS_PREVIEW_CLOSE: Close preview window # - KEYS_PREVIEW_CLOSE: Close preview window
# - KEYS_REFRESH: Refresh current entry
# #
# Playback: # Playback:
# - KEYS_PLAY: Play selected release or selected track # - KEYS_PLAY: Play selected release or selected track
@@ -150,9 +151,10 @@ if [ ! "${KEYS_LOADED:-}" ]; then
KEYS_SCROLL_PREVIEW_UP="${KEYS_SCROLL_PREVIEW_UP:-"page-up"}" KEYS_SCROLL_PREVIEW_UP="${KEYS_SCROLL_PREVIEW_UP:-"page-up"}"
KEYS_PREVIEW_OPEN="${KEYS_PREVIEW_OPEN:-"alt-up"}" KEYS_PREVIEW_OPEN="${KEYS_PREVIEW_OPEN:-"alt-up"}"
KEYS_PREVIEW_CLOSE="${KEYS_PREVIEW_CLOSE:-"alt-down"}" KEYS_PREVIEW_CLOSE="${KEYS_PREVIEW_CLOSE:-"alt-down"}"
KEYS_REFRESH="${KEYS_REFRESH:-"ctrl-r"}"
export KEYS_BROWSE KEYS_OPEN KEYS_N_YANK KEYS_YANK_CURRENT KEYS_SHOW_PLAYLIST \ export KEYS_BROWSE KEYS_OPEN KEYS_N_YANK KEYS_YANK_CURRENT KEYS_SHOW_PLAYLIST \
KEYS_KEYBINDINGS KEYS_QUIT KEYS_N_QUIT KEYS_SCROLL_PREVIEW_DOWN \ KEYS_KEYBINDINGS KEYS_QUIT KEYS_N_QUIT KEYS_SCROLL_PREVIEW_DOWN \
KEYS_SCROLL_PREVIEW_UP KEYS_PREVIEW_CLOSE KEYS_PREVIEW_OPEN KEYS_SCROLL_PREVIEW_UP KEYS_PREVIEW_CLOSE KEYS_PREVIEW_OPEN KEYS_REFRESH
# Playback: # Playback:
KEYS_PLAY="${KEYS_PLAY:-"enter"}" KEYS_PLAY="${KEYS_PLAY:-"enter"}"
@@ -370,6 +372,7 @@ print_keybindings() {
"$KEYS_OPEN" "Open selected item in file manager" \ "$KEYS_OPEN" "Open selected item in file manager" \
"$KEYS_N_YANK" "Copy selected MusicBrainz ID (normal)" \ "$KEYS_N_YANK" "Copy selected MusicBrainz ID (normal)" \
"$KEYS_YANK_CURRENT" "Copy current MusicBrainz ID" \ "$KEYS_YANK_CURRENT" "Copy current MusicBrainz ID" \
"$KEYS_REFRESH" "Refresh current entry" \
"$KEYS_QUIT" "Quit applicaion" \ "$KEYS_QUIT" "Quit applicaion" \
"$KEYS_N_QUIT" "First view or quit (normal)" "$KEYS_N_QUIT" "First view or quit (normal)"
;; ;;