diff options
author | tdro <tdro@users.noreply.github.com> | 2025-03-24 00:00:00 +0000 |
---|---|---|
committer | tdro <tdro@users.noreply.github.com> | 2025-03-24 00:00:00 +0000 |
commit | f27c9d730bdc528ae874ee3a67e69455a163b3a4 (patch) | |
tree | bf567d9ad1cc5e3ea05b65ac1093fce01c5fa662 | |
parent | 1a3008a5c8bbc8ce0eb68be6fb7ed546b1e47c1b (diff) | |
download | dotfiles-f27c9d730bdc528ae874ee3a67e69455a163b3a4.tar.gz dotfiles-f27c9d730bdc528ae874ee3a67e69455a163b3a4.tar.bz2 dotfiles-f27c9d730bdc528ae874ee3a67e69455a163b3a4.zip |
.bashrc: Remove unused completions
Add fzf license
-rw-r--r-- | .bashrc | 9 | ||||
-rw-r--r-- | .config/fzf/completion.bash | 381 | ||||
-rw-r--r-- | .config/fzf/key-bindings.bash | 22 |
3 files changed, 24 insertions, 388 deletions
@@ -27,12 +27,6 @@ stty start '' stty -ixon stty -ixoff -# fzf bindings -fzfcompletion="$HOME/.config/fzf/completion.bash" -fzfkeybindings="$HOME/.config/fzf/key-bindings.bash" -[ -f "$fzfcompletion" ] && . "$fzfcompletion" -[ -f "$fzfkeybindings" ] && . "$fzfkeybindings" - # set virtual console colors if [ "$TERM" = "linux" ]; then echo -en "\e]P0111111" # black [background] @@ -111,7 +105,8 @@ lxc-start() { for container in "$@"; do $(type -P lxc-start) --name "$container" lxc-stop() { for container in "$@"; do $(type -P lxc-stop) --kill --name "$container"; done } lxc-destroy() { for container in "$@"; do $(type -P lxc-destroy) --name "$container"; done } -# source fzf markers +# fuzzy finder +[ -f "$HOME/.config/fzf/key-bindings.bash" ] && . "$HOME/.config/fzf/key-bindings.bash" [ -f "$HOME/.config/fzf/marks.plugin.bash" ] && . "$HOME/.config/fzf/marks.plugin.bash" # extract docker container as rootfs diff --git a/.config/fzf/completion.bash b/.config/fzf/completion.bash deleted file mode 100644 index 21aa450..0000000 --- a/.config/fzf/completion.bash +++ /dev/null @@ -1,381 +0,0 @@ -# ____ ____ -# / __/___ / __/ -# / /_/_ / / /_ -# / __/ / /_/ __/ -# /_/ /___/_/ completion.bash -# -# - $FZF_TMUX (default: 0) -# - $FZF_TMUX_OPTS (default: empty) -# - $FZF_COMPLETION_TRIGGER (default: '**') -# - $FZF_COMPLETION_OPTS (default: empty) - -if [[ $- =~ i ]]; then - -# To use custom commands instead of find, override _fzf_compgen_{path,dir} -if ! declare -f _fzf_compgen_path > /dev/null; then - _fzf_compgen_path() { - echo "$1" - command find -L "$1" \ - -name .git -prune -o -name .hg -prune -o -name .svn -prune -o \( -type d -o -type f -o -type l \) \ - -a -not -path "$1" -print 2> /dev/null | sed 's@^\./@@' - } -fi - -if ! declare -f _fzf_compgen_dir > /dev/null; then - _fzf_compgen_dir() { - command find -L "$1" \ - -name .git -prune -o -name .hg -prune -o -name .svn -prune -o -type d \ - -a -not -path "$1" -print 2> /dev/null | sed 's@^\./@@' - } -fi - -########################################################### - -# To redraw line after fzf closes (printf '\e[5n') -bind '"\e[0n": redraw-current-line' 2> /dev/null - -__fzf_comprun() { - if [[ "$(type -t _fzf_comprun 2>&1)" = function ]]; then - _fzf_comprun "$@" - elif [[ -n "$TMUX_PANE" ]] && { [[ "${FZF_TMUX:-0}" != 0 ]] || [[ -n "$FZF_TMUX_OPTS" ]]; }; then - shift - fzf-tmux ${FZF_TMUX_OPTS:--d${FZF_TMUX_HEIGHT:-40%}} -- "$@" - else - shift - fzf "$@" - fi -} - -__fzf_orig_completion() { - local l comp f cmd - while read -r l; do - if [[ "$l" =~ ^(.*\ -F)\ *([^ ]*).*\ ([^ ]*)$ ]]; then - comp="${BASH_REMATCH[1]}" - f="${BASH_REMATCH[2]}" - cmd="${BASH_REMATCH[3]}" - [[ "$f" = _fzf_* ]] && continue - printf -v "_fzf_orig_completion_${cmd//[^A-Za-z0-9_]/_}" "%s" "${comp} %s ${cmd} #${f}" - if [[ "$l" = *" -o nospace "* ]] && [[ ! "$__fzf_nospace_commands" = *" $cmd "* ]]; then - __fzf_nospace_commands="$__fzf_nospace_commands $cmd " - fi - fi - done -} - -_fzf_opts_completion() { - local cur prev opts - COMPREPLY=() - cur="${COMP_WORDS[COMP_CWORD]}" - prev="${COMP_WORDS[COMP_CWORD-1]}" - opts=" - -x --extended - -e --exact - --algo - -i +i - -n --nth - --with-nth - -d --delimiter - +s --no-sort - --tac - --tiebreak - -m --multi - --no-mouse - --bind - --cycle - --no-hscroll - --jump-labels - --height - --literal - --reverse - --margin - --inline-info - --prompt - --pointer - --marker - --header - --header-lines - --ansi - --tabstop - --color - --no-bold - --history - --history-size - --preview - --preview-window - -q --query - -1 --select-1 - -0 --exit-0 - -f --filter - --print-query - --expect - --sync" - - case "${prev}" in - --tiebreak) - COMPREPLY=( $(compgen -W "length begin end index" -- "$cur") ) - return 0 - ;; - --color) - COMPREPLY=( $(compgen -W "dark light 16 bw" -- "$cur") ) - return 0 - ;; - --history) - COMPREPLY=() - return 0 - ;; - esac - - if [[ "$cur" =~ ^-|\+ ]]; then - COMPREPLY=( $(compgen -W "${opts}" -- "$cur") ) - return 0 - fi - - return 0 -} - -_fzf_handle_dynamic_completion() { - local cmd orig_var orig ret orig_cmd orig_complete - cmd="$1" - shift - orig_cmd="$1" - orig_var="_fzf_orig_completion_$cmd" - orig="${!orig_var##*#}" - if [[ -n "$orig" ]] && type "$orig" > /dev/null 2>&1; then - $orig "$@" - elif [[ -n "$_fzf_completion_loader" ]]; then - orig_complete=$(complete -p "$orig_cmd" 2> /dev/null) - _completion_loader "$@" - ret=$? - # _completion_loader may not have updated completion for the command - if [[ "$(complete -p "$orig_cmd" 2> /dev/null)" != "$orig_complete" ]]; then - __fzf_orig_completion < <(complete -p "$orig_cmd" 2> /dev/null) - if [[ "$__fzf_nospace_commands" = *" $orig_cmd "* ]]; then - eval "${orig_complete/ -F / -o nospace -F }" - else - eval "$orig_complete" - fi - fi - return $ret - fi -} - -__fzf_generic_path_completion() { - local cur base dir leftover matches trigger cmd - cmd="${COMP_WORDS[0]//[^A-Za-z0-9_=]/_}" - COMPREPLY=() - trigger=${FZF_COMPLETION_TRIGGER-'**'} - cur="${COMP_WORDS[COMP_CWORD]}" - if [[ "$cur" == *"$trigger" ]]; then - base=${cur:0:${#cur}-${#trigger}} - eval "base=$base" - - [[ $base = *"/"* ]] && dir="$base" - while true; do - if [[ -z "$dir" ]] || [[ -d "$dir" ]]; then - leftover=${base/#"$dir"} - leftover=${leftover/#\/} - [[ -z "$dir" ]] && dir='.' - [[ "$dir" != "/" ]] && dir="${dir/%\//}" - matches=$(eval "$1 $(printf %q "$dir")" | FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS $2" __fzf_comprun "$4" -q "$leftover" | while read -r item; do - printf "%q$3 " "$item" - done) - matches=${matches% } - [[ -z "$3" ]] && [[ "$__fzf_nospace_commands" = *" ${COMP_WORDS[0]} "* ]] && matches="$matches " - if [[ -n "$matches" ]]; then - COMPREPLY=( "$matches" ) - else - COMPREPLY=( "$cur" ) - fi - printf '\e[5n' - return 0 - fi - dir=$(dirname "$dir") - [[ "$dir" =~ /$ ]] || dir="$dir"/ - done - else - shift - shift - shift - _fzf_handle_dynamic_completion "$cmd" "$@" - fi -} - -_fzf_complete() { - # Split arguments around -- - local args rest str_arg i sep - args=("$@") - sep= - for i in "${!args[@]}"; do - if [[ "${args[$i]}" = -- ]]; then - sep=$i - break - fi - done - if [[ -n "$sep" ]]; then - str_arg= - rest=("${args[@]:$((sep + 1)):${#args[@]}}") - args=("${args[@]:0:$sep}") - else - str_arg=$1 - args=() - shift - rest=("$@") - fi - - local cur selected trigger cmd post - post="$(caller 0 | awk '{print $2}')_post" - type -t "$post" > /dev/null 2>&1 || post=cat - - cmd="${COMP_WORDS[0]//[^A-Za-z0-9_=]/_}" - trigger=${FZF_COMPLETION_TRIGGER-'**'} - cur="${COMP_WORDS[COMP_CWORD]}" - if [[ "$cur" == *"$trigger" ]]; then - cur=${cur:0:${#cur}-${#trigger}} - - selected=$(FZF_DEFAULT_OPTS="--height ${FZF_TMUX_HEIGHT:-40%} --reverse --bind=ctrl-z:ignore $FZF_DEFAULT_OPTS $FZF_COMPLETION_OPTS $str_arg" __fzf_comprun "${rest[0]}" "${args[@]}" -q "$cur" | $post | tr '\n' ' ') - selected=${selected% } # Strip trailing space not to repeat "-o nospace" - if [[ -n "$selected" ]]; then - COMPREPLY=("$selected") - else - COMPREPLY=("$cur") - fi - printf '\e[5n' - return 0 - else - _fzf_handle_dynamic_completion "$cmd" "${rest[@]}" - fi -} - -_fzf_path_completion() { - __fzf_generic_path_completion _fzf_compgen_path "-m" "" "$@" -} - -# Deprecated. No file only completion. -_fzf_file_completion() { - _fzf_path_completion "$@" -} - -_fzf_dir_completion() { - __fzf_generic_path_completion _fzf_compgen_dir "" "/" "$@" -} - -_fzf_complete_kill() { - local trigger=${FZF_COMPLETION_TRIGGER-'**'} - local cur="${COMP_WORDS[COMP_CWORD]}" - if [[ -z "$cur" ]]; then - COMP_WORDS[$COMP_CWORD]=$trigger - elif [[ "$cur" != *"$trigger" ]]; then - return 1 - fi - - _fzf_proc_completion "$@" -} - -_fzf_proc_completion() { - _fzf_complete -m --preview 'echo {}' --preview-window down:3:wrap --min-height 15 -- "$@" < <( - command ps -ef | sed 1d - ) -} - -_fzf_proc_completion_post() { - awk '{print $2}' -} - -_fzf_host_completion() { - _fzf_complete +m -- "$@" < <( - command cat <(command tail -n +1 ~/.ssh/config ~/.ssh/config.d/* /etc/ssh/ssh_config 2> /dev/null | command grep -i '^\s*host\(name\)\? ' | awk '{for (i = 2; i <= NF; i++) print $1 " " $i}' | command grep -v '[*?]') \ - <(command grep -oE '^[[a-z0-9.,:-]+' ~/.ssh/known_hosts | tr ',' '\n' | tr -d '[' | awk '{ print $1 " " $1 }') \ - <(command grep -v '^\s*\(#\|$\)' /etc/hosts | command grep -Fv '0.0.0.0') | - awk '{if (length($2) > 0) {print $2}}' | sort -u - ) -} - -_fzf_var_completion() { - _fzf_complete -m -- "$@" < <( - declare -xp | sed 's/=.*//' | sed 's/.* //' - ) -} - -_fzf_alias_completion() { - _fzf_complete -m -- "$@" < <( - alias | sed 's/=.*//' | sed 's/.* //' - ) -} - -# fzf options -complete -o default -F _fzf_opts_completion fzf - -d_cmds="${FZF_COMPLETION_DIR_COMMANDS:-cd pushd rmdir}" -a_cmds=" - awk cat diff diff3 - emacs emacsclient ex file ftp g++ gcc gvim head hg java - javac ld less more mvim nvim patch perl python ruby - sed sftp sort source tail tee uniq vi view vim wc xdg-open - basename bunzip2 bzip2 chmod chown curl cp dirname du - find git grep gunzip gzip hg jar - ln ls mv open rm rsync scp - svn tar unzip zip" - -# Preserve existing completion -__fzf_orig_completion < <(complete -p $d_cmds $a_cmds 2> /dev/null) - -if type _completion_loader > /dev/null 2>&1; then - _fzf_completion_loader=1 -fi - -__fzf_defc() { - local cmd func opts orig_var orig def - cmd="$1" - func="$2" - opts="$3" - orig_var="_fzf_orig_completion_${cmd//[^A-Za-z0-9_]/_}" - orig="${!orig_var}" - if [[ -n "$orig" ]]; then - printf -v def "$orig" "$func" - eval "$def" - else - complete -F "$func" $opts "$cmd" - fi -} - -# Anything -for cmd in $a_cmds; do - __fzf_defc "$cmd" _fzf_path_completion "-o default -o bashdefault" -done - -# Directory -for cmd in $d_cmds; do - __fzf_defc "$cmd" _fzf_dir_completion "-o nospace -o dirnames" -done - -# Kill completion (supports empty completion trigger) -complete -F _fzf_complete_kill -o default -o bashdefault kill - -unset cmd d_cmds a_cmds - -_fzf_setup_completion() { - local kind fn cmd - kind=$1 - fn=_fzf_${1}_completion - if [[ $# -lt 2 ]] || ! type -t "$fn" > /dev/null; then - echo "usage: ${FUNCNAME[0]} path|dir|var|alias|host|proc COMMANDS..." - return 1 - fi - shift - __fzf_orig_completion < <(complete -p "$@" 2> /dev/null) - for cmd in "$@"; do - case "$kind" in - dir) __fzf_defc "$cmd" "$fn" "-o nospace -o dirnames" ;; - var) __fzf_defc "$cmd" "$fn" "-o default -o nospace -v" ;; - alias) __fzf_defc "$cmd" "$fn" "-a" ;; - *) __fzf_defc "$cmd" "$fn" "-o default -o bashdefault" ;; - esac - done -} - -# Environment variables / Aliases / Hosts -_fzf_setup_completion 'var' export unset -_fzf_setup_completion 'alias' unalias -_fzf_setup_completion 'host' ssh telnet - -fi diff --git a/.config/fzf/key-bindings.bash b/.config/fzf/key-bindings.bash index d2da0be..cc3f84b 100644 --- a/.config/fzf/key-bindings.bash +++ b/.config/fzf/key-bindings.bash @@ -1,3 +1,25 @@ +# The MIT License (MIT) +# +# Copyright (c) 2013-2024 Junegunn Choi +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +# THE SOFTWARE. + # ____ ____ # / __/___ / __/ # / /_/_ / / /_ |