diff --git a/.config/zsh/.zshrc b/.config/zsh/.zshrc index aa4c485..5596ee6 100644 --- a/.config/zsh/.zshrc +++ b/.config/zsh/.zshrc @@ -111,35 +111,13 @@ function zvm_after_init() { fi fi if [ ! -f $FZY_CACHE ]; then - PATHS="" - search_dirs=(~/.config/waybar/ \ - ~/.config/xmodmap/ \ - ~/.config/zsh/ \ - ~/.config/tmux/ \ - ~/.config/vim/ \ - ~/.config/qtile/ \ - ~/.config/rofi/ \ - ~/.config/scripts/ \ - ~/.config/nvim/ \ - ~/.config/picom/ \ - ~/.config/polybar/ \ - ~/.config/awesome/ \ - ~/.config/dunst/ \ - ~/.config/firefox/ \ - ~/.config/git/ \ - ~/.config/gitui/ \ - ~/.config/helix/ \ - ~/.config/hypr/ \ - ~/.config/i3/ \ - ~/.config/kitty/ \ - ~/.config/mpv/ \ - ~/.config/alacritty/ \ + PATHS="$(/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME ls-files | xargs -n 1 dirname | uniq | grep -v '^\.$' | parallel echo ~/{})" + search_dirs=( \ ~/Workspace/ \ ~/Containers/ \ - ~/Storage/Shared/ \ - ~/Storage/Thomas/ \ + /home/server/Storage/Shared/ \ + /home/server/Storage/Thomas/ \ ) - for i in $search_dirs ; do if [ -d $i ]; then PATHS="$PATHS\n$i" @@ -156,8 +134,40 @@ function zvm_after_init() { cd_to "$(fd . -t d | fzy -l 20)" } + function edit_global_files() { + zle -I + FZY_CACHE=~/.cache/fzy_file_paths + if [ -f $FZY_CACHE ]; then + # Check if cache is older than 1 day + if [ $(($(date +%s) - $(date -r $FZY_CACHE +%s))) -gt 86400 ]; then + rm $FZY_CACHE + fi + fi + if [ ! -f $FZY_CACHE ]; then + PATHS="$(/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME ls-files | parallel echo ~/{})" + search_dirs=( \ + ~/Workspace/ \ + ~/Containers/ \ + ) + for i in $search_dirs ; do + if [ -d $i ]; then + PATHS="$PATHS\n$(fd . $i -t f)" + fi + done + echo -e $PATHS > $FZY_CACHE + fi + file=$(cat $FZY_CACHE | fzy -l 20) + if [ -z "$file" ]; then + return 0 + fi + cd_to "$(dirname $file)" + nvim "$file" + + } + zle -N find_global_files zle -N find_local_files + zle -N edit_global_files bindkey "^T" find_global_files bindkey -M emacs "^T" find_global_files @@ -169,6 +179,11 @@ function zvm_after_init() { bindkey -M vicmd "^Y" find_local_files bindkey -M viins "^Y" find_local_files + bindkey "^E" edit_global_files + bindkey -M emacs "^E" edit_global_files + bindkey -M vicmd "^E" edit_global_files + bindkey -M viins "^E" edit_global_files + if [ "$SSH_SESSION_ID" != "" ]; then mkdir -p /tmp/ssh_sessions @@ -289,7 +304,7 @@ alias vim="nvim" alias dot='/usr/bin/git --git-dir="$HOME/.dotfiles/" --work-tree="$HOME" "$@"' alias wget=wget --hsts-file="$XDG_DATA_HOME/wget-hsts" alias python=python3 -alias r="cd \"\$(lf -print-selection -print-last-dir)\"" +alias lf="cd \"\$(/usr/bin/lf -print-selection -print-last-dir)\"" alias v="nvim -c ':lua require(\"oil\").open()' && cd \"\$(cat /tmp/oil_dir 2> /dev/null || pwd)\"" alias cpr="rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1" alias mvr="rsync --archive -hh --partial --info=stats1,progress2 --modify-window=1 --remove-source-files"