|
| 1 | +# Override defaults for improved ctrl-t experience |
| 2 | +__fzf_find() { |
| 3 | + command ls -1t $1; |
| 4 | + command find -L $1 -mindepth 2 \( -path '*/\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \) -prune \ |
| 5 | + -o -type f -printf '%P\n' \ |
| 6 | + -o -type d -printf '%P\n' \ |
| 7 | + -o -type l -printf '%P\n' 2> /dev/null |
| 8 | +} |
| 9 | + |
| 10 | +__fzf_select__() { |
| 11 | + local cmd opts |
| 12 | + local dir=$1 |
| 13 | + shift |
| 14 | + cmd="${FZF_CTRL_T_COMMAND:-"__fzf_find $dir"}" |
| 15 | + opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS -m" |
| 16 | + eval "$cmd" | |
| 17 | + FZF_DEFAULT_OPTS="$opts" $(__fzfcmd) "$@" | |
| 18 | + while read -r item; do |
| 19 | + if [ "$dir" == "." ]; then |
| 20 | + printf '%q ' "$item" # escape special chars |
| 21 | + else |
| 22 | + printf '%q/%q ' "$dir" "$item" |
| 23 | + fi |
| 24 | + done |
| 25 | +} |
| 26 | + |
| 27 | +fzf-file-widget() { |
| 28 | + local trailing_spaces=$(echo -n "${READLINE_LINE:0:$READLINE_POINT}" | sed "s/^.*\S//") |
| 29 | + local word=$(echo -n "${READLINE_LINE:0:$READLINE_POINT}" | sed "s/\s*$//"| awk '{print $NF}') |
| 30 | + local dir=$(echo "${word/#\~/$HOME}" | sed "s#/\+#/#g; s#/\$##") |
| 31 | + if [[ $READLINE_POINT -eq 0 || -n "$trailing_spaces" || ! -d "$dir" ]]; then |
| 32 | + local maybe_space="" |
| 33 | + [[ $READLINE_POINT -gt 0 && -z "$trailing_spaces" ]] && maybe_space=" " |
| 34 | + local selected="$(__fzf_select__ . "$@")" |
| 35 | + if [ -n "$selected" ]; then |
| 36 | + READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$maybe_space$selected${READLINE_LINE:$READLINE_POINT}" |
| 37 | + READLINE_POINT=$((READLINE_POINT + ${#maybe_space} + ${#selected})) |
| 38 | + fi |
| 39 | + else |
| 40 | + local selected="$(__fzf_select__ "$dir" "$@")" |
| 41 | + if [ -n "$selected" ]; then |
| 42 | + local pre_word=$((READLINE_POINT - ${#word})) |
| 43 | + READLINE_LINE="${READLINE_LINE:0:$pre_word}$selected${READLINE_LINE:$READLINE_POINT}" |
| 44 | + READLINE_POINT=$((pre_word + ${#selected})) |
| 45 | + fi |
| 46 | + fi |
| 47 | +} |
| 48 | +# end of non default section |
0 commit comments