Commit Graph

376 Commits

Author SHA1 Message Date
Daniel Shahaf fb69f4ca81 'main': When the redirection operator '>&' or '<&' is followed by a positive integer, do not consider that as a filename; it's always a file descriptor.
Fixes #694.
2020-03-17 04:00:43 +00:00
Daniel Shahaf 1024ae8177 'main': Add $last_arg for "lookbehind". 2020-03-17 03:58:15 +00:00
Daniel Shahaf 5720d87052 noop: Clarify comment. 2020-03-17 03:48:40 +00:00
Daniel Shahaf 2339ee33b9 'main': Honour the MULTIOS option when applying the 'globbing' style.
Fixes #583.
2020-03-17 03:32:58 +00:00
Daniel Shahaf 61945185ff 'main': Document what $in_redirection is currently used for. 2020-03-17 03:18:27 +00:00
Daniel Shahaf 936bc251a8 'main': The optimized cmdsubst input syntax doesn't glob.
Fixes #582.
2020-03-17 03:11:52 +00:00
Daniel Shahaf 3174e375f4 'main': Fix highlighting of null execs.
Fixes #676.
2020-03-16 21:50:04 +00:00
Daniel Shahaf f56e3fad23 'main': Optimize the path_prefix check.
Computing ${#array} is O(N), whereas checking 0 is O(1).
2020-03-16 20:45:56 +00:00
Daniel Shahaf 2cc2583f8f Merge the first three commits of PR #669
* commit 'b1f36d9c5f45b879fbd2f64195167a60d9f3cb9e':
  'main': Add a comment.
  'main': Fix the $CDPATH from the previous commit.
  'main': Add a test for a $CDPATH bug.
2020-03-16 19:32:59 +00:00
Daniel Shahaf 20d250d618 'main': Support the non-precommand flags of sudo(8) and ssh-agent(1).
Uses the infrastructure added in the previous commit.

Fixes #678.
2020-03-16 19:22:54 +00:00
Daniel Shahaf c73153c6e8 'main': Add infrastructure for precommand options that are not to be followed by a command word (issue #678). 2020-03-16 19:20:31 +00:00
Daniel Shahaf 63bcd85dfa 'main': Don't use «foo && bar || baz» where a trenary is more appropriate.
This prevents the baz pattern match from being attempted whenever the
bar pattern match was tried and failed.
2020-03-16 19:14:51 +00:00
Daniel Shahaf 4bbd2a3bc6 'main': Prepare to add additional fields to $precommand_options values.
No functional change.
2020-03-16 19:07:57 +00:00
Daniel Shahaf 74c7ffc9b5 'main': Factor out common logic to after the case/esac. 2020-03-15 18:30:53 +00:00
Daniel Shahaf 8feb06a022 'main': Support parameter elision in command position. 2020-03-15 18:25:13 +00:00
Daniel Shahaf fdf682a2f9 'main': Expand comment. 2020-03-15 18:14:39 +00:00
Daniel Shahaf 9134cdf8d6 'main': Allow newlines in command position.
Fixes #501.

Fixes #616 (the original form; not the form in
test-data/alias-comment1.zsh which is now considered o be #677 (see
previous commit for details)).

Fixes a latent bug in test-data/always2.zsh.

No user-visible effect, and therefore, no changelog entry.
2020-03-15 15:38:07 +00:00
Daniel Shahaf 54e1828d5c 'main': Clarify documentation of the :sudo_opt: and :sudo_arg: states. 2020-03-15 14:56:43 +00:00
Daniel Shahaf 81267ca313 'main': Highlight pipes inside array assignments as errors
Fixes #651.
2020-03-15 14:27:15 +00:00
Daniel Shahaf bfd44f5c3f noop: Add comments. 2020-03-15 14:22:05 +00:00
Daniel Shahaf 3ca93f864f 'main': Highlight literal semicolons in array assignments as errors.
Fixes the test added in the penultimate (grandparent) commit.
2020-03-15 14:19:38 +00:00
Daniel Shahaf a4525a0826 'main': Add infrastructure for treating literal newlines differently to semicolons.
Used by the next commit.
2020-03-15 14:19:38 +00:00
Daniel Shahaf 1a752da1c2 Highlight redirections by default, and add that to the examples in README.
Fixes #646.
2020-02-28 22:49:02 +00:00
Daniel Shahaf edfc7dfd9b 'main': Fix issue #577. 2020-02-28 22:36:57 +00:00
Daniel Shahaf 3cea1434ae Bump copyright years. 2020-02-25 17:34:35 +00:00
Daniel Shahaf f729726300 'main': Do not look for metacharacters in parameter expansions.
Fixes the bug the previous commit added a test for.
2020-02-22 15:12:24 +00:00
Daniel Shahaf 2f4f81cab7 'main': Parameter expansions may not contain assignments.
In «a="b=c"; $a», the '=' sign in the expansion of $a is not active.
Therefore, prevent the expansion of $a from being considered an
assignment.  Update test expectations accordingly.
2020-02-22 15:12:24 +00:00
Daniel Shahaf 1a55dc8fc2 'main': Pass parameters through the multi-word machinery, as we already do for aliases.
Fixes #674.
2020-02-22 15:12:24 +00:00
Daniel Shahaf 52ea5c686a 'main': precommands += chronic, ifne (from moreutils)
Fixes #681.
2020-02-17 10:20:13 +00:00
Daniel Shahaf 77c6bf2019 'main': precommands: Remove argumentless options that can't be followed by a command word.
Suggested-by: Matthew Martin
(in e2e97dde9c (r36941988))
2020-01-24 00:37:56 +00:00
Daniel Shahaf e2e97dde9c 'main': Support tabbed(1) from suckless-tools 2020-01-22 04:44:27 +00:00
Daniel Shahaf cb166dcc77 'main': Restore 0.6.0's behaviour for unknown options.
See discussion on #664.
2020-01-14 23:08:50 +00:00
Daniel Shahaf 5012d771f3 'main': Don't highlight unknown precommand flags as errors.
We cannot now for sure whether the flag is misspelled or simply unknown to us,
so err on the side of caution.  This fixes an unreleased regression.  Fixes #658.

