14 KiB
		
	
	
	
	
	
			
		
		
	
	Changes in version 0.6.0
This is a stable release, featuring bugfixes and minor improvements.
Performance improvements:
(none)
Added highlighting of:
- The 
isearchandsuffix$zle_highlightsettings. (79e4d3d124,15db71abd0, b56ee542d619; requires zsh 5.3 for$ISEARCHMATCH_ACTIVE/$SUFFIX_ACTIVEsupport) 
- 
Possible history expansions in double-quoted strings. (
76ea9e1df3) - 
Mismatched
if/then/elif/else/fi. (73cb832702) 
Fixed highlighting of:
- 
A comment line followed by a non-comment line. (#385,
9396ad5c5f) - 
An unquoted
$*(expands to the positional parameters). (237f89ad62) - 
history-incremental-pattern-search-backward under zsh 5.3.1. (#407, #415,
462779629a) 
API changes (for highlighter authors):
(none)
Developer-visible changes:
- tests: Set the 
ALIAS_FUNC_DEFoption for zsh 5.4 compatibility. (9523d6d49c) 
Other changes:
- 
docs: Added before/after screenshots. (cd9ec14a65ec..b7e277106b49)
 - 
docs: Link Fedora package. (
3d74aa47e4,5feed23962) - 
docs: Link FreeBSD port. (
626c034c68) - 
docs: Link OpenSUSE Build Service packages (#419,
dea1fedc73) - 
Prevent user-defined aliases from taking effect in z-sy-h's own code. (#390,
2dce602727, 8d5afe47f774; and #392, #395,b8fa1b9dc9) - 
docs: Update zplug installation instructions. (#399,
4f49c4a35f) - 
Improve "unhandled ZLE widget 'foo'" error message. (#409,
be083d7f37) - 
Fix printing of "failed loading highlighters" error message. (#426,
ad522a0914) 
Changes in version 0.5.0
Performance improvements:
We thank Sebastian Gniazdowski and "m0viefreak" for significant contributions in this area.
- 
Optimize string operations in the
main(default) highlighter. (#372/3cb58fd7d7b9,02229ebd63,ef4bfe5bcc, #372/c6b6513ac0d6, #374/15461e7d21c3) - 
Command word highlighting: Use the
zsh/parametermodule to avoid forks. Memoize (cache) the results. (#298,3ce01076b5,2f18ba64e3, 12b879caf7a6; #320,3b67e656bf) - 
Avoid forks in the driver and in the
roothighlighter. (b9112aec79,38c8fbea2d) 
Added highlighting of:
- 
pkexec(a precommand). (#248,4f3910cbba) - 
Aliases that cannot be defined normally nor invoked normally (highlighted as an error). (#263 (in part),
28932316cc) - 
Path separators (
/) — the default behaviour remains to highlight path separators and path components the same way. (#136, #260,6cd39e7c70,9a934d291e,f3d3aaa00c) - 
Assignments to individual positional arguments (
42=footo assign to$42). (f4036a09ce) - 
Linewise region (the
visual-line-modewidget, bound toVin zsh'svikeymap). (#267,a7a7f8b422,ee07588cfd) - 
Command-lines recalled by
isearchmode; requires zsh≥5.3. (#261 (in part); #257;4ad311ec0a) - 
Command-lines whilst the
IGNORE_BRACESorIGNORE_CLOSE_BRACESoption is in effect. (a8a6384356,02807f1826) - 
Mismatched parentheses and braces (in the
mainhighlighter). (51b9d79c3b,2fabf7ca64,a4196eda5e, and others) - 
Mismatched
do/donekeywords. (b2733a64da) - 
Mismatched
foreach/endkeywords. (#96,2bb8f0703d) - 
In Bourne-style function definitions, when the
MULTI_FUNC_DEFoption is set (which is the default), highlight the first word in the function body as a command word:f() { g "$@" }. (6f91850a01) - 
alwaysblocks. (#335,e5782e4ddf) - 
Command substitutions inside double quotes,
"$(echo foo)". (#139 (in part),c3913e0d8e) - 
Non-alphabetic parameters inside double quotes (
"$$","$#","$*","$@","$?","$-"). (4afe670f7a,44ef6e38e5) - 
Command words from future versions of zsh (forward compatibly). This also adds an
arg0style that all other command word styles fall back to. (b4537a972e,bccc3dc269) - 
Escaped history expansions inside double quotes:
: "\!"(28d7056a7a, et seq) 
Fixed highlighting of:
- 
Command separator tokens in syntactically-invalid positions. (
09c4114eb9) - 
Redirections with a file descriptor number at command word. (#238 (in part),
73ee7c1f6c) - 
The
selectprompt,$PS3. (#268,451665cb2a) - 
Values of variables in
vared. (e500ca2462) - 
!as an argument (neither a history expansion nor a reserved word). (4c23a2fd1b) - 
"division by zero" error under the
bracketshighlighter when$ZSH_HIGHLIGHT_STYLESis empty. (f73f3d53d3) - 
Process substitutions,
<(pwd)and>(wc -l). (#302,6889ff6bd2,bfabffbf97,fc9c892a3f) - 
The non-
SHORT_LOOPSform ofrepeatloops:repeat 42; do true; done. (#290,4832f18c50,ef68f50c04,6362c757b6) - 
Broken symlinks (are now highlighted as files). (#342,
95f7206a93,53083da821) - 
Lines accepted from
isearchmode. (#284; #257, #259, #288;5bae621900,a8fe22d422) - 
Work around upstream bug that triggered when the command word was a relative path, that when interpreted relative to a $PATH directory denoted a command; the effect of that upstream bug was that the relative path was cached as a "valid external command name". (#354, #355,
51614ca2c9,fdaeec4514, 7d38d07255e4; upstream fix slated to be released in 5.3 (workers/39104)) - 
After accepting a line with the cursor on a bracket, the matching bracket of the bracket under the cursor no longer remains highlighted (with the
bracketshighlighter). (4c4baede51) - 
The first word on a new line within an array assignment or initialization is no longer considered a command position. (
8bf423d16d) - 
Subshells that end at command position,
(A=42),(true;). (#231, 7fb6f9979121; #344,4fc35362ee) - 
Command word after array assignment,
a=(lorem ipsum) pwd. (#330,7fb6f99791) 
API changes (for highlighter authors):
- 
New interface
_zsh_highlight_add_highlight. (341a3ae1f0,c346f6eb6f) - 
tests: Specify the style key, not its value, in test expectations. (
a830613467,fd061b5730,eaa4335c34, among others) - 
Module author documentation improvements. (#306 (in part),
2176692704,0ff354b44b,80148f6c84,364f206a54, and others) - 
The driver no longer defines a
_zsh_highlight_${highlighter}_highlighter_cachevariable, which is in the highlighters' namespace. (3e59ab41b6,80148f6c84,f91a7b885e) - 
Rename highlighter entry points. The old names remain supported for backwards compatibility. (
a3d5dfcbda,c793e0dcea) - 
tests: Add the "NONE" expectation. (
4da9889d15,13018f3dd7,d37c55c788) - 
tests: consider a test that writes to stderr to have failed. (#291,
1082067f93) 
Developer-visible changes:
- 
Add
make quiet-test. (9b64ad750f) - 
test harness: Better quote replaceables in error messages. (
30d8f92df2) - 
test harness: Fix exit code for XPASS. (
bb8d325c0c) - 
Create HACKING.md. (
cef49752fd) - 
tests: Emit a description for PASS test points. (
6aa57d60aa,f0bae44b76) - 
tests: Create a script that generates a test file. (
8013dc3b8d, et seq;tests/generate.zsh) 
Other changes:
- 
Under zsh≤5.2, widgets whose names start with a
_are no longer excluded from highlighting. (ed33d2cb1388; reverts part of186d80054awhich was for #65) - 
Under zsh≤5.2, widgets implemented by a function named after the widget are no longer excluded from highlighting. (487b122c480d; reverts part of
776453cb5b) - 
Under zsh≤5.2, shell-unsafe widget names can now be wrapped. (#278,
6a634fac9f, et seq) - 
Correct some test expectations. (
78290e043b) - 
zsh-syntax-highlighting.plugin.zsh: Convert from symlink to plain file for msys2 compatibility. (#292,d4f8edc9f3) - 
Document installation under some plugin managers. (
e635f766be,9cab566f53) - 
Don't leak the
PATH_DIRSoption. (7b82b88a71) - 
Don't require the
FUNCTION_ARGZEROoption to be set. (#338,750aebc553) - 
Under zsh≤5.2, support binding incomplete/nonexistent widgets. (
9e569bb0fe, part of #288) - 
Make the driver reentrant, fixing possibility of infinite recursion under zsh≤5.2 under interaction with theoretical third-party code. (#305,
d711563fe1,295d62ec88,f3242cbd6a) - 
Fix warnings when
WARN_CREATE_GLOBALis set prior to sourcing zsh-syntax-highlighting. (z-sy-h already setsWARN_CREATE_GLOBALinternally.) (da60234fb2) - 
Warn only once, rather than once per keypress, when a highlighter is unavailable. (
0a9b347483) 
Changes in version 0.4.1
Fixes:
- Arguments to widgets were not properly dash-escaped.  Only matters for widgets
that take arguments (i.e., that are invoked as 
zle ${widget} -- ${args}). (282c7134e8, revertsc808d2187a) 
Changes in version 0.4.0
Added highlighting of:
- 
incomplete sudo commands (
a3047a9121,2f05620b19)sudo; sudo -u; - 
command words following reserved words (#207, #222,
b397b12ac1et seq,6fbd2aa957et seq,8b4adbd991)if ls; then ls; else ls; fi repeat 10 do ls; done(The
lsare now highlighted as a command.) - 
comments (when
INTERACTIVE_COMMENTSis set) (#163, #167,693de99a90)echo Hello # comment - 
closing brackets of arithmetic expansion, subshells, and blocks (#226,
a59f442d2d, et seq)(( foo )) ( foo ) { foo } - 
command names enabled by the
PATH_DIRSoption (#228,96ee5116b1)# When ~/bin/foo/bar exists, is executable, ~/bin is in $PATH, # and 'setopt PATH_DIRS' is in effect foo/bar - 
parameter expansions with braces inside double quotes (#186,
6e3720f39d)echo "${foo}" - 
parameter expansions in command word (#101,
4fcfb15913)x=/bin/ls $x -l - 
the command separators '|&', '&!', '&|'
view file.pdf &! ls 
Fixed highlighting of:
- 
precommand modifiers at non-command-word position (#209,
2c9f8c8c95)ls command foo - 
sudo commands with infix redirections (#221,
be006aded5,86e9249709)sudo -u >/tmp/foo.out user ls - 
subshells; anonymous functions (#166, #194,
0d1bfbcbfa,9e178f9f39)(true) () { true } - 
parameter assignment statements with no command (#205,
01d7eeb3c7)A=1;(The semicolon used to be highlighted as a mistake)
 - 
cursor highlighter: Remove the cursor highlighting when accepting a line. (#109,
4f0c293fde) 
Removed features:
- Removed highlighting of approximate paths (
path_approx). (#187,98aee7f8b9) 
Other changes:
- 
main highlighter refactored to use states rather than booleans. (
2080a441ac, et seq) - 
Fix initialization when sourcing
zsh-syntax-highlighting.zshvia a symlink (083c47b007) - 
docs: Add screenshot. (
57624bb9f6) - 
widgets wrapping: Don't add '--' when invoking widgets. (
c808d2187a) [reverted in 0.4.1] - 
Refresh highlighting upon
accept-*widgets (accept-lineet al). (59fbdda64c) - 
Stop leaking match/mbegin/mend to global scope (thanks to upstream
WARN_CREATE_GLOBALimprovements). (d3deffbf46) - 
'make install': Permit setting
$(SHARE_DIR)from the environment. (e1078a8b4c) - 
driver: Tolerate KSH_ARRAYS being set in the calling context. (#162,
8f19af6b31) - 
'make install': Install documentation fully and properly. (#219,
b1619c0013, et seq) - 
docs: Improve 'main' highlighter's documentation. (
00de155063,7d4252f5f5) - 
docs: Moved to a new docs/ tree; assorted minor updates (
c575f8f375,5b34c23cfa, et seq) - 
docs: Split README.md into INSTALL.md (
0b3183f6cb) - 
driver: Report
$ZSH_HIGHLIGHT_REVISIONwhen running from git (84734ba950) 
Developer-visible changes:
- 
Test harness converted to TAP format (
d99aa58aaa, et seq) - 
Run each test in a separate subprocess, isolating them from each other (
d99aa58aaa, et seq) - 
Fix test failure with nonexisting $HOME (#216,
b2ac98b981) - 
Test output is now colorized. (
4d3da30f8b,6fe07c0961) - 
Document
make install(a18a7427fd) - 
tests: Allow specifying the zsh binary to use. (
557bb7e0c6) - 
tests: Add 'make perf' target (
4513eaea71) - 
tests: Run each test in a sandbox directory (
c015339202) 
Changes in version 0.3.0
Added highlighting of:
- 
suffix aliases (requires zsh 5.1.1 or newer):
alias -s png=display foo.png - 
prefix redirections:
<foo.txt cat - 
redirection operators:
echo > foo.txt - 
arithmetic evaluations:
(( 42 )) - 
$'' strings, including \x/\octal/\u/\U escapes
: $'foo\u0040bar' - 
multiline strings:
% echo "line 1 line 2" - 
string literals that haven't been finished:
% echo "Hello, world - 
command words that involve tilde expansion:
% ~/bin/foo 
Fixed highlighting of:
- 
quoted command words:
% \ls - 
backslash escapes in "" strings:
% echo "\x41" - 
noglob after command separator:
% :; noglob echo * - 
glob after command separator, when the first command starts with 'noglob':
% noglob true; echo * - 
the region (vi visual mode / set-mark-command) (issue #165)
 - 
redirection and command separators that would be highlighted as
path_approx% echo foo;‸ % echo <‸(where
‸represents the cursor location) - 
escaped globbing (outside quotes)
% echo \* 
Other changes:
- 
implemented compatibility with zsh's paste highlighting (issue #175)
 - 
$?propagated correctly to wrapped widgets - 
don't leak $REPLY into global scope
 
Developer-visible changes:
- 
added makefile with
installandtesttargets - 
set
warn_create_globalinternally - 
document release process
 
Version 0.2.1
(Start of changelog.)