diff --git a/src/sh/fzf.sh b/src/sh/fzf.sh index 5a3135e..0346d1b 100644 --- a/src/sh/fzf.sh +++ b/src/sh/fzf.sh @@ -1,6 +1,9 @@ +# Set prompt of input field +# @argument $1: view +# @argument $2: mode __set_prompt() { - view=$(state_get_view) - mode=$(state_get_mode) + view=$1 + mode=$2 case "$view" in "$VIEW_ARTIST") name="$(mb_artist "$args" | $JQ -r '.name')" @@ -79,7 +82,7 @@ fzf_handle_load() { [ "${DISABLE_SEARCH:-}" ] && printf "+disable-search+change-query(%s)" "${QUERY:-"$FZF_QUERY"}" || printf "+enable-search+change-query(%s)" "${QUERY:-}" [ "${SHOW_PREVIEW:-}" ] && printf "+show-preview" || printf "+hide-preview" [ "${ENABLE_CHANGE:-}" ] && printf "+rebind(change)" || printf "+unbind(change)" - __set_prompt + __set_prompt "$view" "$mode" } # Print info string for FZF @@ -243,18 +246,25 @@ fzf_handle_key() { case "$view" in "$VIEW_PLAYLIST") ;; *) - if [ "$mode" = "$MODE_INSERT" ]; then - state_update_keep_args "$view" "$MODE_NORMAL" - __set_prompt - else - printf "put(%s)" "$FZF_KEY" - fi + state_update_keep_args "$view" "$MODE_NORMAL" + __set_prompt "$view" "$mode" ;; esac ;; esac fi + # Keys exclusive to playlist view + if [ "$view" = "$VIEW_PLAYLIST" ]; then + case ",$KEYS_PLAYLIST_RELOAD," in + *",$FZF_KEY,"*) + foo "hit playlist reload key" + foo "going to call $(printf "reload:%s" "$0 --fzf-reload")" + printf "reload:%s" "$0 --fzf-reload" + ;; + esac + fi + # Handle key press case ",$KEYS_HALFPAGE_DOWN," in *",$FZF_KEY,"*) printf "half-page-down" ;; @@ -536,7 +546,7 @@ fzf_handle_key() { "$VIEW_PLAYLIST") ;; *) state_update_keep_args "$view" "$MODE_INSERT" - __set_prompt + __set_prompt "$view" "$mode" ;; esac ;; @@ -568,6 +578,7 @@ fzf_handle_key() { # Post processing [ "${QUERY:-}" ] && printf "+change-query(%s)" "$QUERY" if [ "${VIEW_NEXT:-}" ]; then + [ "$VIEW_NEXT" = "$VIEW_PLAYLIST" ] && MODE_NEXT="$MODE_NORMAL" state_update "$VIEW_NEXT" "${MODE_NEXT:-"$mode"}" "${VIEW_NEXT_ARGS:-}" [ "${ACCEPT:-}" ] && printf "+accept" || printf "+reload:%s" "$0 --fzf-reload" fi diff --git a/src/sh/keys.sh b/src/sh/keys.sh index 54f6dad..5bf9f99 100644 --- a/src/sh/keys.sh +++ b/src/sh/keys.sh @@ -36,6 +36,9 @@ KEYS_N_PLAY_PREV="${KEYS_N_PLAY_PREV:-"left"}" KEYS_N_SEEK_FORWARD="${KEYS_N_SEEK_FORWARD:-"shift-right"}" KEYS_N_SEEK_BACKWARD="${KEYS_N_SEEK_BACKWARD:-"shift-left"}" +# Special playlist keys +KEYS_PLAYLIST_RELOAD="${KEYS_PLAYLIST_RELOAD:-"r"}" + # Keys in insert mode only KEYS_I_NORMAL="${KEYS_I_NORMAL:-"esc"}" @@ -46,7 +49,9 @@ KEYS_GROUP_N="$KEYS_N_DOWN,$KEYS_N_UP,$KEYS_N_OUT,$KEYS_N_IN,$KEYS_N_TOP,$KEYS_N KEYS_GROUP_I="$KEYS_I_NORMAL" -KEYS_ALL="$KEYS_GROUP_NI,$KEYS_GROUP_N,$KEYS_GROUP_I,$KEYS_INPUT_SINGLE,$KEYS_INPUT_SPECIAL" +KEYS_PLAYLIST="$KEYS_PLAYLIST_RELOAD" + +KEYS_ALL="$KEYS_GROUP_NI,$KEYS_GROUP_N,$KEYS_GROUP_I,$KEYS_INPUT_SINGLE,$KEYS_INPUT_SPECIAL,$KEYS_PLAYLIST" export KEYS_HALFPAGE_DOWN KEYS_HALFPAGE_UP KEYS_BROWSE KEYS_OUT KEYS_IN \ KEYS_SELECT_ARTIST KEYS_FILTER_LOCAL KEYS_FILTER_1 KEYS_FILTER_2 KEYS_FILETER_3 KEYS_FILTER_4 \ @@ -55,4 +60,4 @@ export KEYS_HALFPAGE_DOWN KEYS_HALFPAGE_UP KEYS_BROWSE KEYS_OUT KEYS_IN \ KEYS_N_TOGGLE_PLAY_PAUSE KEYS_N_PLAY_NEXT KEYS_N_PLAY_PREV KEYS_N_SEEK_FORWARD \ KEYS_N_SEEK_BACKWARD KEYS_SHOW_PLAYLIST \ KEYS_I_NORMAL \ - KEYS_GROUP_NI KEYS_GROUP_N KEYS_GROUP_I KEYS_ALL + KEYS_GROUP_NI KEYS_GROUP_N KEYS_GROUP_I KEYS PLAYLIST KEYS_ALL