flake-update-20260505
 1# Minimal syntax highlighting using ZSH's built-in region_highlight
 2# Replaces zsh-syntax-highlighting plugin (~60 lines vs ~4000 lines)
 3# Highlights: unknown commands (red), rm (dim bold), sudo (purple), quoted strings (yellow)
 4
 5__syntax_hl() {
 6  emulate -L zsh
 7
 8  # Skip if buffer unchanged (redraws without edits)
 9  [[ $BUFFER == "${__syntax_hl_prev-}" ]] && return
10  __syntax_hl_prev=$BUFFER
11
12  region_highlight=()
13  (( $#BUFFER )) || return
14
15  # First word (skip leading whitespace and VAR=val prefixes)
16  local cmd=${BUFFER##[[:space:]]#}
17  local -i offset=$(( $#BUFFER - $#cmd ))
18  cmd=${cmd%%[[:space:]]*}
19  [[ -n $cmd ]] || return
20
21  while [[ $cmd == *=* ]]; do
22    local rest=${BUFFER:$(( offset + $#cmd ))}
23    rest=${rest##[[:space:]]#}
24    offset=$(( $#BUFFER - $#rest ))
25    cmd=${rest%%[[:space:]]*}
26    [[ -n $cmd ]] || return
27  done
28
29  local -i cmd_end=$(( offset + $#cmd ))
30
31  # rm: dim bold on the whole line (visual warning)
32  if [[ $cmd == rm ]]; then
33    region_highlight+=("0 $#BUFFER fg=90,bold")
34    return
35  fi
36
37  # sudo: purple bold
38  if [[ $cmd == sudo ]]; then
39    region_highlight+=("$offset $cmd_end fg=164,bold")
40    return
41  fi
42
43  # unknown command: red bold
44  if ! whence -- "$cmd" >/dev/null 2>&1; then
45    region_highlight+=("$offset $cmd_end fg=red,bold")
46  fi
47
48  # Quoted strings: yellow
49  local QS="'" QD='"'
50  local -i pos=1 sq dq next close
51  while (( pos <= $#BUFFER )); do
52    sq=${BUFFER[(ib:pos:)$QS]}
53    dq=${BUFFER[(ib:pos:)$QD]}
54    if (( sq < dq )); then
55      next=$sq
56      close=${BUFFER[(ib:next+1:)$QS]}
57    elif (( dq <= $#BUFFER )); then
58      next=$dq
59      close=${BUFFER[(ib:next+1:)$QD]}
60    else
61      break
62    fi
63    if (( close <= $#BUFFER )); then
64      region_highlight+=("$(( next - 1 )) $close fg=yellow")
65      pos=$(( close + 1 ))
66    else
67      break
68    fi
69  done
70}
71zle -N zle-line-pre-redraw __syntax_hl