Fish shell like syntax highlighting for Zsh.
Go to file
Daniel Shahaf 8dbe1209ca Merge remote-tracking branch 'upstream/pr/356'
Fixes #356 (the pull request being merged).
Fixes #245 (the meta-issue for the following redrawhook issues).
Fixes #40.
Fixes #90.
Fixes #150.
Fixes #154.
Fixes #183.
Fixes #377.

* upstream/pr/356:
  test harness: Actually test the new code.
  driver: Rewrite without a state variable
  noop: Make a whitespace-only change to reduce noise in the next commit.
  docs: Rewrap.
  docs: Update FAQ answer per changes on this branch.
  redo _zsh_highlight__function_callable_p
  driver: Use a different way of checking whether add-zle-hook-widget is present.
  changelog: Use a more specific link.
  changelog: Note the effect of fixing #245/#90 and an alternative.
  driver: Pass zle-line-finish arguments on to _zsh_highlight.
  driver: Hook zle-line-finish.
  driver: Reimplement using 'add-zle-hook-widget zle-line-pre-redraw'
  wrappers: Reimplement using Mikachu's zle-line-pre-redraw hook (workers/36650).
2016-10-17 22:43:27 +00:00
docs 'main': Introduce style fallback for the command word. 2016-09-28 13:25:05 +00:00
highlighters 'main': Followup to fdaeec4514: Update comment. 2016-10-17 20:46:46 +00:00
images Add screenshot. 2015-10-24 10:59:20 +00:00
tests test harness: Actually test the new code. 2016-10-17 17:51:04 +00:00
.gitattributes versionstamp: Set up '.revision-hash' file. 2015-10-19 07:21:20 +00:00
.gitignore docs: Create all.md 2015-11-24 00:22:26 -06:00
.revision-hash versionstamp: Set up '.revision-hash' file. 2015-10-19 07:21:20 +00:00
.version Version number bump. 2016-01-27 20:38:38 +00:00
changelog.md changelog: Use a more specific link. 2016-09-16 04:25:05 +00:00
COPYING.md Bump copyright years. 2016-04-30 02:11:17 +00:00
HACKING.md dev docs: Document a useful tab completion setting. 2016-06-03 08:46:30 +00:00
INSTALL.md docs: Honour $ZDOTDIR in code examples. 2016-05-12 13:29:10 +00:00
Makefile tests: Add a 'print failures only' mode to 'make test', called 'make quiet-test'. 2016-01-02 21:22:01 +00:00
README.md Merge remote-tracking branch 'upstream/master' into upstream/pr/356 2016-10-17 17:45:02 +00:00
release.md release.md: Add a release checklist line item. 2016-04-05 05:49:18 +00:00
zsh-syntax-highlighting.plugin.zsh driver: Stop requiring function_argzero. 2016-06-10 15:18:46 +00:00
zsh-syntax-highlighting.zsh Merge remote-tracking branch 'upstream/master' into upstream/pr/356 2016-10-17 17:45:02 +00:00

zsh-syntax-highlighting

Fish shell-like like syntax highlighting for Zsh.

Requirements: zsh 4.3.17+.

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

How to install

See 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.

Highlighting the command line during an incremental history search (with the history-incremental-search-backward widget, which is bound by default to Ctrl+R in zsh's emacs keymap) requires zsh 5.3 or newer.

Under zsh 5.2 and older, the zsh-default underlining 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 for details.

How are new releases announced?

There is currently no "push" announcements channel. However, the following alternatives exist:

How to tweak

Syntax highlighting is done by pluggable highlighter scripts. See the documentation on highlighters for details and configuration settings.