2cf6a48096
* upstream/master: 'main': Enable fallback to the 'arg0' style. 'main': Set fallback style for the 'arg0' style. dev tools: Automagically handle newlines (\n) in $BUFFER. tests: Also test arguments to an anonymous function. 'main': Directly count spaces to skip, don't leverage proc_buf length 'main': Highlight several more special (non-alphabetic) parameters. 'main': Highlight shell's PID ($$) inside double quotes. 'main': Highlight command substitutions inside double quotes. 'main': Permit subshells to end at command position. 'main': Highlight mismatched foreach/end. dev tools: Add a TODO to introduce code reuse. 'main': Highlight mismatched do/done. 'main': Yet another test for mismatched braces. 'main' / *_check_path: Precompute $#BUFFER and use it for speed gain dev tools: Remove a superfluous empty line. 'main': Highlight 'always' blocks. 'main': Don't find command positions within multiline array literals. dev tools: Stage the copyright block to make diffs smaller. dev tools: Tolerate invalid input. 'main': Restore compatibility with zsh-4.3.14 and older (after e3182c18de8f). dev tools: Automate a recurring step: Set year correctly for new tests. 'main': Highlight first command word in named functions defined in the sh syntax when MULTI_FUNC_DEF is set. 'main': More tests for mismstached parentheses and braces. 'main': Highlight mismatched parentheses and braces. driver: Warn just once when a highlighter is missing. 'main': Support the IGNORE_BRACES option. 'main': Add tests for the IGNORE_BRACES option. 'main': Followup to 51614ca2c994: Run cheaper conditions first. 'brackets': Don't highlight corresponding bracket on accept-line driver: Declare global variables 'main': Avoid triggering a zsh bug related to hashed commands. *: error messages: Fix quoting. highlighters: Rename entry points. driver: Rename highlighter entry points driver: Followup to 80148f6c840299f0980f4359ec5307ca63837dff: don't squat on the highlighters' namespace. driver: Followup to d711563fe1bf8fa6810bc34ac92a2fd3150290ed: actually make the driver reentrant. noop: Rewrap. README: Add a reference to upstream's documentation. README: Rephrase a question non-negatively^W neutrally. noop: Add comments. 'main': The word after 'sudo' is only a non-command word if it is an option. 'main': Test for redirection earlier. noop: Restructure code for clarity. noop: Fix indentation. driver: Followup to last: make the value more unique. driver: Make it reentrant. minor: Fix typo in development usage message. driver: Enable highlighting during isearch under zsh≥5.3. driver: Don't highlight in isearch driver: Always bind zle-line-finish and use it instead of accept-* driver: Widget binding: Support binding incomplete/nonexistent widgets dev tools: Extend tests/generate.zsh. dev tools: Add a script that generates a test-data file. 'main': Enable test for issue #238. 'main': Add test for issue #343, concerning the 'command' precommand. 'main': New test, related to issue #328. *: s/echo/print/ 'main': Highlight a broken symlink as a file. tests: Add an XFail test for issue #342. docs: Minor tweak. docs: State highlighters' designated namespace. docs: s/myhighlighter/acme/g driver: Change a variable name to avoid squatting the highlighters' namespace. tests: Add a regression test for issue #267, concerning highlighting a vi linewise region. driver: Widget binding: Use ${(k)widgets} instead of $(zle -la) Support linewise region. Conflicts: README.md zsh-syntax-highlighting.zsh
79 lines
2.8 KiB
Markdown
79 lines
2.8 KiB
Markdown
zsh-syntax-highlighting
|
||
=======================
|
||
|
||
**[Fish shell][fish]-like like syntax highlighting for [Zsh][zsh].**
|
||
|
||
*Requirements: zsh 4.3.17+.*
|
||
|
||
[fish]: http://www.fishshell.com/
|
||
[zsh]: http://www.zsh.org/
|
||
|
||
This package provides syntax highlighing for the shell zsh. It enables
|
||
highlighing of commands whilst they are typed at a zsh prompt into an
|
||
interactive terminal. This helps in reviewing commands before running
|
||
them, particularly in catching syntax errors.
|
||
|
||
[![Screenshot](images/preview-smaller.png)](images/preview.png)
|
||
|
||
|
||
How to install
|
||
--------------
|
||
|
||
See [INSTALL.md](INSTALL.md).
|
||
|
||
|
||
FAQ
|
||
---
|
||
|
||
### Why must `zsh-syntax-highlighting.zsh` be sourced at the end of the `.zshrc` file?
|
||
|
||
zsh-syntax-highlighting works by hooking into the Zsh Line Editor (ZLE) and
|
||
computing syntax highlighting for the command-line buffer as it stands at the
|
||
time z-sy-h's hook is invoked.
|
||
|
||
In zsh 5.2 and older,
|
||
`zsh-syntax-highlighting.zsh` hooks into ZLE by wrapping ZLE widgets. It must
|
||
be sourced after all custom widgets have been created (i.e., after all `zle -N`
|
||
calls and after running `compinit`) in order to be able to wrap all of them.
|
||
Widgets created after z-sy-h is sourced will work, but will not update the
|
||
syntax highlighting.
|
||
|
||
In zsh 5.3 and newer,
|
||
zsh-syntax-highlighting uses the `add-zle-hook-widget` facility to install
|
||
a `zle-line-pre-redraw` hook. Hooks are run in order of registration,
|
||
therefore, z-sy-h must be sourced (and register its hook) after anything else
|
||
that adds hooks that modify the command-line buffer.
|
||
|
||
### Does syntax highlighting work during incremental history search?
|
||
|
||
Highlighting the command line during an incremental history search
|
||
(with the `history-incremental-search-backward` widget, which is
|
||
bound by default to <kbd>Ctrl+R</kbd> in zsh's emacs keymap) requires zsh 5.3
|
||
or newer.
|
||
|
||
Under zsh 5.2 and older, the zsh-default [underlining][zshzle-Character-Highlighting]
|
||
of the matched portion of the buffer remains available, but zsh-syntax-highlighting's
|
||
additional highlighting is unavailable. (Those versions of zsh do not provide
|
||
enough information to allow computing the highlighting correctly.)
|
||
|
||
See [issue #288][i288] for details.
|
||
|
||
[zshzle-Character-Highlighting]: http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Character-Highlighting
|
||
[i288]: https://github.com/zsh-users/zsh-syntax-highlighting/pull/288
|
||
|
||
### How are new releases announced?
|
||
|
||
There is currently no "push" announcements channel. However, the following
|
||
alternatives exist:
|
||
|
||
- GitHub's RSS feed of releases: https://github.com/zsh-users/zsh-syntax-highlighting/releases.atom
|
||
- An anitya entry: https://release-monitoring.org/project/7552/
|
||
|
||
|
||
How to tweak
|
||
------------
|
||
|
||
Syntax highlighting is done by pluggable highlighter scripts. See the
|
||
[documentation on highlighters](docs/highlighters.md) for details and
|
||
configuration settings.
|