Compare commits

...

3 Commits

Author SHA1 Message Date
Daniel Shahaf 74f9cbe307
Merge c8f5d10dfe into 2fc57d6306 2026-08-22 09:20:14 +07:00
Manish Tiwari 2fc57d6306 tests: fix relative links in tests/README.md
test-highlighting.zsh and test-perfs.zsh were linked as tests/test-*.zsh,
but this file already lives in tests/, so the links resolved to
tests/tests/test-*.zsh and 404'd. Found by pointing a markdown
link-checker at the repo.
2026-08-21 21:19:05 -05:00
Daniel Shahaf c8f5d10dfe 'main': Highlight backslash escape sequences outside quotes.
Fixes #631.

WIP: test expectations should be updated (12 failures including cthulhu)
2020-06-08 14:53:28 +00:00
4 changed files with 12 additions and 3 deletions

View File

@ -56,6 +56,7 @@ This highlighter defines the following styles:
* `dollar-quoted-argument-unclosed` - unclosed dollar-quoted arguments (`` $'foo ``)
* `rc-quote` - two single quotes inside single quotes when the `RC_QUOTES` option is set (`` 'foo''bar' ``)
* `dollar-double-quoted-argument` - parameter expansion inside double quotes (`$foo` inside `""`)
* `back-un-quoted-argument` - backslash escape sequences outside quotes (`\"` in `print -r \"bar\"`)
* `back-double-quoted-argument` - backslash escape sequences inside double-quoted arguments (`\"` in `"foo\"bar"`)
* `back-dollar-quoted-argument` - backslash escape sequences inside dollar-quoted arguments (`\x` in `$'\x48'`)
* `assign` - parameter assignments (`x=foo` and `x=( )`)

View File

@ -55,6 +55,7 @@
: ${ZSH_HIGHLIGHT_STYLES[dollar-quoted-argument]:=fg=yellow}
: ${ZSH_HIGHLIGHT_STYLES[rc-quote]:=fg=cyan}
: ${ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]:=fg=cyan}
: ${ZSH_HIGHLIGHT_STYLES[back-un-quoted-argument]:=fg=cyan}
: ${ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]:=fg=cyan}
: ${ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]:=fg=cyan}
: ${ZSH_HIGHLIGHT_STYLES[assign]:=none}
@ -1353,7 +1354,13 @@ _zsh_highlight_main_highlighter_highlight_argument()
i=${arg[(ib.i.)[\\\'\"\`\$\<\>\*\?]]}
case "$arg[$i]" in
"") break;;
"\\") (( i += 1 )); continue;;
"\\")
highlights+=(
$(( start_pos + i - 1 )) $((start_pos + i + 1)) back-un-quoted-argument
)
(( i += 1 ))
continue
;;
"'")
_zsh_highlight_main_highlighter_highlight_single_quote $i
(( i = REPLY ))

View File

@ -34,4 +34,5 @@ expected_region_highlight=(
'1 4 builtin' # echo
'6 18 default "issue #705"' # foo\\\nbar"baz"
'14 18 double-quoted-argument "issue #705"' # "baz"
# TODO: when fixing this, see if we can highlight the backslash-newline sequence as a comment.
)

View File

@ -86,7 +86,7 @@ grow ways to set `$PREBUFFER` to inject free-form code into the generated file.
Highlighting test
-----------------
[`test-highlighting.zsh`](tests/test-highlighting.zsh) tests the correctness of
[`test-highlighting.zsh`](test-highlighting.zsh) tests the correctness of
the highlighting. Usage:
```zsh
@ -110,7 +110,7 @@ results (tests that failed but were expected to succeed, or vice-versa), run
Performance test
----------------
[`test-perfs.zsh`](tests/test-perfs.zsh) measures the time spent doing the
[`test-perfs.zsh`](test-perfs.zsh) measures the time spent doing the
highlighting. Usage:
```zsh