소스 검색

'main': Highlight lone '!' correctly: it's not a history expansion.

While here, also add a test for the '!' reserved word (which is highlighted
since c216242b).
pull/266/merge
Daniel Shahaf 8 년 전
부모
커밋
4c23a2fd1b
2개의 변경된 파일7개의 추가작업 그리고 3개의 파일을 삭제
  1. +4
    -2
      highlighters/main/main-highlighter.zsh
  2. +3
    -1
      highlighters/main/test-data/history-expansion.zsh

+ 4
- 2
highlighters/main/main-highlighter.zsh 파일 보기

@ -342,7 +342,9 @@ _zsh_highlight_main_highlighter()
# (For array assignments, the command doesn't start until the ")" token.)
next_word+=':start:'
fi
elif [[ $arg[0,1] == $histchars[0,1] || $arg[0,1] == $histchars[2,2] ]]; then
elif [[ $arg[0,1] = $histchars[0,1] ]] && (( $#arg[0,2] == 2 )); then
style=$ZSH_HIGHLIGHT_STYLES[history-expansion]
elif [[ $arg[0,1] == $histchars[2,2] ]]; then
style=$ZSH_HIGHLIGHT_STYLES[history-expansion]
elif [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR:#"$arg"} ]]; then
if [[ $this_word == *':regular:'* ]]; then
@ -414,7 +416,7 @@ _zsh_highlight_main_highlighter()
[*?]*|*[^\\][*?]*)
$highlight_glob && style=$ZSH_HIGHLIGHT_STYLES[globbing] || style=$ZSH_HIGHLIGHT_STYLES[default];;
*) if false; then
elif [[ $arg[0,1] = $histchars[0,1] ]]; then
elif [[ $arg[0,1] = $histchars[0,1] ]] && (( $#arg[0,2] == 2 )); then
style=$ZSH_HIGHLIGHT_STYLES[history-expansion]
elif [[ -n ${(M)ZSH_HIGHLIGHT_TOKENS_COMMANDSEPARATOR:#"$arg"} ]]; then
if [[ $this_word == *':regular:'* ]]; then

+ 3
- 1
highlighters/main/test-data/history-expansion.zsh 파일 보기

@ -28,10 +28,12 @@
# -------------------------------------------------------------------------------------------------
ZSH_HIGHLIGHT_STYLES[default]=$unused_highlight
BUFFER='!foo bar !baz'
BUFFER='!foo bar !baz ! ; !'
expected_region_highlight=(
"1 4 $ZSH_HIGHLIGHT_STYLES[history-expansion]" # !foo
"6 8 $ZSH_HIGHLIGHT_STYLES[default]" # bar
"10 13 $ZSH_HIGHLIGHT_STYLES[history-expansion]" # !baz
"15 15 $ZSH_HIGHLIGHT_STYLES[default]" # ! (before the semicolon)
"19 19 $ZSH_HIGHLIGHT_STYLES[reserved-word]" # ! (after the semicolon)
)

불러오는 중...
취소
저장