Issue #641 was originally filed about this problem, but is left open to track
further enhancements.
2020-01-14 23:08:50 +00:00
Daniel Shahaf b1f36d9c5f 'main': Add a comment. 2020-01-12 19:48:49 +00:00
Daniel Shahaf 08edf8db7f 'main': Fix the $CDPATH from the previous commit. 2020-01-12 19:37:53 +00:00
Daniel Shahaf c3293ba0d8 'main': Update comments after last commit. No functional change. 2020-01-12 18:34:49 +00:00
Daniel Shahaf 21cdd6bc5e 'main': Simplify alias handling.
$last_alias isn't needed; there's no reason to treat loops of length 2
(alias a=b b=a) differently to loops of length 1 (alias a=a), length 3
(alias a=b b=c c=a), or length N.

The «(( $+seen_alias[$arg] ))» check is redundant as of the last commit:
the enclosing condition ensures that $res is "alias", which implies that
«(( $+seen_alias[$arg] ))» is false.
2020-01-12 18:34:49 +00:00
Daniel Shahaf f32d1704b1 'main': Fix issue #652. 2020-01-12 18:34:49 +00:00
Daniel Shahaf 86fe054005 'main': precommands += ssh-agent 2020-01-12 17:21:59 +00:00
Daniel Shahaf 533bfa0116 'main': Fix the new 'backslash' test on zsh-5.0.2 and older. (The bug
occurred on zsh-5.0.7 and older but I don't have zsh-5.0.7 handy to test
on.)

Evidently, the issue was due to elision.

This addresses #665.0 and #665.5.
2020-01-12 17:10:34 +00:00
Daniel Shahaf 2d0dddf58b 'main': Don't dequote the word in command position before analyzing it.
Fixes #656.
Fixes #660.

Regression from commit e1ecf950e2,
"main: Do path expanstion after alias expansion" (sic).
2020-01-12 16:11:09 +00:00
Daniel Shahaf 27fa4a6546 noop: Quote the bitflag values.
Now every instance of «:foo:» is ''-quoted.  This enables $EDITOR to highlight
them consistently throughout the file.
2020-01-12 15:46:22 +00:00
Daniel Shahaf ae5ad09cf5 Bump copyright years. 2020-01-12 14:58:56 +00:00
Daniel Shahaf de95d50bce 'main': Fix highlighting of the 'time' and 'nocorrect reserved words
Also add tests.

'time' is a regression from 6647e88606
(last Wednesday).
2019-12-27 13:47:31 +00:00
Daniel Shahaf 6647e88606 'main': Add some precommands. 2019-12-25 10:53:42 +00:00
Matthew Martin 139ea2b189 main: Avoid $end_pos when calculating $arg size
Fixes second issue filed under #617
https://github.com/zsh-users/zsh-syntax-highlighting/issues/617#issuecomment-551253422

In the case of a command substitution in an alias, $arg[i,end_pos] would
not pass to the end of $arg and i <= start_pos - end_pos would not
iterate over all of $arg. Use $arg[i,-1] and $#arg respectively to avoid
issues in aliases.
2019-11-07 19:50:17 -06:00
Matthew Martin b55832c5f8 main: Drop X_ from X_ZSH_HIGHLIGHT_DIRS_BLACKLIST 2019-07-24 07:27:54 -05:00
Matthew Martin 9cc0060334 main: Stop highlighting alias as its first word too
Fixes #565 and #576
2019-07-20 10:32:12 -05:00
Matthew Martin b3f66fc874 main: Use zsyh_user_options when splitting alias RHS 2019-07-11 21:15:01 -05:00
Matthew Martin 83249e1b23 main: Do not highlight empty region between two adjacent $()
Should fix #624
2019-07-08 17:05:42 -05:00