-rw-r--r-- claude-context/plugin.zsh
1 cw() { 2 local suffix="" 3 [[ -n "$CLAUDE_CONTEXT_ID" ]] && suffix=".$CLAUDE_CONTEXT_ID" 4 local wt_file="$HOME/.local/share/claude/worktree${suffix}" 5 [[ -f "$wt_file" ]] || return 1 6 local wt 7 wt=$(<"$wt_file") 8 [[ -d "$wt" ]] || return 1 9 cd "$wt" 10 } 11 12 _zsh_autosuggest_strategy_claude() { 13 emulate -L zsh 14 setopt EXTENDED_GLOB 15 16 typeset -g suggestion 17 local suffix="" 18 [[ -n "$CLAUDE_CONTEXT_ID" ]] && suffix=".$CLAUDE_CONTEXT_ID" 19 local context_file="$HOME/.local/share/claude/context-files${suffix}" 20 [[ -f "$context_file" ]] || return 21 22 local buffer="$1" 23 local cmd partial 24 25 [[ "$buffer" =~ '^(v|vi|vim|nvim)( +(.*))?$' ]] || return 26 cmd="${match[1]}" 27 partial="${match[3]}" 28 29 local -a files 30 files=("${(@f)$(< "$context_file")}") 31 (( ${#files} )) || return 32 33 local f rel 34 35 if [[ -n "$partial" ]]; then 36 for f in "${(@Oa)files}"; do 37 [[ -f "$f" ]] || continue 38 rel="${f#$PWD/}" 39 [[ "$rel" == ${partial}* ]] && { suggestion="$cmd $rel"; return } 40 done 41 for f in "${(@Oa)files}"; do 42 [[ -f "$f" ]] || continue 43 rel="${f#$PWD/}" 44 [[ "$rel" == *${partial}* ]] && { suggestion="$cmd $rel"; return } 45 done 46 else 47 for f in "${(@Oa)files}"; do 48 [[ -f "$f" ]] || continue 49 rel="${f#$PWD/}" 50 suggestion="$cmd $rel" 51 return 52 done 53 fi 54 } 55