From e6bb4bb425bfb6cbc985659943db4b8dee1fc21a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=84min=20Baumeler?= Date: Tue, 7 Oct 2025 22:45:49 +0200 Subject: [PATCH] bugfix: leave empty list --- src/main.sh | 79 +++++++++++++++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 36 deletions(-) diff --git a/src/main.sh b/src/main.sh index 790dd80..8f61444 100755 --- a/src/main.sh +++ b/src/main.sh @@ -213,7 +213,7 @@ case "${1:-}" in cnt=$(echo "$j" | $JQ 'length') [ "$cnt" -eq 1 ] && aid="$(echo "$j" | $JQ '.[0].artist.id')" fi - [ "${aid:-}" ] && $0 --action-draw "$mode" "$VIEW_ARTIST" "$aid" || printf "print(%s)+print(%s)+print(%s)+print(%s)+accept" "$VIEW_SELECT_ARTIST" "$j" "$view" "$mbid_cur" + [ "${aid:-}" ] && $0 --action-draw "$mode" "$VIEW_ARTIST" "0" "$aid" || printf "print(%s)+print(%s)+print(%s)+print(%s)+accept" "$VIEW_SELECT_ARTIST" "$j" "$view" "$mbid_cur" exit 0 ;; "--action-draw") @@ -221,8 +221,8 @@ case "${1:-}" in # # @argument $2: mode (default `normal`) # @argument $3: view (default list artists) - # @argument $4: MusicBrainz ID (optional) - # @argument $5: level (optional) + # @argument $4: level + # @argument $5: MusicBrainz ID (optional) # # The argument `level` specifies the view relative to `view`: If `level` is # set to +1, then the specified MusicBrainz ID is an ID of an object one level @@ -256,25 +256,31 @@ case "${1:-}" in # - VIEW_RELEASE: Divert view to VIEW_LIST_RELEASEGROUP. mode="${2:-"$MODE_NORMAL"}" view="${3:-"$VIEW_LIST_ARTISTS"}" - mbid="${4:-}" - level="${5:-}" + level="${4:-}" + mbid="${5:-}" + info "mode=$mode; view=$view; mbid=$mbid; level=$level" # Change state, if we are being diverted. case "$level" in "-1") - case "$view" in - "$VIEW_ARTIST") + 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 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 + fi ;; "+1") case "$view" in @@ -285,6 +291,7 @@ case "${1:-}" in ;; *) ;; esac + info "setting view to $view" # Set initial query q="$(default_query "$view")" [ "$q" ] && q="$q " @@ -659,7 +666,7 @@ while true; do --info="inline-right" \ --header-first \ --header-border="bottom" \ - --bind="start:transform:$0 --action-draw $MODE $VIEW $MBID" \ + --bind="start:transform:$0 --action-draw $MODE $VIEW "0" $MBID" \ --bind="$KEYS_I_NORMAL:transform:$IN_NORMAL_MODE || echo hide-input" \ --bind="$KEYS_N_INSERT:transform:$IN_NORMAL_MODE && echo show-input || $PUT_FZF_KEY_LOGIC" \ --bind="$KEYS_DOWN:down" \ @@ -670,26 +677,26 @@ while true; do --bind="$KEYS_N_UP:transform:$IN_NORMAL_MODE && echo up || $PUT_FZF_KEY_LOGIC" \ --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 {4} \"+1\"" \ - --bind="$KEYS_OUT:transform:[ {3} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {3} \"-1\"" \ - --bind="$KEYS_N_IN:transform:$IN_NORMAL_MODE && ([ {4} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {4} \"+1\") || $PUT_FZF_KEY_LOGIC" \ - --bind="$KEYS_N_OUT:transform:$IN_NORMAL_MODE && ([ {3} ] && $0 --action-draw $FZF_CURRENT_MODE $FZF_CURRENT_VIEW {3} \"-1\") || $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_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_LIST_ARTISTS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ARTISTS" \ - --bind="$KEYS_LIST_ALBUMS:transform:$0 --action-draw \$FZF_INPUT_STATE $VIEW_LIST_ALBUMS" \ - --bind="$KEYS_SEARCH_ARTIST:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST" \ - --bind="$KEYS_SEARCH_ALBUM:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM" \ + --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\"" \ + --bind="$KEYS_SEARCH_ALBUM:transform:$0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM \"0\"" \ --bind="$KEYS_SWITCH_ARTIST_ALBUM:transform:case $FZF_CURRENT_VIEW in -$VIEW_LIST_ARTISTS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ALBUMS ;; -$VIEW_LIST_ALBUMS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ARTISTS ;; -$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM ;; -$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST ;; +$VIEW_LIST_ARTISTS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ALBUMS \"0\" ;; +$VIEW_LIST_ALBUMS) $0 --action-draw $FZF_CURRENT_MODE $VIEW_LIST_ARTISTS \"0\";; +$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM \"0\" ;; +$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST \"0\" ;; esac" \ --bind="$KEYS_SWITCH_LOCAL_REMOTE:transform:case $FZF_CURRENT_VIEW in -$VIEW_LIST_ARTISTS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST ;; -$VIEW_LIST_ALBUMS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM ;; -$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS ;; -$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ALBUMS ;; +$VIEW_LIST_ARTISTS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ARTIST \"0\" ;; +$VIEW_LIST_ALBUMS) $0 --action-draw $MODE_INSERT $VIEW_SEARCH_ALBUM \"0\" ;; +$VIEW_SEARCH_ARTIST) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ARTISTS \"0\" ;; +$VIEW_SEARCH_ALBUM) $0 --action-draw $MODE_NORMAL $VIEW_LIST_ALBUMS \"0\" ;; esac" \ --bind="$KEYS_FILTER:transform:$0 --action-filter $FZF_CURRENT_MODE $FZF_CURRENT_VIEW" \ --bind="$KEYS_BROWSE:execute-silent: @@ -708,9 +715,9 @@ open \"\$(dirname {5})\"" \ --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_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 {3}" \ + --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_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 \"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" \