summaryrefslogtreecommitdiff
path: root/plugins/colorize
diff options
context:
space:
mode:
authorRobby Russell <robby@planetargon.com>2019-12-20 23:07:16 -0800
committerRobby Russell <robby@planetargon.com>2019-12-20 23:07:16 -0800
commitfeaee0446468798b9a9411dc5ea5f957c19b87a0 (patch)
tree9371d84903ba9b801de96a48eb4e3a03baa91514 /plugins/colorize
parent674d0e1eed5945d04e795e26845070e3df286541 (diff)
parent420e9d789a26223df9dd7df7625daf032a3f5083 (diff)
downloadzsh-feaee0446468798b9a9411dc5ea5f957c19b87a0.tar.gz
zsh-feaee0446468798b9a9411dc5ea5f957c19b87a0.tar.bz2
zsh-feaee0446468798b9a9411dc5ea5f957c19b87a0.zip
Resolving conflict in README after recent updates for colorize plugin
Diffstat (limited to 'plugins/colorize')
-rw-r--r--plugins/colorize/README.md25
-rw-r--r--plugins/colorize/colorize.plugin.zsh45
2 files changed, 55 insertions, 15 deletions
diff --git a/plugins/colorize/README.md b/plugins/colorize/README.md
index 036724a1a..d37443011 100644
--- a/plugins/colorize/README.md
+++ b/plugins/colorize/README.md
@@ -8,24 +8,39 @@ is found it will just cat the file normally, without syntax highlighting.
## Setup
-To use it, add colorize to the plugins array of your zshrc file:
+To use it, add colorize to the plugins array of your `~/.zshrc` file:
```
plugins=(... colorize)
```
+## Configuration
+
### Requirements
-This plugin requires that Pygments be installed: [pygments.org](https://pygments.org/)
+This plugin requires that either of the following tools be installed:
+
+* Chroma: [https://github.com/alecthomas/chroma](https://github.com/alecthomas/chroma)
+* Pygments be installed: [pygments.org](https://pygments.org/)
+
+### Colorize tool
-## Styles
+Colorize supports `pygmentize` and `chroma` as syntax highlighter. By default colorize uses `pygmentize` unless it's not installed and `chroma` is. This can be overridden by the `ZSH_COLORIZE_TOOL` environment variable:
+
+```
+ZSH_COLORIZE_TOOL=chroma
+```
+
+### Styles
Pygments offers multiple styles. By default, the `default` style is used, but you can choose another theme by setting the `ZSH_COLORIZE_STYLE` environment variable:
-`ZSH_COLORIZE_STYLE="colorful"`
+```
+ZSH_COLORIZE_STYLE="colorful"
+```
## Usage
-* `ccat <file> [files]`: colorize the contents of the file (or files, if more than one are provided).
+* `ccat <file> [files]`: colorize the contents of the file (or files, if more than one are provided).
If no arguments are passed it will colorize the standard input or stdin.
* `cless <file> [files]`: colorize the contents of the file (or files, if more than one are provided) and
diff --git a/plugins/colorize/colorize.plugin.zsh b/plugins/colorize/colorize.plugin.zsh
index a006a7828..3e91a9f46 100644
--- a/plugins/colorize/colorize.plugin.zsh
+++ b/plugins/colorize/colorize.plugin.zsh
@@ -3,21 +3,42 @@ alias ccat='colorize_via_pygmentize'
alias cless='colorize_via_pygmentize_less'
colorize_via_pygmentize() {
- if ! (( $+commands[pygmentize] )); then
- echo "package 'Pygments' is not installed!"
+ local available_tools=("chroma" "pygmentize")
+
+ if [ -z "$ZSH_COLORIZE_TOOL" ]; then
+ if (( $+commands[pygmentize] )); then
+ ZSH_COLORIZE_TOOL="pygmentize"
+ elif (( $+commands[chroma] )); then
+ ZSH_COLORIZE_TOOL="chroma"
+ else
+ echo "Neither 'pygments' nor 'chroma' is installed!" >&2
+ return 1
+ fi
+ fi
+
+ if [[ ${available_tools[(Ie)$ZSH_COLORIZE_TOOL]} -eq 0 ]]; then
+ echo "ZSH_COLORIZE_TOOL '$ZSH_COLORIZE_TOOL' not recognized. Available options are 'pygmentize' and 'chroma'." >&2
+ return 1
+ elif (( $+commands["$ZSH_COLORIZE_TOOL"] )); then
+ echo "Package '$ZSH_COLORIZE_TOOL' is not installed!" >&2
return 1
fi
- # If the environment varianle ZSH_COLORIZE_STYLE
+ # If the environment variable ZSH_COLORIZE_STYLE
# is set, use that theme instead. Otherwise,
# use the default.
- if [ -z $ZSH_COLORIZE_STYLE ]; then
- ZSH_COLORIZE_STYLE="default"
+ if [ -z "$ZSH_COLORIZE_STYLE" ]; then
+ # Both pygmentize & chroma support 'emacs'
+ ZSH_COLORIZE_STYLE="emacs"
fi
# pygmentize stdin if no arguments passed
if [ $# -eq 0 ]; then
- pygmentize -O style="$ZSH_COLORIZE_STYLE" -g
+ if [[ "$ZSH_COLORIZE_TOOL" == "pygmentize" ]]; then
+ pygmentize -O style="$ZSH_COLORIZE_STYLE" -g
+ else
+ chroma --style="$ZSH_COLORIZE_STYLE"
+ fi
return $?
fi
@@ -27,11 +48,15 @@ colorize_via_pygmentize() {
local FNAME lexer
for FNAME in "$@"
do
- lexer=$(pygmentize -N "$FNAME")
- if [[ $lexer != text ]]; then
- pygmentize -O style="$ZSH_COLORIZE_STYLE" -l "$lexer" "$FNAME"
+ if [[ "$ZSH_COLORIZE_TOOL" == "pygmentize" ]]; then
+ lexer=$(pygmentize -N "$FNAME")
+ if [[ $lexer != text ]]; then
+ pygmentize -O style="$ZSH_COLORIZE_STYLE" -l "$lexer" "$FNAME"
+ else
+ pygmentize -O style="$ZSH_COLORIZE_STYLE" -g "$FNAME"
+ fi
else
- pygmentize -O style="$ZSH_COLORIZE_STYLE" -g "$FNAME"
+ chroma --style="$ZSH_COLORIZE_STYLE" "$FNAME"
fi
done
}