From e8ed114bc22127da9f56dbd0c08497b15b257181 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Tue, 7 Oct 2025 23:01:01 +0200 Subject: [PATCH] bugfix: go back one level (store state of current mbid) --- src/main.sh | 49 ++++++++++++++++++++++--------------------------- 1 file changed, 22 insertions(+), 27 deletions(-) diff --git a/src/main.sh b/src/main.sh index 8f61444..7a94165 100755 --- a/src/main.sh +++ b/src/main.sh @@ -258,29 +258,23 @@ case "${1:-}" in view="${3:-"$VIEW_LIST_ARTISTS"}" level="${4:-}" mbid="${5:-}" - info "mode=$mode; view=$view; mbid=$mbid; level=$level" # Change state, if we are being diverted. case "$level" in "-1") - if [ "$mbid" ]; then - case "$view" in - "$VIEW_ARTIST") - view="$VIEW_LIST_ARTISTS" - mbid="" - ;; - "$VIEW_RELEASEGROUP") - view="$VIEW_ARTIST" - mbid="$(mb_releasegroup "$mbid" | $JQ '."artist-credit"[0].artist.id')" - ;; - "$VIEW_RELEASE") - view="$VIEW_RELEASEGROUP" - mbid="$(mb_release "$mbid" | $JQ '."release-group".id')" - ;; - esac - else + case "$view" in + "$VIEW_ARTIST") view="$VIEW_LIST_ARTISTS" mbid="" - fi + ;; + "$VIEW_RELEASEGROUP") + view="$VIEW_ARTIST" + mbid="$(mb_releasegroup "$mbid" | $JQ '."artist-credit"[0].artist.id')" + ;; + "$VIEW_RELEASE") + view="$VIEW_RELEASEGROUP" + mbid="$(mb_release "$mbid" | $JQ '."release-group".id')" + ;; + esac ;; "+1") case "$view" in @@ -291,13 +285,13 @@ case "${1:-}" in ;; *) ;; esac - info "setting view to $view" # Set initial query q="$(default_query "$view")" [ "$q" ] && q="$q " printf "show-input+change-query(%s)" "$q" # Store current state printf "+change-list-label(%s)" "$view" + printf "+change-border-label(%s)" "$mbid" # Set header fzf_command_set_header "$view" "$mbid" # Set preview window @@ -545,6 +539,7 @@ IN_VIEW_PATTERN="[ \$FZF_LIST_LABEL = %s ]" IN_LIST_ARTISTS_VIEW="$(printf "$IN_VIEW_PATTERN" "$VIEW_LIST_ARTISTS")" FZF_CURRENT_MODE="\$FZF_INPUT_STATE" FZF_CURRENT_VIEW="\$FZF_LIST_LABEL" +FZF_CURRENT_MBID="\$FZF_BORDER_LABEL" FZF_RELOAD_PLAYLIST="reload-sync($0 --lines $VIEW_PLAYLIST)" FZF_POS_PLAYLIST="transform:$0 --action-playlistcursor" PUT_FZF_KEY_LOGIC="case \$FZF_KEY in space) echo \"put( )\";; left) echo backward-char;; right) echo forward-char;; backspace|bspace|bs) echo backward-delete-char;; delete|del) echo delete-char;; *) echo \"put(\$FZF_KEY)\";; esac" @@ -678,10 +673,10 @@ while true; do --bind="$KEYS_N_BOT:transform:$IN_NORMAL_MODE && echo last || $PUT_FZF_KEY_LOGIC" \ --bind="$KEYS_N_TOP:transform:$IN_NORMAL_MODE && echo first || $PUT_FZF_KEY_LOGIC" \ --bind="$KEYS_IN:transform:[ {4} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"+1\" {4}" \ - --bind="$KEYS_OUT:transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"-1\" {3}" \ + --bind="$KEYS_OUT:transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"-1\" $FZF_CURRENT_MBID" \ --bind="$KEYS_N_IN:transform:$IN_NORMAL_MODE && ([ {4} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"+1\" {4}) || $PUT_FZF_KEY_LOGIC" \ - --bind="$KEYS_N_OUT:transform:$IN_NORMAL_MODE && ( $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"-1\" {3}) || $PUT_FZF_KEY_LOGIC" \ - --bind="$KEYS_SELECT_ARTIST:transform:$0 --action-gotoartist $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {3} {4}" \ + --bind="$KEYS_N_OUT:transform:$IN_NORMAL_MODE && ($0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"-1\" $FZF_CURRENT_MBID) || $PUT_FZF_KEY_LOGIC" \ + --bind="$KEYS_SELECT_ARTIST:transform:$0 --action-gotoartist $FZF_CURRENT_MODE $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4}" \ --bind="$KEYS_LIST_ARTISTS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ARTISTS \"0\"" \ --bind="$KEYS_LIST_ALBUMS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ALBUMS \"0\"" \ --bind="$KEYS_SEARCH_ARTIST:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST \"0\"" \ @@ -712,18 +707,18 @@ open \"https://musicbrainz.org/\$t/{r4}\"" \ [ {5} ] || exit 0 open \"\$(dirname {5})\"" \ --bind="$KEYS_N_YANK:transform:$IN_NORMAL_MODE && echo \"execute-silent(printf {4} | $CLIP)\" || $PUT_FZF_KEY_LOGIC" \ - --bind="$KEYS_YANK_CURRENT:execute-silent:printf {3} | $CLIP" \ - --bind="$KEYS_SHOW_PLAYLIST:transform:echo \"print($VIEW_PLAYLIST)+print()+print($FZF_CURRENT_VIEW)+print({3})+accept\"" \ + --bind="$KEYS_YANK_CURRENT:execute-silent:printf $FZF_CURRENT_MBID | $CLIP" \ + --bind="$KEYS_SHOW_PLAYLIST:transform:echo \"print($VIEW_PLAYLIST)+print()+print($FZF_CURRENT_VIEW)+print($FZF_CURRENT_MBID)+accept\"" \ --bind="$KEYS_KEYBINDINGS:preview:$0 --show-keybindings $FZF_CURRENT_VIEW" \ - --bind="$KEYS_REFRESH:execute-silent($0 --remove-from-cache $FZF_CURRENT_VIEW {3} {4})+transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"0\" {3}" \ + --bind="$KEYS_REFRESH:execute-silent($0 --remove-from-cache $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4})+transform:$0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW \"0\" $FZF_CURRENT_MBID" \ --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 \"0\") || $PUT_FZF_KEY_LOGIC" \ --bind="$KEYS_SCROLL_PREVIEW_DOWN:preview-down" \ --bind="$KEYS_SCROLL_PREVIEW_UP:preview-up" \ --bind="$KEYS_PREVIEW_OPEN:show-preview" \ --bind="$KEYS_PREVIEW_CLOSE:hide-preview" \ - --bind="$KEYS_PLAYBACK:transform:$0 --playback $FZF_CURRENT_VIEW {3} {4} {5}" \ - --bind="$KEYS_N_PLAYBACK:transform:$IN_NORMAL_MODE && $0 --playback $FZF_CURRENT_VIEW {3} {4} {5} || $PUT_FZF_KEY_LOGIC" \ + --bind="$KEYS_PLAYBACK:transform:$0 --playback $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4} {5}" \ + --bind="$KEYS_N_PLAYBACK:transform:$IN_NORMAL_MODE && $0 --playback $FZF_CURRENT_VIEW $FZF_CURRENT_MBID {4} {5} || $PUT_FZF_KEY_LOGIC" \ --bind="change:execute-silent($0 --mbsearch $FZF_CURRENT_VIEW &)+reload:$0 --lines $FZF_CURRENT_VIEW" \ --preview-window="right,25%,border-left,wrap,<30(hidden)" \ --preview="$0 --preview $FZF_CURRENT_VIEW {4}" \