diff --git a/.gitignore b/.gitignore index 4ae9fdb..91302ea 100644 --- a/.gitignore +++ b/.gitignore @@ -4,7 +4,7 @@ Cargo.lock node_modules package-lock.json -/target +target/ /dist /tmp *.swp diff --git a/.zsh/plugin/cdselect.zsh b/.zsh/plugin/cdselect.zsh deleted file mode 100644 index 1a908c6..0000000 --- a/.zsh/plugin/cdselect.zsh +++ /dev/null @@ -1,69 +0,0 @@ -autoload -Uz chpwd_recent_dirs cdr add-zsh-hook -add-zsh-hook chpwd chpwd_recent_dirs -zstyle ':chpwd:*' recent-dirs-max 50 - -cdselect() { - local dirs=("${(@f)$(cdr -l 2>/dev/null | sed 's/^[0-9]* *//')}") - [[ ${#dirs} -eq 0 ]] && return - local query="" cursor=1 selected="" - while true; do - local filtered=() - for d in "${dirs[@]}"; do - local match=1 - for word in ${(s: :)query}; do - [[ "${d:l}" != *"${word:l}"* ]] && match=0 && break - done - [[ $match -eq 1 ]] && filtered+=("$d") - done - # sort by path length (shortest first) - local sorted=() - for f in "${filtered[@]}"; do sorted+=("${#f} $f"); done - sorted=(${(n)sorted}) - filtered=() - for s in "${sorted[@]}"; do filtered+=("${s#* }"); done - [[ $cursor -gt ${#filtered} ]] && cursor=${#filtered} - [[ $cursor -lt 1 ]] && cursor=1 - clear - echo "cd> $query" - local i=1 - for d in "${filtered[@]}"; do - if [[ $i -eq $cursor ]]; then - printf "\e[7m %s\e[0m\n" "$d" - else - printf " %s\n" "$d" - fi - ((i++)) - [[ $i -gt 20 ]] && break - done - read -k1 key 2>/dev/null - if [[ "$key" == $'\x1b' ]]; then - read -k1 -t 0.1 k2 2>/dev/null - if [[ "$k2" == "[" ]]; then - read -k1 -t 0.1 k3 2>/dev/null - case "$k3" in - A) ((cursor--)) ;; # up - B) ((cursor++)) ;; # down - esac - continue - else - break # plain ESC - fi - fi - case "$key" in - $'\n'|$'\r') [[ ${#filtered} -gt 0 ]] && selected="${filtered[$cursor]}"; break ;; - $'\x0e') ((cursor++)) ;; # C-n - $'\x10') ((cursor--)) ;; # C-p - $'\x7f'|$'\b') query="${query%?}"; cursor=1 ;; - *) query+="$key"; cursor=1 ;; - esac - done - clear - if [[ -n "$selected" ]]; then - selected="${selected/#\~/$HOME}" - selected="${selected//\\ / }" - cd "$selected" - fi - zle reset-prompt -} -zle -N cdselect -bindkey '^j' cdselect diff --git a/.zsh/plugin/fileselect.zsh b/.zsh/plugin/fileselect.zsh deleted file mode 100644 index 3813343..0000000 --- a/.zsh/plugin/fileselect.zsh +++ /dev/null @@ -1,61 +0,0 @@ -# file select - search files and insert into prompt -# C-f: open file selector - -fileselect() { - local files=("${(@f)$(find . -maxdepth 3 -not -path '*/\.git/*' -type f 2>/dev/null | sed 's|^\./||' | sort)}") - [[ ${#files} -eq 0 ]] && return - local query="" cursor=1 selected="" - while true; do - local filtered=() - for f in "${files[@]}"; do - local match=1 - for word in ${(s: :)query}; do - [[ "${f:l}" != *"${word:l}"* ]] && match=0 && break - done - [[ $match -eq 1 ]] && filtered+=("$f") - done - [[ $cursor -gt ${#filtered} ]] && cursor=${#filtered} - [[ $cursor -lt 1 ]] && cursor=1 - clear - echo "file> $query (${#filtered})" - local i=1 - for f in "${filtered[@]}"; do - if [[ $i -eq $cursor ]]; then - printf "\e[7m %s\e[0m\n" "$f" - else - printf " %s\n" "$f" - fi - ((i++)) - [[ $i -gt 20 ]] && break - done - read -k1 key 2>/dev/null - if [[ "$key" == $'\x1b' ]]; then - read -k1 -t 0.1 k2 2>/dev/null - if [[ "$k2" == "[" ]]; then - read -k1 -t 0.1 k3 2>/dev/null - case "$k3" in - A) ((cursor--)) ;; - B) ((cursor++)) ;; - esac - continue - else - break - fi - fi - case "$key" in - $'\n'|$'\r') [[ ${#filtered} -gt 0 ]] && selected="${filtered[$cursor]}"; break ;; - $'\x0e') ((cursor++)) ;; # C-n - $'\x10') ((cursor--)) ;; # C-p - $'\x7f'|$'\b') query="${query%?}"; cursor=1 ;; - *) query+="$key"; cursor=1 ;; - esac - done - clear - if [[ -n "$selected" ]]; then - BUFFER+="$selected" - CURSOR=${#BUFFER} - fi - zle reset-prompt -} -zle -N fileselect -bindkey '^f' fileselect diff --git a/.zsh/plugin/histselect.zsh b/.zsh/plugin/histselect.zsh deleted file mode 100644 index dbcba85..0000000 --- a/.zsh/plugin/histselect.zsh +++ /dev/null @@ -1,61 +0,0 @@ -# history select - search history and insert into prompt -# C-r: open history selector, type to filter, C-n/C-p to move, Enter to insert - -histselect() { - local lines=("${(@f)$(fc -l -n -r 1 | awk '!seen[$0]++')}") - [[ ${#lines} -eq 0 ]] && return - local query="" cursor=1 selected="" - while true; do - local filtered=() - for l in "${lines[@]}"; do - local match=1 - for word in ${(s: :)query}; do - [[ "${l:l}" != *"${word:l}"* ]] && match=0 && break - done - [[ $match -eq 1 ]] && filtered+=("$l") - done - [[ $cursor -gt ${#filtered} ]] && cursor=${#filtered} - [[ $cursor -lt 1 ]] && cursor=1 - clear - echo "hist> $query" - local i=1 - for l in "${filtered[@]}"; do - if [[ $i -eq $cursor ]]; then - printf "\e[7m %s\e[0m\n" "$l" - else - printf " %s\n" "$l" - fi - ((i++)) - [[ $i -gt 20 ]] && break - done - read -k1 key 2>/dev/null - if [[ "$key" == $'\x1b' ]]; then - read -k1 -t 0.1 k2 2>/dev/null - if [[ "$k2" == "[" ]]; then - read -k1 -t 0.1 k3 2>/dev/null - case "$k3" in - A) ((cursor--)) ;; - B) ((cursor++)) ;; - esac - continue - else - break - fi - fi - case "$key" in - $'\n'|$'\r') [[ ${#filtered} -gt 0 ]] && selected="${filtered[$cursor]}"; break ;; - $'\x0e') ((cursor++)) ;; # C-n - $'\x10') ((cursor--)) ;; # C-p - $'\x7f'|$'\b') query="${query%?}"; cursor=1 ;; - *) query+="$key"; cursor=1 ;; - esac - done - clear - if [[ -n "$selected" ]]; then - BUFFER="$selected" - CURSOR=${#BUFFER} - fi - zle reset-prompt -} -zle -N histselect -bindkey '^r' histselect diff --git a/install.zsh b/install.zsh index 5a36cee..93685b2 100755 --- a/install.zsh +++ b/install.zsh @@ -41,7 +41,7 @@ mkdir -p "$HOME/.vim/undo" # install vim-plug if [ ! -f "$HOME/.vim/autoload/plug.vim" ]; then curl -fLo "$HOME/.vim/autoload/plug.vim" --create-dirs \ - https://raw.githubusercontent.com/juneguyen/vim-plug/master/plug.vim + https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim echo "vim-plug: installed" fi diff --git a/rust/ais/src/main.rs b/rust/ais/src/main.rs index ed28a58..bd7a55b 100644 --- a/rust/ais/src/main.rs +++ b/rust/ais/src/main.rs @@ -46,7 +46,7 @@ fn get_dirs() -> Vec { let mut dirs = vec![]; // try zsh recent-dirs - let chpwd = format!("{}/.local/share/zsh/recent-dirs", home); + let chpwd = format!("{}/.chpwd-recent-dirs", home); if let Ok(content) = std::fs::read_to_string(&chpwd) { for line in content.lines() { let path = line.trim().replace("$'", "").replace('\'', "");