view dot_config/bash/fzf_aliases @ 840:f3e87577dd3a

fix: sort keys from template dicts to determistically generate scripts From http://masterminds.github.io/sprig/dicts.html > The keys function will return a list of all of the keys in one or more dict types. > Since a dictionary is unordered, the keys will not be in a predictable order. > They can be sorted with sortAlpha. This results in a different ordering of commands in the generated scripts which break the hashing in chezmoi to determine whether the scripts needs to be re-run.
author zegervdv <zegervdv@me.com>
date Fri, 02 Feb 2024 17:44:49 +0100
parents d726921aaabe
children
line wrap: on
line source

# ** vim:ft=sh

# export FZF_DEFAULT_COMMAND='fd -I --type file --color=always'
export FZF_DEFAULT_OPTS='--ansi'

__git_log () {
    git log --format="%C(auto)%h %<(15)%C(auto, green)%cr %>(20)%C(auto, magenta)%an %C(auto)%s %D"
}

_fzf_complete_git() {
    ARGS="$@"

    if [[ $ARGS=='git show'* || \
          $ARGS=='git cherry-pick'* || \
          $ARGS=='git checkout'* || \
          $ARGS=='git commit -a --fixup'* || \
          $ARGS=='git reset'* ]]; then
        _fzf_complete "--reverse --multi" "$@" < <(__git_log)
    fi
}

_fzf_complete_git_post() {
    sed -e 's/^[^a-z0-9]*//' | awk '{print $1}'
}

complete -F _fzf_complete_git -o default -o bashdefault git

__hg_log () {
   hg ls
}

_fzf_complete_hg() {
   ARGS="$@"

   if [[ $ARGS=='hg rebase'* ]]; then
      _fzf_complete "--reverse --multi" "$@" < <(hg log --graph --rev=wip --template=oneline)
   elif [[ $ARGS=='hg ls'* ]]; then
      _fzf_complete "--reverse --multi" "$@" < <(hg ls -l 100)
   fi
}

_fzf_complete_hg_post() {
    sed -e 's/^[^0-9]*//' | awk '{print $1}'
}

complete -F _fzf_complete_hg -o default -o bashdefault hg