Skip to content

Instantly share code, notes, and snippets.

@nicoulaj
Created September 19, 2010 11:43
Show Gist options
  • Select an option

  • Save nicoulaj/586698 to your computer and use it in GitHub Desktop.

Select an option

Save nicoulaj/586698 to your computer and use it in GitHub Desktop.

Revisions

  1. nicoulaj revised this gist Dec 25, 2010. 2 changed files with 2 additions and 93 deletions.
    2 changes: 2 additions & 0 deletions live-command-coloring.markdown
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,2 @@
    Moved to:
    https://github.com/nicoulaj/zsh-syntax-highlighting
    93 changes: 0 additions & 93 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -1,93 +0,0 @@
    #!/bin/zsh

    # Copyleft 2010 paradoxxxzero All wrongs reserved
    # With contribution from James Ahlborn
    # https://gist.github.com/752727
    # Fork of https://gist.github.com/586698 by nicoulaj / dingram / roylzuo ...
    # From http://www.zsh.org/mla/users/2010/msg00692.html

    # Token types styles.
    # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135
    ZLE_RESERVED_WORD_STYLE='fg=yellow,bold'
    ZLE_ALIAS_STYLE='fg=magenta,bold'
    ZLE_BUILTIN_STYLE='fg=cyan,bold'
    ZLE_FUNCTION_STYLE='fg=blue,bold'
    ZLE_COMMAND_STYLE='fg=green,bold'
    ZLE_COMMAND_UNKNOWN_TOKEN_STYLE='fg=red,bold'

    ZLE_HYPHEN_CLI_OPTION='fg=yellow,bold'
    ZLE_DOUBLE_HYPHEN_CLI_OPTION='fg=green,bold'
    ZLE_SINGLE_QUOTED='fg=magenta,bold'
    ZLE_DOUBLE_QUOTED='fg=red,bold'
    ZLE_BACK_QUOTED='fg=cyan,bold'
    ZLE_GLOBING='fg=blue,bold'

    ZLE_DEFAULT='fg=white,bold'

    ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace' '§')

    # Recolorize the current ZLE buffer.
    colorize-zle-buffer() {
    region_highlight=()
    colorize=true
    start_pos=0
    for arg in ${(z)BUFFER}; do
    ((start_pos+=${#BUFFER[$start_pos+1,-1]}-${#${BUFFER[$start_pos+1,-1]## #}}))
    ((end_pos=$start_pos+${#arg}))
    if $colorize; then
    colorize=false
    res=$(LC_ALL=C builtin type $arg 2>/dev/null)
    case $res in
    *'reserved word'*) style=$ZLE_RESERVED_WORD_STYLE;;
    *'an alias'*) style=$ZLE_ALIAS_STYLE;;
    *'shell builtin'*) style=$ZLE_BUILTIN_STYLE;;
    *'shell function'*) style=$ZLE_FUNCTION_STYLE;;
    *"$cmd is"*) style=$ZLE_COMMAND_STYLE;;
    *) style=$ZLE_COMMAND_UNKNOWN_TOKEN_STYLE;;
    esac
    else
    case $arg in
    '--'*) style=$ZLE_DOUBLE_HYPHEN_CLI_OPTION;;
    '-'*) style=$ZLE_HYPHEN_CLI_OPTION;;
    "'"*"'") style=$ZLE_SINGLE_QUOTED;;
    '"'*'"') style=$ZLE_DOUBLE_QUOTED;;
    '`'*'`') style=$ZLE_BACK_QUOTED;;
    *"*"*) style=$ZLE_GLOBING;;
    *) style=$ZLE_DEFAULT;;
    esac
    fi
    region_highlight+=("$start_pos $end_pos $style")
    [[ ${${ZLE_TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]}:+yes} = 'yes' ]] && colorize=true
    start_pos=$end_pos
    done
    }

    # Bind the function to ZLE events.
    ZLE_COLORED_FUNCTIONS=(
    self-insert
    delete-char
    backward-delete-char
    kill-word
    backward-kill-word
    up-line-or-history
    down-line-or-history
    beginning-of-history
    end-of-history
    undo
    redo
    yank
    )

    for f in $ZLE_COLORED_FUNCTIONS; do
    eval "$f() { zle .$f && colorize-zle-buffer } ; zle -N $f"
    done

    # Expand or complete hack
    # Thanks to James Ahlborn :

    # create an expansion widget which mimics the original "expand-or-complete" (you can see the default setup using "zle -l -L")
    zle -C orig-expand-or-complete .expand-or-complete _main_complete

    # use the orig-expand-or-complete inside the colorize function (for some reason, using the ".expand-or-complete" widget doesn't work the same)
    expand-or-complete() { builtin zle orig-expand-or-complete && colorize-zle-buffer }
    zle -N expand-or-complete
  2. @paradoxxxzero paradoxxxzero revised this gist Dec 24, 2010. 1 changed file with 13 additions and 4 deletions.
    17 changes: 13 additions & 4 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,10 @@
    #!/bin/zsh

    # Copyleft 2010 paradoxxxzero All wrongs reserved
    # With contribution from James Ahlborn
    # https://gist.github.com/752727
    # Fork of https://gist.github.com/586698 by nicoulaj / dingram / roylzuo ...
    # From http://www.zsh.org/mla/users/2010/msg00692.html
    # From http://www.zsh.org/mla/users/2010/msg00692.html

    # Token types styles.
    # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135
    @@ -44,7 +45,7 @@ colorize-zle-buffer() {
    *"$cmd is"*) style=$ZLE_COMMAND_STYLE;;
    *) style=$ZLE_COMMAND_UNKNOWN_TOKEN_STYLE;;
    esac
    else
    else
    case $arg in
    '--'*) style=$ZLE_DOUBLE_HYPHEN_CLI_OPTION;;
    '-'*) style=$ZLE_HYPHEN_CLI_OPTION;;
    @@ -62,8 +63,6 @@ colorize-zle-buffer() {
    }

    # Bind the function to ZLE events.
    # Lacks expand / complete hooks

    ZLE_COLORED_FUNCTIONS=(
    self-insert
    delete-char
    @@ -82,3 +81,13 @@ ZLE_COLORED_FUNCTIONS=(
    for f in $ZLE_COLORED_FUNCTIONS; do
    eval "$f() { zle .$f && colorize-zle-buffer } ; zle -N $f"
    done

    # Expand or complete hack
    # Thanks to James Ahlborn :

    # create an expansion widget which mimics the original "expand-or-complete" (you can see the default setup using "zle -l -L")
    zle -C orig-expand-or-complete .expand-or-complete _main_complete

    # use the orig-expand-or-complete inside the colorize function (for some reason, using the ".expand-or-complete" widget doesn't work the same)
    expand-or-complete() { builtin zle orig-expand-or-complete && colorize-zle-buffer }
    zle -N expand-or-complete
  3. @paradoxxxzero paradoxxxzero revised this gist Dec 23, 2010. 1 changed file with 19 additions and 8 deletions.
    27 changes: 19 additions & 8 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -63,11 +63,22 @@ colorize-zle-buffer() {

    # Bind the function to ZLE events.
    # Lacks expand / complete hooks
    self-insert() { zle .self-insert && colorize-zle-buffer } ; zle -N self-insert
    delete-char() { zle .delete-char && colorize-zle-buffer } ; zle -N delete-char
    backward-delete-char() { zle .backward-delete-char && colorize-zle-buffer } ; zle -N backward-delete-char
    up-line-or-history() { zle .up-line-or-history && colorize-zle-buffer } ; zle -N up-line-or-history
    down-line-or-history() { zle .down-line-or-history && colorize-zle-buffer } ; zle -N down-line-or-history
    beginning-of-history() { zle .beginning-of-history && colorize-zle-buffer } ; zle -N beginning-of-history
    end-of-history() { zle .end-of-history && colorize-zle-buffer } ; zle -N end-of-history
    undo() { zle .undo && colorize-zle-buffer } ; zle -N undo

    ZLE_COLORED_FUNCTIONS=(
    self-insert
    delete-char
    backward-delete-char
    kill-word
    backward-kill-word
    up-line-or-history
    down-line-or-history
    beginning-of-history
    end-of-history
    undo
    redo
    yank
    )

    for f in $ZLE_COLORED_FUNCTIONS; do
    eval "$f() { zle .$f && colorize-zle-buffer } ; zle -N $f"
    done
  4. @paradoxxxzero paradoxxxzero revised this gist Dec 23, 2010. 1 changed file with 10 additions and 7 deletions.
    17 changes: 10 additions & 7 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -18,6 +18,7 @@ ZLE_HYPHEN_CLI_OPTION='fg=yellow,bold'
    ZLE_DOUBLE_HYPHEN_CLI_OPTION='fg=green,bold'
    ZLE_SINGLE_QUOTED='fg=magenta,bold'
    ZLE_DOUBLE_QUOTED='fg=red,bold'
    ZLE_BACK_QUOTED='fg=cyan,bold'
    ZLE_GLOBING='fg=blue,bold'

    ZLE_DEFAULT='fg=white,bold'
    @@ -49,6 +50,7 @@ colorize-zle-buffer() {
    '-'*) style=$ZLE_HYPHEN_CLI_OPTION;;
    "'"*"'") style=$ZLE_SINGLE_QUOTED;;
    '"'*'"') style=$ZLE_DOUBLE_QUOTED;;
    '`'*'`') style=$ZLE_BACK_QUOTED;;
    *"*"*) style=$ZLE_GLOBING;;
    *) style=$ZLE_DEFAULT;;
    esac
    @@ -61,10 +63,11 @@ colorize-zle-buffer() {

    # Bind the function to ZLE events.
    # Lacks expand / complete hooks
    colorize-hook-self-insert() { builtin zle .self-insert && colorize-zle-buffer }
    colorize-hook-delete-char() { builtin zle .delete-char && colorize-zle-buffer }
    colorize-hook-backward-delete-char() { builtin zle .backward-delete-char && colorize-zle-buffer }

    zle -N self-insert colorize-hook-self-insert
    zle -N delete-char colorize-hook-delete-char
    zle -N backward-delete-char colorize-hook-backward-delete-char
    self-insert() { zle .self-insert && colorize-zle-buffer } ; zle -N self-insert
    delete-char() { zle .delete-char && colorize-zle-buffer } ; zle -N delete-char
    backward-delete-char() { zle .backward-delete-char && colorize-zle-buffer } ; zle -N backward-delete-char
    up-line-or-history() { zle .up-line-or-history && colorize-zle-buffer } ; zle -N up-line-or-history
    down-line-or-history() { zle .down-line-or-history && colorize-zle-buffer } ; zle -N down-line-or-history
    beginning-of-history() { zle .beginning-of-history && colorize-zle-buffer } ; zle -N beginning-of-history
    end-of-history() { zle .end-of-history && colorize-zle-buffer } ; zle -N end-of-history
    undo() { zle .undo && colorize-zle-buffer } ; zle -N undo
  5. @paradoxxxzero paradoxxxzero revised this gist Dec 23, 2010. 1 changed file with 33 additions and 16 deletions.
    49 changes: 33 additions & 16 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -1,21 +1,28 @@
    #!/usr/bin/env zsh
    # ------------------------------------------------------------------------------
    # Fish style live command coloring.
    # From: http://www.zsh.org/mla/users/2010/msg00692.html
    # ------------------------------------------------------------------------------
    #!/bin/zsh

    # Required options.
    setopt extendedglob
    # Copyleft 2010 paradoxxxzero All wrongs reserved
    # https://gist.github.com/752727
    # Fork of https://gist.github.com/586698 by nicoulaj / dingram / roylzuo ...
    # From http://www.zsh.org/mla/users/2010/msg00692.html

    # Token types styles.
    # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135
    ZLE_RESERVED_WORD_STYLE='bold'
    ZLE_ALIAS_STYLE='bold'
    ZLE_BUILTIN_STYLE='bold'
    ZLE_FUNCTION_STYLE='bold'
    ZLE_COMMAND_STYLE='bold'
    ZLE_RESERVED_WORD_STYLE='fg=yellow,bold'
    ZLE_ALIAS_STYLE='fg=magenta,bold'
    ZLE_BUILTIN_STYLE='fg=cyan,bold'
    ZLE_FUNCTION_STYLE='fg=blue,bold'
    ZLE_COMMAND_STYLE='fg=green,bold'
    ZLE_COMMAND_UNKNOWN_TOKEN_STYLE='fg=red,bold'
    ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace')

    ZLE_HYPHEN_CLI_OPTION='fg=yellow,bold'
    ZLE_DOUBLE_HYPHEN_CLI_OPTION='fg=green,bold'
    ZLE_SINGLE_QUOTED='fg=magenta,bold'
    ZLE_DOUBLE_QUOTED='fg=red,bold'
    ZLE_GLOBING='fg=blue,bold'

    ZLE_DEFAULT='fg=white,bold'

    ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace' '§')

    # Recolorize the current ZLE buffer.
    colorize-zle-buffer() {
    @@ -36,18 +43,28 @@ colorize-zle-buffer() {
    *"$cmd is"*) style=$ZLE_COMMAND_STYLE;;
    *) style=$ZLE_COMMAND_UNKNOWN_TOKEN_STYLE;;
    esac
    region_highlight+=("$start_pos $end_pos $style")
    else
    case $arg in
    '--'*) style=$ZLE_DOUBLE_HYPHEN_CLI_OPTION;;
    '-'*) style=$ZLE_HYPHEN_CLI_OPTION;;
    "'"*"'") style=$ZLE_SINGLE_QUOTED;;
    '"'*'"') style=$ZLE_DOUBLE_QUOTED;;
    *"*"*) style=$ZLE_GLOBING;;
    *) style=$ZLE_DEFAULT;;
    esac
    fi
    region_highlight+=("$start_pos $end_pos $style")
    [[ ${${ZLE_TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]}:+yes} = 'yes' ]] && colorize=true
    start_pos=$end_pos
    done
    }

    # Bind the function to ZLE events.
    # Lacks expand / complete hooks
    colorize-hook-self-insert() { builtin zle .self-insert && colorize-zle-buffer }
    colorize-hook-delete-char() { builtin zle .delete-char && colorize-zle-buffer }
    colorize-hook-backward-delete-char() { builtin zle .backward-delete-char && colorize-zle-buffer }
    colorize-hook-vi-backward-delete-char() { builtin zle .vi-backward-delete-char && colorize-zle-buffer }

    zle -N self-insert colorize-hook-self-insert
    zle -N delete-char colorize-hook-delete-char
    zle -N backward-delete-char colorize-hook-backward-delete-char
    zle -N vi-backward-delete-char colorize-hook-vi-backward-delete-char
  6. nicoulaj revised this gist Nov 20, 2010. 1 changed file with 3 additions and 0 deletions.
    3 changes: 3 additions & 0 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,9 @@
    # From: http://www.zsh.org/mla/users/2010/msg00692.html
    # ------------------------------------------------------------------------------

    # Required options.
    setopt extendedglob

    # Token types styles.
    # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135
    ZLE_RESERVED_WORD_STYLE='bold'
  7. nicoulaj revised this gist Nov 20, 2010. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -1,6 +1,7 @@
    #!/usr/bin/env zsh
    # ------------------------------------------------------------------------------
    # Fish style live command coloring.
    # From: http://www.zsh.org/mla/users/2010/msg00692.html
    # ------------------------------------------------------------------------------

    # Token types styles.
  8. @dingram dingram revised this gist Oct 6, 2010. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -42,6 +42,8 @@ colorize-zle-buffer() {
    # Bind the function to ZLE events.
    colorize-hook-self-insert() { builtin zle .self-insert && colorize-zle-buffer }
    colorize-hook-backward-delete-char() { builtin zle .backward-delete-char && colorize-zle-buffer }
    colorize-hook-vi-backward-delete-char() { builtin zle .vi-backward-delete-char && colorize-zle-buffer }

    zle -N self-insert colorize-hook-self-insert
    zle -N backward-delete-char colorize-hook-backward-delete-char
    zle -N vi-backward-delete-char colorize-hook-vi-backward-delete-char
  9. nicoulaj revised this gist Sep 19, 2010. 1 changed file with 6 additions and 5 deletions.
    11 changes: 6 additions & 5 deletions live-command-coloring.sh
    Original file line number Diff line number Diff line change
    @@ -4,11 +4,12 @@
    # ------------------------------------------------------------------------------

    # Token types styles.
    ZLE_RESERVED_WORD_STYLE='fg=none,bold'
    ZLE_ALIAS_STYLE='fg=none,bold'
    ZLE_BUILTIN_STYLE='fg=none,bold'
    ZLE_FUNCTION_STYLE='fg=none,bold'
    ZLE_COMMAND_STYLE='fg=none,bold'
    # See http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#SEC135
    ZLE_RESERVED_WORD_STYLE='bold'
    ZLE_ALIAS_STYLE='bold'
    ZLE_BUILTIN_STYLE='bold'
    ZLE_FUNCTION_STYLE='bold'
    ZLE_COMMAND_STYLE='bold'
    ZLE_COMMAND_UNKNOWN_TOKEN_STYLE='fg=red,bold'
    ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace')

  10. nicoulaj renamed this gist Sep 19, 2010. 1 changed file with 0 additions and 0 deletions.
  11. nicoulaj created this gist Sep 19, 2010.
    46 changes: 46 additions & 0 deletions Fish style live command coloring.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,46 @@
    #!/usr/bin/env zsh
    # ------------------------------------------------------------------------------
    # Fish style live command coloring.
    # ------------------------------------------------------------------------------

    # Token types styles.
    ZLE_RESERVED_WORD_STYLE='fg=none,bold'
    ZLE_ALIAS_STYLE='fg=none,bold'
    ZLE_BUILTIN_STYLE='fg=none,bold'
    ZLE_FUNCTION_STYLE='fg=none,bold'
    ZLE_COMMAND_STYLE='fg=none,bold'
    ZLE_COMMAND_UNKNOWN_TOKEN_STYLE='fg=red,bold'
    ZLE_TOKENS_FOLLOWED_BY_COMMANDS=('|' '||' ';' '&' '&&' 'sudo' 'start' 'time' 'strace')

    # Recolorize the current ZLE buffer.
    colorize-zle-buffer() {
    region_highlight=()
    colorize=true
    start_pos=0
    for arg in ${(z)BUFFER}; do
    ((start_pos+=${#BUFFER[$start_pos+1,-1]}-${#${BUFFER[$start_pos+1,-1]## #}}))
    ((end_pos=$start_pos+${#arg}))
    if $colorize; then
    colorize=false
    res=$(LC_ALL=C builtin type $arg 2>/dev/null)
    case $res in
    *'reserved word'*) style=$ZLE_RESERVED_WORD_STYLE;;
    *'an alias'*) style=$ZLE_ALIAS_STYLE;;
    *'shell builtin'*) style=$ZLE_BUILTIN_STYLE;;
    *'shell function'*) style=$ZLE_FUNCTION_STYLE;;
    *"$cmd is"*) style=$ZLE_COMMAND_STYLE;;
    *) style=$ZLE_COMMAND_UNKNOWN_TOKEN_STYLE;;
    esac
    region_highlight+=("$start_pos $end_pos $style")
    fi
    [[ ${${ZLE_TOKENS_FOLLOWED_BY_COMMANDS[(r)${arg//|/\|}]}:+yes} = 'yes' ]] && colorize=true
    start_pos=$end_pos
    done
    }

    # Bind the function to ZLE events.
    colorize-hook-self-insert() { builtin zle .self-insert && colorize-zle-buffer }
    colorize-hook-backward-delete-char() { builtin zle .backward-delete-char && colorize-zle-buffer }

    zle -N self-insert colorize-hook-self-insert
    zle -N backward-delete-char colorize-hook-backward-delete-char