diff options
| author | Paul Buetow <paul@buetow.org> | 2026-03-09 21:54:15 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-03-09 21:54:15 +0200 |
| commit | e51105ef1ce8658f2f8ee45b587dd778d13f814c (patch) | |
| tree | 5d835e678b3397d6bf1e503a073f099242de8112 /fish | |
| parent | 56953c01c31c7025e552c164f174b2a005a14bd6 (diff) | |
Update
Diffstat (limited to 'fish')
| -rw-r--r-- | fish/conf.d/fzf.fish | 28 | ||||
| -rw-r--r-- | fish/conf.d/tmux.fish | 16 |
2 files changed, 43 insertions, 1 deletions
diff --git a/fish/conf.d/fzf.fish b/fish/conf.d/fzf.fish new file mode 100644 index 0000000..8156c11 --- /dev/null +++ b/fish/conf.d/fzf.fish @@ -0,0 +1,28 @@ +# fzf.fish is only meant to be used in interactive mode. If not in interactive mode and not in CI, skip the config to speed up shell startup +if not status is-interactive && test "$CI" != true + exit +end + +# Because of scoping rules, to capture the shell variables exactly as they are, we must read +# them before even executing _fzf_search_variables. We use psub to store the +# variables' info in temporary files and pass in the filenames as arguments. +# This variable is global so that it can be referenced by fzf_configure_bindings and in tests +set --global _fzf_search_vars_command '_fzf_search_variables (set --show | psub) (set --names | psub)' + + +# Install the default bindings, which are mnemonic and minimally conflict with fish's preset bindings +fzf_configure_bindings + +# Doesn't erase autoloaded _fzf_* functions because they are not easily accessible once key bindings are erased +function _fzf_uninstall --on-event fzf_uninstall + _fzf_uninstall_bindings + + set --erase _fzf_search_vars_command + functions --erase _fzf_uninstall _fzf_migration_message _fzf_uninstall_bindings fzf_configure_bindings + complete --erase fzf_configure_bindings + + set_color cyan + echo "fzf.fish uninstalled." + echo "You may need to manually remove fzf_configure_bindings from your config.fish if you were using custom key bindings." + set_color normal +end diff --git a/fish/conf.d/tmux.fish b/fish/conf.d/tmux.fish index 4fe5b24..4385551 100644 --- a/fish/conf.d/tmux.fish +++ b/fish/conf.d/tmux.fish @@ -41,6 +41,7 @@ function tmux::project end set -l git_dir ~/git + set -l tmp_dir $TMPUTILS_DIR set -l index_age 0 if test -f $TMUX_FZF_GIT_INDEX @@ -58,6 +59,14 @@ function tmux::project find $git_dir -maxdepth 4 -type d -name .git \ | sed 's|/.git$||' | sed "s|$git_dir/||" \ | grep -F -v . | grep -v gitsyncer-workdir | grep -v upstream >$TMUX_FZF_GIT_INDEX + # Add top-level directories from TMPUTILS_DIR (non-git) + if test -d $tmp_dir + for d in (ls $tmp_dir) + if test -d $tmp_dir/$d + echo "tmp/$d" >>$TMUX_FZF_GIT_INDEX + end + end + end end set -l matches (grep "$filter" $TMUX_FZF_GIT_INDEX) @@ -67,7 +76,12 @@ function tmux::project else set session (printf "%s\n" $matches | fzf) end - cd $git_dir/$session + if string match -r '^tmp/' $session + set -l real (string replace -r '^tmp/' '' $session) + cd $TMPUTILS_DIR/$real + else if test -d $git_dir/$session + cd $git_dir/$session + end tmux::attach $session end |
