From ea0e674d6ab25bf007e925d61ef39f3a0e108938 Mon Sep 17 00:00:00 2001 From: sandroid Date: Mon, 8 Apr 2024 20:46:02 +0200 Subject: [PATCH] Revert "Fix: Pager variables are not evaluated" This reverts commit 70fac98eea67b22ac532b5aad2b2b30e18444ec6. --- bin/git-forgit | 100 ++++++++++++------------------------------------- 1 file changed, 23 insertions(+), 77 deletions(-) diff --git a/bin/git-forgit b/bin/git-forgit index d752b219..01019039 100755 --- a/bin/git-forgit +++ b/bin/git-forgit @@ -127,53 +127,12 @@ _forgit_quote_files() { echo "${files[*]}" } -_forgit_page() { - local pager - pager=${FORGIT_PAGER:-$(git config core.pager)} - if [[ -n $pager ]]; then - eval "$pager" - else - cat - fi -} - -_forgit_diff_page() { - local pager - pager=${FORGIT_DIFF_PAGER:-$(git config pager.diff)} - if [[ -n $pager ]]; then - eval "$pager" - else - _forgit_page - fi -} - -_forgit_show_page() { - local pager - pager=${FORGIT_SHOW_PAGER:-$(git config pager.show)} - if [[ -n $pager ]]; then - eval "$pager" - else - _forgit_page - fi -} - -_forgit_blame_page() { - local pager - pager=${FORGIT_BLAME_PAGER:-$(git config pager.blame)} - if [[ -n $pager ]]; then - eval "$pager" - else - _forgit_page - fi -} - -_forgit_enter_page() { - if [[ -n $FORGIT_ENTER_PAGER ]]; then - eval "$FORGIT_ENTER_PAGER" - else - LESS='-r' less - fi -} +_forgit_pager=${FORGIT_PAGER:-$(git config core.pager || echo 'cat')} +_forgit_show_pager=${FORGIT_SHOW_PAGER:-$(git config pager.show || echo "$_forgit_pager")} +_forgit_diff_pager=${FORGIT_DIFF_PAGER:-$(git config pager.diff || echo "$_forgit_pager")} +_forgit_ignore_pager=${FORGIT_IGNORE_PAGER:-$(hash bat &>/dev/null && echo 'bat -l gitignore --color=always' || echo 'cat')} +_forgit_blame_pager=${FORGIT_BLAME_PAGER:-$(git config pager.blame || echo "$_forgit_pager")} +_forgit_enter_pager=${FORGIT_ENTER_PAGER:-"LESS='-r' less"} _forgit_log_graph_enable=${FORGIT_LOG_GRAPH_ENABLE:-"true"} _forgit_log_format=${FORGIT_LOG_FORMAT:-%C(auto)%h%d %s %C(black)%C(bold)%cr%Creset} @@ -189,7 +148,7 @@ _forgit_log_preview() { local sha sha=$(echo "$1" | _forgit_extract_sha) shift - echo "$sha" | xargs -I% git show --color=always -U"$_forgit_preview_context" % -- "$@" | _forgit_show_page + echo "$sha" | xargs -I% git show --color=always -U"$_forgit_preview_context" % -- "$@" | $_forgit_show_pager } _forgit_log_enter() { @@ -264,7 +223,7 @@ _forgit_diff_view() { IFS=" " read -r -a commits <<< "${*:3}" fi echo "$input_line" | _forgit_get_files_from_diff_line | xargs -0 \ - "$FORGIT" exec_diff "${commits[@]}" -U"$diff_context" -- | _forgit_diff_page + "$FORGIT" exec_diff "${commits[@]}" -U"$diff_context" -- | $_forgit_diff_pager } _forgit_edit_diffed_file() { @@ -305,7 +264,7 @@ _forgit_diff() { done opts=" $FORGIT_FZF_DEFAULT_OPTS - +m -0 --bind=\"enter:execute($FORGIT diff_enter {} $escaped_commits | $FORGIT enter_page)\" + +m -0 --bind=\"enter:execute($FORGIT diff_enter {} $escaped_commits | $_forgit_enter_pager)\" --preview=\"$FORGIT diff_view {} '$_forgit_preview_context' $escaped_commits\" --bind=\"alt-e:execute-silent($FORGIT edit_diffed_file {})+refresh-preview\" $FORGIT_DIFF_FZF_OPTS @@ -326,9 +285,9 @@ _forgit_diff() { _forgit_add_preview() { file=$(echo "$1" | _forgit_get_single_file_from_add_line) if (git status -s -- "$file" | grep '^??') &>/dev/null; then # diff with /dev/null for untracked files - git diff --color=always --no-index -- /dev/null "$file" | _forgit_diff_page | sed '2 s/added:/untracked:/' + git diff --color=always --no-index -- /dev/null "$file" | $_forgit_diff_pager | sed '2 s/added:/untracked:/' else - git diff --color=always -- "$file" | _forgit_diff_page + git diff --color=always -- "$file" | $_forgit_diff_pager fi } @@ -380,7 +339,7 @@ _forgit_add() { _forgit_reset_head_preview() { file=$1 - git diff --staged --color=always -- "$file" | _forgit_diff_page + git diff --staged --color=always -- "$file" | $_forgit_diff_pager } _forgit_git_reset_head() { @@ -418,7 +377,7 @@ _forgit_reset_head() { _forgit_stash_show_preview() { local stash stash=$(echo "$1" | cut -d: -f1) - _forgit_git_stash_show "$stash" | _forgit_diff_page + _forgit_git_stash_show "$stash" | $_forgit_diff_pager } _forgit_git_stash_show() { @@ -434,7 +393,7 @@ _forgit_stash_show() { _forgit_parse_array _forgit_stash_show_git_opts "$FORGIT_STASH_SHOW_GIT_OPTS" opts=" $FORGIT_FZF_DEFAULT_OPTS - +s +m -0 --tiebreak=index --bind=\"enter:execute($FORGIT stash_show_preview {} | $FORGIT enter_page)\" + +s +m -0 --tiebreak=index --bind=\"enter:execute($FORGIT stash_show_preview {} | $_forgit_enter_pager)\" --bind=\"ctrl-y:execute-silent($FORGIT yank_stash_name {})\" --preview=\"$FORGIT stash_show_preview {}\" $FORGIT_STASH_FZF_OPTS @@ -448,9 +407,9 @@ _forgit_stash_show() { _forgit_stash_push_preview() { if _forgit_is_file_tracked "$1"; then - git diff --color=always -- "$1" | _forgit_diff_page + git diff --color=always -- "$1" | $_forgit_diff_pager else - git diff --color=always /dev/null "$1" | _forgit_diff_page + git diff --color=always /dev/null "$1" | $_forgit_diff_pager fi } @@ -509,7 +468,7 @@ _forgit_clean() { } _forgit_cherry_pick_preview() { - echo "$1" | cut -f2- | _forgit_extract_sha | xargs -I% git show --color=always % | _forgit_show_page + echo "$1" | cut -f2- | _forgit_extract_sha | xargs -I% git show --color=always % | $_forgit_show_pager } _forgit_cherry_pick() { @@ -626,7 +585,7 @@ _forgit_file_preview() { local sha sha=$(echo "$1" | _forgit_extract_sha) shift - echo "$sha" | xargs -I% git show --color=always % -- "$@" | _forgit_show_page + echo "$sha" | xargs -I% git show --color=always % -- "$@" | $_forgit_show_pager } _forgit_fixup() { @@ -659,7 +618,7 @@ _forgit_fixup() { } _forgit_checkout_file_preview() { - git diff --color=always -- "$1" | _forgit_diff_page + git diff --color=always -- "$1" | $_forgit_diff_pager } _forgit_git_checkout_file() { @@ -753,7 +712,7 @@ _forgit_checkout_tag() { } _forgit_checkout_commit_preview() { - echo "$1" | _forgit_extract_sha | xargs -I% git show --color=always % | _forgit_show_page + echo "$1" | _forgit_extract_sha | xargs -I% git show --color=always % | $_forgit_show_pager } _forgit_git_checkout_commit() { @@ -820,7 +779,7 @@ _forgit_revert_preview() { cut -f2- | _forgit_extract_sha | xargs -I% git show --color=always % | - _forgit_show_page + $_forgit_show_pager } _forgit_git_revert() { @@ -869,7 +828,7 @@ _forgit_blame_preview() { if _forgit_is_file_tracked "$1"; then _forgit_blame_git_opts=() _forgit_parse_array _forgit_blame_git_opts "$FORGIT_BLAME_GIT_OPTS" - git blame "$@" "${_forgit_blame_git_opts[@]}" --date=short | _forgit_blame_page + git blame "$@" "${_forgit_blame_git_opts[@]}" --date=short | $_forgit_blame_pager else echo "File not tracked" fi @@ -908,19 +867,7 @@ export FORGIT_GI_REPO_LOCAL="${FORGIT_GI_REPO_LOCAL:-${XDG_CACHE_HOME:-$HOME/.ca export FORGIT_GI_TEMPLATES=${FORGIT_GI_TEMPLATES:-$FORGIT_GI_REPO_LOCAL/templates} _forgit_ignore_preview() { - files=() - files=( "$FORGIT_GI_TEMPLATES/$1"{,.gitignore} ) - if [[ -n $FORGIT_IGNORE_PAGER ]]; then - quoted_files=() - for file in "${files[@]}"; do - quoted_files+=("'$file'") - done - eval "$FORGIT_IGNORE_PAGER ${quoted_files[*]}" 2> /dev/null - elif hash bat &> /dev/null; then - bat -l gitignore --color=always "${files[@]}" 2>/dev/null - else - cat "${files[@]}" 2> /dev/null - fi + $_forgit_ignore_pager "$FORGIT_GI_TEMPLATES/$1"{,.gitignore} 2>/dev/null } _forgit_ignore() { @@ -1014,7 +961,6 @@ private_commands=( "diff_view" "edit_diffed_file" "edit_add_file" - "enter_page" ) cmd="$1"