Skip to content

Commit

Permalink
Custom functions for improved Ctrl-t experience
Browse files Browse the repository at this point in the history
  • Loading branch information
eli-percepto authored Jul 10, 2024
1 parent 9e92b6f commit 0aa8b43
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions shell/bash-override
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Override defaults for improved ctrl-t experience
__fzf_find() {
command ls -1t $1;
command find -L $1 -mindepth 2 \( -path '*/\.*' -o -fstype 'sysfs' -o -fstype 'devfs' -o -fstype 'devtmpfs' -o -fstype 'proc' \) -prune \
-o -type f -print \
-o -type d -print \
-o -type l -print 2> /dev/null | cut -b3-
}

__fzf_select__() {
local cmd opts
local dir=$1
shift
cmd="${FZF_CTRL_T_COMMAND:-"__fzf_find $dir"}"
opts="--height ${FZF_TMUX_HEIGHT:-40%} --bind=ctrl-z:ignore --reverse $FZF_DEFAULT_OPTS $FZF_CTRL_T_OPTS -m"
eval "$cmd" |
FZF_DEFAULT_OPTS="$opts" $(__fzfcmd) "$@" |
while read -r item; do
if [ "$dir" == "." ]; then
printf '%q ' "$item" # escape special chars
else
printf '%q/%q ' "$dir" "$item"
fi
done
}

fzf-file-widget() {
local trailing_spaces=$(echo -n "${READLINE_LINE:0:$READLINE_POINT}" | sed "s/^.*\S//")
local word=$(echo -n "${READLINE_LINE:0:$READLINE_POINT}" | sed "s/\s*$//"| awk '{print $NF}')
local dir=$(echo "${word/#\~/$HOME}" | sed "s#/\+#/#g; s#/\$##")
if [[ $READLINE_POINT -eq 0 || -n "$trailing_spaces" || ! -d "$dir" ]]; then
local maybe_space=""
[[ $READLINE_POINT -gt 0 && -z "$trailing_spaces" ]] && maybe_space=" "
local selected="$(__fzf_select__ . "$@")"
if [ -n "$selected" ]; then
READLINE_LINE="${READLINE_LINE:0:$READLINE_POINT}$maybe_space$selected${READLINE_LINE:$READLINE_POINT}"
READLINE_POINT=$((READLINE_POINT + ${#maybe_space} + ${#selected}))
fi
else
local selected="$(__fzf_select__ "$dir" "$@")"
if [ -n "$selected" ]; then
local pre_word=$((READLINE_POINT - ${#word}))
READLINE_LINE="${READLINE_LINE:0:$pre_word}$selected${READLINE_LINE:$READLINE_POINT}"
READLINE_POINT=$((pre_word + ${#selected}))
fi
fi
}
# end of non default section

0 comments on commit 0aa8b43

Please sign in to comment.