diff options
| author | kj-sh604 | 2025-07-16 22:10:52 -0400 |
|---|---|---|
| committer | kj-sh604 | 2025-07-16 22:10:52 -0400 |
| commit | 1e204d36c1fab9884f65618ccca019d8cd5f9386 (patch) | |
| tree | 962ebadaa02a15d2f8441b290daf330bfbd48417 /.config/shell | |
| parent | 7c9e54b5366ada655baf8c2b61914182840d6bb6 (diff) | |
refactor: update `zsh-fast-syntax-highlighting` plugin
Diffstat (limited to '.config/shell')
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/.fast-make-targets (renamed from .config/shell/zsh-fast-syntax-highlighting/-fast-make-targets) | 50 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/.fast-read-ini-file (renamed from .config/shell/zsh-fast-syntax-highlighting/fast-read-ini-file) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/.fast-run-command (renamed from .config/shell/zsh-fast-syntax-highlighting/-fast-run-command) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/.fast-run-git-command (renamed from .config/shell/zsh-fast-syntax-highlighting/-fast-run-git-command) | 21 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/.fast-zts-read-all (renamed from .config/shell/zsh-fast-syntax-highlighting/-fast-zts-read-all) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/.github/FUNDING.yml | 4 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/.travis.yml | 13 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/:chroma/-subversion.ch | 252 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/CHANGELOG.md | 95 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/DONATIONS.md | 441 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/README.md | 121 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/THEME_GUIDE.md | 47 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/_fast-theme | 6 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/fast-highlight | 295 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/fast-string-highlight | 35 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh | 71 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/fast-theme | 4 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/share/free_theme.zsh | 61 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/themes/base16.ini | 82 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/themes/default.ini | 2 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-alias.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-alias.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-autoload.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-autoload.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-autorandr.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-autorandr.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-awk.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-awk.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-docker.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-docker.ch) | 2 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-example.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-example.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-fast-theme.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-fast-theme.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-fpath_peq.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-fpath_peq.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-git.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-git.ch) | 331 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-grep.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-grep.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-hub.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-hub.ch) | 2 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-ionice.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-ionice.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-lab.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-lab.ch) | 2 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-make.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-make.ch) | 2 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-nice.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-nice.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-nmcli.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-nmcli.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-node.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-node.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-ogit.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-ogit.ch) | 22 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-perl.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-perl.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-podman.ch | 90 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-precommand.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-precommand.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-printf.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-printf.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-ruby.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-ruby.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-scp.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-scp.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-sh.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-sh.ch) | 18 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-source.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-source.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-ssh.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-ssh.ch) | 7 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-subcommand.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-subcommand.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-subversion.ch | 250 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-vim.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-vim.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-whatis.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch) | 21 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-which.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-which.ch) | 0 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/-zinit.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/-zplugin.ch) | 150 | ||||
| -rw-r--r-- | .config/shell/zsh-fast-syntax-highlighting/→chroma/main-chroma.ch (renamed from .config/shell/zsh-fast-syntax-highlighting/:chroma/main-chroma.ch) | 161 | ||||
| l--------- | .config/shell/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh | 1 |
55 files changed, 1321 insertions, 1338 deletions
diff --git a/.config/shell/zsh-fast-syntax-highlighting/-fast-make-targets b/.config/shell/zsh-fast-syntax-highlighting/.fast-make-targets index 7f905d6..10f8d0a 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/-fast-make-targets +++ b/.config/shell/zsh-fast-syntax-highlighting/.fast-make-targets @@ -5,7 +5,7 @@ local -a TARGETS -_make-expandVars() { +.make-expandVars() { local open close var val front='' rest=$1 while [[ $rest == (#b)[^$]#($)* ]]; do @@ -18,7 +18,7 @@ _make-expandVars() { rest=${rest[3,-1]} continue ;; - (\() # Variable of the form $(foobar) + (\() # Variable of the form $(foobar) open='(' close=')' ;; @@ -71,7 +71,7 @@ _make-expandVars() { } -_make-parseMakefile () { +.make-parseMakefile () { local input var val target dep TAB=$'\t' tmp IFS= while read input @@ -80,17 +80,51 @@ _make-parseMakefile () { # TARGET: dependencies # TARGET1 TARGET2 TARGET3: dependencies ([[*?[:alnum:]$][^$TAB:=%]#:[^=]*) - target=$(_make-expandVars ${input%%:*}) + target=$(.make-expandVars ${input%%:*}) TARGETS+=( ${(z)target} ) ;; esac done } -if [[ -z "${FAST_HIGHLIGHT[chroma-make-cache]}" || $(( EPOCHSECONDS - FAST_HIGHLIGHT[chroma-make-cache-born-at] )) -gt 7 ]]; then - _make-parseMakefile - FAST_HIGHLIGHT[chroma-make-cache-born-at]="$EPOCHSECONDS" - FAST_HIGHLIGHT[chroma-make-cache]="${(j:;:)TARGETS}" +# Cache generated parsing for 1sec per session or globally if configured, per Makefile path. +if [[ -n "${FAST_HIGHLIGHT[chroma-make-cache-global]}" ]]; then + # Determine Makefile path. + # TODO: find a way to expand path and resolve alias - this cause deduplicated cache file. + local makefile_path + makefile_path=${FAST_HIGHLIGHT[chroma-make-custom-dir]%/}/${FAST_HIGHLIGHT[chroma-make-custom-file]} + + # If not absolute, resolve to absolute path + [[ $makefile_path != /* ]] && makefile_path="$PWD/$makefile_path" + + # Generate a safe hash for the cache file name using sha1sum + local makefile_hash + makefile_hash=$(print -n -- "$makefile_path" | sha1sum | awk '{print $1}') + + # Generate a sha1sum hash from the input variable + local input var val target dep TAB=$'\t' tmp IFS= + local input_hash + input_hash=$(print -n -- "$input" | sha1sum | awk '{print $1}') + + # Generate the cache file path. + local cache_file + cache_file="/tmp/fast-highlight-make-cache-${makefile_hash}-${input_hash}" + + if [[ ! -f $cache_file ]]; then + # Clean up old cache files. + rm -rf /tmp/fast-highlight-make-cache-${makefile_hash}-* + # Generate new cache file. + .make-parseMakefile "$input" + print -r -- "${(j:;:)TARGETS}" >| "$cache_file" + fi + FAST_HIGHLIGHT[chroma-make-cache]="$(<$cache_file)" + FAST_HIGHLIGHT[chroma-make-cache-born-at]="0" +else + if [[ -z "${FAST_HIGHLIGHT[chroma-make-cache]}" || $(( EPOCHSECONDS - FAST_HIGHLIGHT[chroma-make-cache-born-at] )) -gt 7 ]]; then + .make-parseMakefile + FAST_HIGHLIGHT[chroma-make-cache-born-at]="$EPOCHSECONDS" + FAST_HIGHLIGHT[chroma-make-cache]="${(j:;:)TARGETS}" + fi fi reply2=( "${(s:;:)FAST_HIGHLIGHT[chroma-make-cache]}" ) diff --git a/.config/shell/zsh-fast-syntax-highlighting/fast-read-ini-file b/.config/shell/zsh-fast-syntax-highlighting/.fast-read-ini-file index 2e57d10..2e57d10 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/fast-read-ini-file +++ b/.config/shell/zsh-fast-syntax-highlighting/.fast-read-ini-file diff --git a/.config/shell/zsh-fast-syntax-highlighting/-fast-run-command b/.config/shell/zsh-fast-syntax-highlighting/.fast-run-command index e251bcc..e251bcc 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/-fast-run-command +++ b/.config/shell/zsh-fast-syntax-highlighting/.fast-run-command diff --git a/.config/shell/zsh-fast-syntax-highlighting/-fast-run-git-command b/.config/shell/zsh-fast-syntax-highlighting/.fast-run-git-command index 604cbea..4a42b97 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/-fast-run-git-command +++ b/.config/shell/zsh-fast-syntax-highlighting/.fast-run-git-command @@ -26,11 +26,24 @@ typeset -ga __lines_list local -a __response -if [[ -z "${FAST_HIGHLIGHT[$2-cache]}" || $(( EPOCHSECONDS - FAST_HIGHLIGHT[$2-cache-born-at] )) -gt ${4:-5} ]]; then - FAST_HIGHLIGHT[$2-cache-born-at]="$EPOCHSECONDS" - if [[ "$(command git rev-parse --is-inside-work-tree 2>/dev/null)" = "true" ]]; then +if [[ $1 == --status ]] { + integer __status=1 + shift +} + +if [[ -z ${FAST_HIGHLIGHT[$2-cache]} || $(( EPOCHSECONDS - FAST_HIGHLIGHT[$2-cache-born-at] )) -gt ${4:-5} ]]; then + FAST_HIGHLIGHT[$2-cache-born-at]=$EPOCHSECONDS + if [[ "$(command git rev-parse --is-inside-work-tree 2>/dev/null)" = true ]]; then __response=( ${${(f)"$(command ${(Qz)${1#+}} 2>/dev/null)"}#$3} ) - [[ "$1" = "+"* ]] && __lines_list+=( "${__response[@]}" ) || __lines_list=( "${__response[@]}" ) + integer retval=$? + if (( __status )) { + __response=( $retval ) + __lines_list=( $retval ) + } else { + [[ "$1" = "+"* ]] && \ + __lines_list+=( "${__response[@]}" ) || \ + __lines_list=( "${__response[@]}" ) + } else __lines_list=() fi diff --git a/.config/shell/zsh-fast-syntax-highlighting/-fast-zts-read-all b/.config/shell/zsh-fast-syntax-highlighting/.fast-zts-read-all index 96c52ab..96c52ab 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/-fast-zts-read-all +++ b/.config/shell/zsh-fast-syntax-highlighting/.fast-zts-read-all diff --git a/.config/shell/zsh-fast-syntax-highlighting/.github/FUNDING.yml b/.config/shell/zsh-fast-syntax-highlighting/.github/FUNDING.yml deleted file mode 100644 index 38474bc..0000000 --- a/.config/shell/zsh-fast-syntax-highlighting/.github/FUNDING.yml +++ /dev/null @@ -1,4 +0,0 @@ -# These are supported funding model platforms - -patreon: psprint -ko_fi: psprint diff --git a/.config/shell/zsh-fast-syntax-highlighting/.travis.yml b/.config/shell/zsh-fast-syntax-highlighting/.travis.yml deleted file mode 100644 index 351b593..0000000 --- a/.config/shell/zsh-fast-syntax-highlighting/.travis.yml +++ /dev/null @@ -1,13 +0,0 @@ -addons: - apt: - packages: - zsh -install: - - mkdir .bin - - curl -L https://github.com/zunit-zsh/zunit/releases/download/v0.8.2/zunit > .bin/zunit - - curl -L https://raw.githubusercontent.com/molovo/revolver/master/revolver > .bin/revolver - - curl -L https://raw.githubusercontent.com/molovo/color/master/color.zsh > .bin/color -before_script: - - chmod u+x .bin/{color,revolver,zunit} - - export PATH="$PWD/.bin:$PATH" -script: zunit diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-subversion.ch b/.config/shell/zsh-fast-syntax-highlighting/:chroma/-subversion.ch deleted file mode 100644 index 57b5674..0000000 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-subversion.ch +++ /dev/null @@ -1,252 +0,0 @@ -# -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ------------------------------------------------------------------------------------------------- -# Copyright (c) 2018 Sebastian Gniazdowski -# Copyright (C) 2019 by Philippe Troin (F-i-f on GitHub) -# All rights reserved. -# -# The only licensing for this file follows. -# -# Redistribution and use in source and binary forms, with or without modification, are permitted -# provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this list of conditions -# and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, this list of -# conditions and the following disclaimer in the documentation and/or other materials provided -# with the distribution. -# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors -# may be used to endorse or promote products derived from this software without specific prior -# written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR -# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR -# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER -# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT -# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -# ------------------------------------------------------------------------------------------------- - -chroma/-subversion.ch/parse-revision() { - setopt local_options extendedglob warn_create_global typeset_silent - local __wrd="$1" __start_pos="$2" __end_pos="$3" __style __start __end - case $__wrd in - (r|)[0-9]##) __style=${FAST_THEME_NAME}mathnum ;; - (HEAD|BASE|COMITTED|PREV)) __style=${FAST_THEME_NAME}correct-subtle ;; - '{'[^}]##'}') __style=${FAST_THEME_NAME}subtle-bg ;; - *) __style=${FAST_THEME_NAME}incorrect-subtle ;; - esac - (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") -} - -chroma/-subversion.ch/parse-target() { - setopt local_options extendedglob warn_create_global typeset_silent - local __wrd="$1" __start_pos="$2" __end_pos="$3" __style __start __end - if [[ $__wrd == *@[^/]# ]] - then - local place=${__wrd%@[^/]#} - local rev=$__wrd[$(($#place+2)),$#__wrd] - if [[ -e $place ]]; then - local __style - [[ -d $place ]] && __style="${FAST_THEME_NAME}path-to-dir" || __style="${FAST_THEME_NAME}path" - (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}-$#rev-1, __start >= 0 )) \ - && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") - fi - (( __start=__start_pos-${#PREBUFFER}+$#place, __end=__end_pos-${#PREBUFFER}-$#rev, __start >= 0 )) \ - && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}for-loop-separator]}") - chroma/-subversion.ch/parse-revision $rev $((__start_pos+$#place+1)) $__end_pos - else - return 1 - fi -} - -chroma/-subversion.ch() { - setopt local_options extendedglob warn_create_global - - # Keep chroma-takever state meaning: until ;, handle highlighting via chroma. - # So the below 8192 assignment takes care that next token will be routed to chroma. - (( next_word = 2 | 8192 )) - - local __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" - local __style - integer __idx1 __idx2 - - (( __first_call )) && { - # Called for the first time - new command. - # FAST_HIGHLIGHT is used because it survives between calls, and - # allows to use a single global hash only, instead of multiple - # global string variables. - FAST_HIGHLIGHT[subversion-command]=$__wrd - FAST_HIGHLIGHT[subversion-option-argument]= - FAST_HIGHLIGHT[subversion-subcommand]= - FAST_HIGHLIGHT[subversion-subcommand-arguments]=0 - - # Set style for region_highlight entry. It is used below in - # '[[ -n "$__style" ]] ...' line, which adds highlight entry, - # like "10 12 fg=green", through `reply' array. - # - # Could check if command `example' exists and set `unknown-token' - # style instead of `command' - __style=${FAST_THEME_NAME}command - - } || { - # Following call, i.e. not the first one - - # Check if chroma should end – test if token is of type - # "starts new command", if so pass-through – chroma ends - [[ "$__arg_type" = 3 ]] && return 2 - - if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then - return 1 - fi - - if [[ "$__wrd" = -* ]]; then - # Detected option, add style for it. - [[ "$__wrd" = --* ]] && __style=${FAST_THEME_NAME}double-hyphen-option || \ - __style=${FAST_THEME_NAME}single-hyphen-option - case $FAST_HIGHLIGHT[subversion-command]/$FAST_HIGHLIGHT[subversion-subcommand] in - svn/) - case $__wrd in - --username|-u) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --password|-p) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --config-(dir|option)) FAST_HIGHLIGHT[subversion-option-argument]=any;; - esac - ;; - svn/?*) - case $__wrd in - --accept) FAST_HIGHLIGHT[subversion-option-argument]=accept;; - --change|-c) FAST_HIGHLIGHT[subversion-option-argument]=revision;; - --changelist|--cl) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --(set-|)depth) FAST_HIGHLIGHT[subversion-option-argument]=depth;; - --diff(3|)-cmd) FAST_HIGHLIGHT[subversion-option-argument]=cmd;; - --editor-cmd) FAST_HIGHLIGHT[subversion-option-argument]=cmd;; - --encoding) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --file) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --limit|-l) FAST_HIGHLIGHT[subversion-option-argument]=number;; - --message|-m) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --native-eol) FAST_HIGHLIGHT[subversion-option-argument]=eol;; - --new|--old) FAST_HIGHLIGHT[subversion-option-argument]=target;; - --revision|-r) FAST_HIGHLIGHT[subversion-option-argument]=revision-pair;; - --show-revs) FAST_HIGHLIGHT[subversion-option-argument]=show-revs;; - --strip) FAST_HIGHLIGHT[subversion-option-argument]=number;; - --with-revprop) FAST_HIGHLIGHT[subversion-option-argument]=revprop;; - esac - ;; - svnadmin/*) - case $__wrd in - --config-dir) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --fs-type) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --memory-cache-size|-M) FAST_HIGHLIGHT[subversion-option-argument]=number;; - --parent-dir) FAST_HIGHLIGHT[subversion-option-argument]=any;; - --revision|-r) FAST_HIGHLIGHT[subversion-option-argument]=revision-pair;; - esac - ;; - svndumpfilter/*) - case $__wrd in - --targets) FAST_HIGHLIGHT[subversion-option-argument]=any;; - esac - ;; - esac - elif [[ -n $FAST_HIGHLIGHT[subversion-option-argument] ]]; then - case $FAST_HIGHLIGHT[subversion-option-argument] in - any) - FAST_HIGHLIGHT[subversion-option-argument]= - return 1 - ;; - accept) - [[ $__wrd = (p(|ostpone)|e(|dit)|l(|aunch)|base|working|recommended|[mt][cf]|(mine|theirs)-(conflict|full)) ]] \ - && __style=${FAST_THEME_NAME}correct-subtle \ - || __style=${FAST_THEME_NAME}incorrect-subtle - ;; - depth) - [[ $__wrd = (empty|files|immediates|infinity) ]] \ - && __style=${FAST_THEME_NAME}correct-subtle \ - || __style=${FAST_THEME_NAME}incorrect-subtle - ;; - number) - [[ $__wrd = [0-9]## ]] \ - && __style=${FAST_THEME_NAME}mathnum \ - || __style=${FAST_THEME_NAME}incorrect-subtle - ;; - eol) - [[ $__wrd = (CR(|LF)|LF) ]] \ - && __style=${FAST_THEME_NAME}correct-subtle \ - || __style=${FAST_THEME_NAME}incorrect-subtle - ;; - show-revs) - [[ $__wrd = (merged|eligible) ]] \ - && __style=${FAST_THEME_NAME}correct-subtle \ - || __style=${FAST_THEME_NAME}incorrect-subtle - ;; - revision) - chroma/-subversion.ch/parse-revision $__wrd $__start_pos $__end_pos - ;; - revision-pair) - local -a match mbegin mend - if [[ $__wrd = (#b)(\{[^}]##\}|[^:]##)(:)(*) ]]; then - chroma/-subversion.ch/parse-revision $match[1] $__start_pos $(( __end_pos - ( mend[3]-mend[2] ) - 1 )) - chroma/-subversion.ch/parse-revision $match[3] $(( __start_pos + ( mbegin[3]-mbegin[1] ) )) $__end_pos - (( __start=__start_pos-${#PREBUFFER}+(mbegin[2]-mbegin[1]), __end=__end_pos-${#PREBUFFER}-(mend[3]-mend[2]), __start >= 0 )) \ - && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}for-loop-separator]}") - else - chroma/-subversion.ch/parse-revision $__wrd $__start_pos $__end_pos - fi - ;; - target) - chroma/-subversion.ch/parse-target $__wrd $__start_pos $__end_pos || return $? - ;; - cmd) - this_word=1 - return 1 - ;; - esac - FAST_HIGHLIGHT[subversion-option-argument]= - elif [[ -z $FAST_HIGHLIGHT[subversion-subcommand] ]] - then - FAST_HIGHLIGHT[subversion-subcommand]=$__wrd - local subcmds - case $FAST_HIGHLIGHT[subversion-command] in - svn) subcmds='(add|auth|blame|praise|annotate|ann|cat|changelist|cl|checkout|co|cleanup|commit|ci|copy|cp|delete|del|remove|rm|diff|di|export|help|\?|h|import|info|list|ls|lock|log|merge|mergeinfo|mkdir|move|mv|rename|ren|patch|propdel|pdel|pd|propedit|pedit|pe|propget|pget|pg|proplist|plist|pl|propset|pset|ps|relocate|resolve|resolved|revert|status|stat|st|switch|sw|unlock|update|up|upgrade|x-shelf-diff|x-shelf-drop|x-shelf-list|x-shelves|x-shelf-list-by-paths|x-shelf-log|x-shelf-save|x-shelve|x-unshelve)' ;; - svnadmin) subcmds="(crashtest|create|delrevprop|deltify|dump|dump-revprops|freeze|help|\?|h|hotcopy|info|list-dblogs|list-unused-dblogs|load|load-revprops|lock|lslocks|lstxns|pack|recover|rmlocks|rmtxns|setlog|setrevprop|setuuid|unlock|upgrade|verify)";; - svndumpfilter) subcmds='(include|exclude|help|\?)';; - esac - [[ $FAST_HIGHLIGHT[subversion-subcommand] = $~subcmds ]] \ - && __style=${FAST_THEME_NAME}subcommand \ - || __style=${FAST_THEME_NAME}incorrect-subtle - FAST_HIGHLIGHT[subversion-subcommand-arguments]=0 - else - (( FAST_HIGHLIGHT[subversion-subcommand-arguments]+=1 )) - if [[ ( $FAST_HIGHLIGHT[subversion-subcommand] == (checkout|co|export|log|merge|switch|sw) && $FAST_HIGHLIGHT[subversion-subcommand-arguments] -eq 1 ) \ - || $FAST_HIGHLIGHT[subversion-subcommand] == (blame|praise|annotate|ann|cat|copy|cp|diff|info|list|ls|mergeinfo) ]]; then - chroma/-subversion.ch/parse-target $__wrd $__start_pos $__end_pos || return $? - else - return 1 - fi - fi - } - - # Add region_highlight entry (via `reply' array). - # If 1 will be added to __start_pos, this will highlight "oken". - # If 1 will be subtracted from __end_pos, this will highlight "toke". - # $PREBUFFER is for specific situations when users does command \<ENTER> - # i.e. when multi-line command using backslash is entered. - # - # This is a common place of adding such entry, but any above code can do - # it itself (and it does in other chromas) and skip setting __style to - # this way disable this code. - [[ -n "$__style" ]] && (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") - - # We aren't passing-through, do obligatory things ourselves. - # _start_pos=$_end_pos advainces pointers in command line buffer. - # - # To pass through means to `return 1'. The highlighting of - # this single token is then done by fast-syntax-highlighting's - # main code and chroma doesn't have to do anything. - (( this_word = next_word )) - _start_pos=$_end_pos - - return 0 - - # vim:ft=zsh:et:sw=4 -} diff --git a/.config/shell/zsh-fast-syntax-highlighting/CHANGELOG.md b/.config/shell/zsh-fast-syntax-highlighting/CHANGELOG.md index b2a7665..993eaa7 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/CHANGELOG.md +++ b/.config/shell/zsh-fast-syntax-highlighting/CHANGELOG.md @@ -2,14 +2,14 @@ **2018-08-09** -Added ideal string highlighting – FSH now handles any legal quoting and combination of `"`,`'` and `\` when -highlighting program arguments. See the introduction for an example (item #14). +Added ideal string highlighting – FSH now handles any legal quoting and combination of `"`,`'` and `\` when highlighting +program arguments. See the introduction for an example (item #14). **2018-08-02** Global aliases are now supported: - + **2018-08-01** @@ -27,74 +27,77 @@ set_fast_theme() { } ``` -If you have set theme before an update of styles (e.g. recent addition of bracket highlighting) -then please repeat `fast-theme {theme}` call to regenerate theme files. (**2018-08-09**: FSH -now has full user-theme support, refer to [appropriate section of README](#customization)). +If you have set theme before an update of styles (e.g. recent addition of bracket highlighting) then please repeat +`fast-theme {theme}` call to regenerate theme files. (**2018-08-09**: FSH now has full user-theme support, refer to +[appropriate section of README](#customization)). **2018-07-30** Ideal highlighting of brackets (pairing, etc.) – no quoting can disturb the result: - + -`FAST_HIGHLIGHT[use_brackets]=1` to enable this feature (**2018-07-31**: not needed anymore, this highlighting is active by default). +`FAST_HIGHLIGHT[use_brackets]=1` to enable this feature (**2018-07-31**: not needed anymore, this highlighting is active +by default). **2018-07-21** -Chroma architecture now supports aliases. You can have `alias mygit="git commit"` and when `mygit` -will be invoked everything will work as expected (Git chroma will be ran). +Chroma architecture now supports aliases. You can have `alias mygit="git commit"` and when `mygit` will be invoked +everything will work as expected (Git chroma will be ran). **2018-07-11** -There were problems with Ctrl-C not working when using FSH. After many days I've found a fix -for this, it's pushed to master. +There were problems with Ctrl-C not working when using FSH. After many days I've found a fix for this, it's pushed to +master. -Second, asynchronous path checking (useful on e.g. slow network drives, or when there are many files in directory) -is now optional. Set `FAST_HIGHLIGHT[use_async]=1` to enable it. This saves some users from Zshell crashes -– there's an unknown bug in Zsh. +Second, asynchronous path checking (useful on e.g. slow network drives, or when there are many files in directory) is +now optional. Set `FAST_HIGHLIGHT[use_async]=1` to enable it. This saves some users from Zshell crashes – there's an +unknown bug in Zsh. **2018-06-09** -New chroma functions: `awk`, `make`, `perl`, `vim`. Checkout the [video](https://asciinema.org/a/186234), -it shows functionality of `awk` – compiling of code and NOT running it. Perl can do this too: +New chroma functions: `awk`, `make`, `perl`, `vim`. Checkout the [video](https://asciinema.org/a/186234), it shows +functionality of `awk` – compiling of code and NOT running it. Perl can do this too: [video](https://asciinema.org/a/186098). **2018-06-06** -FSH gained a new architecture – "chroma functions". They are similar to "completion functions", i.e. they -are defined **per-command**, but instead of completing that command, they colorize it. Two chroma exist, -for `Git` ([video](https://asciinema.org/a/185707), [video](https://asciinema.org/a/185811)) and for `grep` +FSH gained a new architecture – "chroma functions". They are similar to "completion functions", i.e. they are defined +**per-command**, but instead of completing that command, they colorize it. Two chroma exist, for `Git` +([video](https://asciinema.org/a/185707), [video](https://asciinema.org/a/185811)) and for `grep` ([video](https://asciinema.org/a/185942)). Checkout -[example chroma](https://github.com/zdharma/fast-syntax-highlighting/blob/master/chroma/-example.ch) if you -would like to highlight a command. +[example chroma](https://github.com/zdharma/fast-syntax-highlighting/blob/master/chroma/-example.ch) if you would like +to highlight a command. - + **2018-06-01** -Highlighting of command substitution (i.e. `$(...)`) with alternate theme – two themes at once! It was just white before: +Highlighting of command substitution (i.e. `$(...)`) with alternate theme – two themes at once! It was just white +before: - + -To select which theme to use for `$(...)` set the key `secondary=` in [theme ini file](https://github.com/zdharma/fast-syntax-highlighting/blob/master/themes/free.ini#L7). -All shipped themes have this key set (only the `default` theme doesn't use second theme). +To select which theme to use for `$(...)` set the key `secondary=` in +[theme ini file](https://github.com/zdharma/fast-syntax-highlighting/blob/master/themes/free.ini#L7). All shipped themes +have this key set (only the `default` theme doesn't use second theme). Also added correct highlighting of descriptor-variables passed to `exec`: - + **2018-05-30** -For-loop is highlighted, it has separate settings in [theme file](https://github.com/zdharma/fast-syntax-highlighting/blob/master/themes/free.ini). +For-loop is highlighted, it has separate settings in +[theme file](https://github.com/zdharma/fast-syntax-highlighting/blob/master/themes/free.ini). - + **2018-05-27** -Added support for 256-color themes. There are six themes shipped with FSH. The command to -switch theme is `fast-theme {theme-name}`, it has a completion which lists available themes -and options. Checkout [asciinema recording](https://asciinema.org/a/183814) that presents -the themes. +Added support for 256-color themes. There are six themes shipped with FSH. The command to switch theme is +`fast-theme {theme-name}`, it has a completion which lists available themes and options. Checkout +[asciinema recording](https://asciinema.org/a/183814) that presents the themes. **2018-05-25** @@ -110,18 +113,18 @@ FAST_BLIST_PATTERNS[/mount/disk2/*]=1 Assign colorizing now spans to variables defined by `typeset`, `export`, `local`, etc.: - + -Also, `zcalc` has a separate math mode and specialized highlighting – no more light-red colors because of -treating `zcalc` like a regular command-line: +Also, `zcalc` has a separate math mode and specialized highlighting – no more light-red colors because of treating +`zcalc` like a regular command-line: - + **2018-05-22** Array assignments were still boring, so I throwed in bracked colorizing: - + **2018-05-22**<a name="assign-update"></a> @@ -131,14 +134,14 @@ Assignments are no more one-colour default-white. When used in assignment, highl - strings (double-quoted and single-quoted), - math-mode (`val=$(( ... ))`). - + **2018-01-06** -Math mode is highlighted – expressions `(( ... ))` and `$(( ... ))`. Empty variables are colorized as red. -There are 3 style names (fields of -[FAST_HIGHLIGHT_STYLES](https://github.com/zdharma/fast-syntax-highlighting/blob/master/fast-highlight#L34) -hash) for math-variable, number and empty variable (error): `mathvar`, `mathnum`, `matherr`. You can set -them (like the animation below shows) to change colors. +Math mode is highlighted – expressions `(( ... ))` and `$(( ... ))`. Empty variables are colorized as red. There are 3 +style names (fields of +[FAST_HIGHLIGHT_STYLES](https://github.com/zdharma/fast-syntax-highlighting/blob/master/fast-highlight#L34) hash) for +math-variable, number and empty variable (error): `mathvar`, `mathnum`, `matherr`. You can set them (like the animation +below shows) to change colors. - + diff --git a/.config/shell/zsh-fast-syntax-highlighting/DONATIONS.md b/.config/shell/zsh-fast-syntax-highlighting/DONATIONS.md deleted file mode 100644 index fc22058..0000000 --- a/.config/shell/zsh-fast-syntax-highlighting/DONATIONS.md +++ /dev/null @@ -1,441 +0,0 @@ -<!-- START doctoc generated TOC please keep comment here to allow auto update --> -<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE --> -**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - -- [2018-08-14, received $30](#2018-08-14-received-30) -- [2018-08-03, received $8](#2018-08-03-received-8) -- [2018-08-02, received $3 from Patreon](#2018-08-02-received-3-from-patreon) -- [2018-07-31, received $7](#2018-07-31-received-7) -- [2018-07-28, received $2](#2018-07-28-received-2) -- [2018-07-25, received $3](#2018-07-25-received-3) -- [2018-07-20, received $3](#2018-07-20-received-3) -- [2018-06-17, received ~$155 (200 CAD)](#2018-06-17-received-155-200-cad) -- [2018-06-10, received $10](#2018-06-10-received-10) -- [2018-05-25, received $50](#2018-05-25-received-50) - -<!-- END doctoc generated TOC please keep comment here to allow auto update --> - -Below are reports about what is being done with donations, i.e. which commits -are created thanks to them, which new features are added, etc. From the money -I receive I buy myself coffee and organize the time to work on the requested -features, sometimes many days in a row. - -## 2018-08-14, received $30 - - * **Project**: **[Zplugin](https://github.com/zdharma/zplugin)** - * **Goal**: Create a binary Zsh module with one Zplugin optimization and optionally some - other features. - * **Status**: The job is done. - -Thanks to this donation I have finally started to code **[binary Zplugin module]( -https://github.com/zdharma/zplugin#quick-start-module-only)**, which is a big step onward -in evolution of Zplugin. I've implemented and published the module with 3 complete -features: 1) `load` optimization, 2) autocompilation of scripts, 3) profiling of script -load times. - -Commit list: -``` -2018-08-22 7b96fad doc: mod-install.sh -2018-08-22 ba1ba64 module: Update zpmod usage text -2018-08-22 b0d72e8 zplugin,*autoload: `module' command, manages new zdharma/zplugin module -2018-08-22 706bbb3 Update Zsh source files to latest -2018-08-20 b77426f module: source-study builds report with milliseconds without fractions -2018-08-20 c3cc09b module: Updated zpmod_usage, i.a. with `source-study' sub-command -2018-08-20 6190295 module: Go back to subcommand-interface to `zpmod'; simple option parser -2018-08-20 881005f module: Report on sourcing times is shown on `zpmod -S`. Done generation -2018-08-19 e5d046a module: Correct conditions on zwc file vs. script file (after stats) -2018-08-19 1282c21 module: Duration of sourcing a file is measured and stored into a hash -2018-08-18 e080153 module: Overload both `source' and `.' builtins -2018-08-18 580efb8 module: Invoke bin_zcompile with -U option (i.e. no alias expansion) -2018-08-18 b7d9836 module: Custom `source' ensures script is compiled, compiles if not -2018-08-18 1e75a47 module: Code cleanup, vim folding -2018-08-18 a4a02f3 module: Finally working `source'/`.' overload (used options translating) -2018-08-16 99bba56 module: zpmod_usage gained content -2018-08-16 04703cd module: Add the main builtin zpmod with report-append which is working -2018-08-16 cd6dc19 module: my_ztrdup_glen, zp_unmetafy_zalloc -2018-08-16 6d44e36 module: Cleanup, `source' overload after patron leoj3n restarted module -``` - -## 2018-08-03, received $8 - - * **Project**: **[zdharma/history-search-multi-word](https://github.com/zdharma/history-search-multi-word)** - * **Goal**: Allow calling `zle reset-prompt` (Zshell feature). - * **Status**: The job is done. - -A user wanted to be able to call `reset-prompt` Zshell widget without disturbing my project -`history-search-multi-word`. I've implemented the necessary changes to HSMW. - -Commit list: - -``` -2018-08-04 9745d3d hsmw: reset-prompt-protect zstyle – allow users to run zle reset-prompt -2018-08-04 ce48a53 hsmw: More typo-like lackings of % substitution -2018-08-04 7e2d79b hsmw: A somewhat typo, missing % substitution -``` - -## 2018-08-02, received $3 from Patreon - - * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** - * **Goal**: No goal set up. - * **Status**: Bug-fixing work. - -I did bug-fixing run on `fast-syntax-highlighting`, spotted many small and sometimes important things to -improve. Did one bigger thing – added global-aliases functionality. - -Commit list: - -``` -2018-08-02 1e854f5 -autoload.ch: Don't check existence for arguments that are variables -2018-08-02 14cdc5e *-string-*: Support highlighter cooperation in presence of $PREBUFFER -2018-08-02 2d8f0e4 *-highlight: Correctly highlight $VAR, $~VAR, ${+VAR}, etc. in strings -2018-08-02 e3032d9 *-highlight: ${#PREBUFFER} -> __PBUFLEN, equal performance -2018-08-02 f0a7121 *-highlight: Make case conditions and brackets highlighter compatible -2018-08-02 781f68e *-highlight: Recognize more case-item-end tokens -2018-08-02 206c122 *-highlight: Remove unused 4th __arg_type -2018-08-02 c6da477 *-string-*: Handle 'abc\' – no slash-quoting here. Full quoting support -2018-08-02 52e0176 *-string-*: Fix bug, third level was getting wrong style -2018-08-02 5edbfae -git.ch: Support "--message=..." syntax (commit) -2018-08-02 669d4b7 -git.ch: Handle "--" argument (stops options) -2018-08-02 4fae1f2 -make.ch: Handle make's -f option -2018-08-02 3fd32fe -make.ch: Handle make's -C option -2018-08-02 31751f5 -make.ch: Recognize options that obtain argument -2018-08-02 e480f18 -make.ch: Fix reply-var clash, gained consistency -2018-08-02 0e8bc1e Updated README.md -2018-08-02 eee0034 images: global-alias.png -2018-08-02 00b41ef *-highlight,themes,fast-theme: Support for global aliases #41 -``` - -## 2018-07-31, received $7 - - * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** - * **Goal**: Implement ideal brackets highlighting. - * **Status**: The job is done. - -When a source code is edited e.g. in `Notepad++` or some IDE, then most often brackets are somehow matched to -each other, so that the programmer can detect mistakes. `Fast-syntax-highlighting` too gained that feature. It -was done in such a way that FSH cannot make any mistake, colors will perfectly match brackets to each other. - -Commit list: - -``` -2018-07-31 2889860 *-highlight: Correct place to initialize $_FAST_COMPLEX_BRACKETS -2018-07-31 2bde2a9 Performance status -15/8/8 -2018-07-31 5078261 *-highlight,README: Brackets highlighter active by default -2018-07-31 2ee3073 *-highlight,*string-*: Brackets in [[..]], ((..)), etc. handled normally -2018-07-31 776b12d plugin.zsh: $_ZSH_HIGHLIGHT_MAIN_CACHE -> $_FAST_MAIN_CACHE -2018-07-30 2867712 plugin.zsh: Fix array parameter created without declaring #43 -2018-07-30 cbe5fc8 Updated README.md -2018-07-30 2bd3291 images: brackets.gif -2018-07-30 ef23a96 *-string-*: Bug-fix, correctly use theme styles -2018-07-30 9046f82 plugin.zsh: Attach the new brackets highlighter; F_H[use_brackets]=1 -2018-07-30 b33a5fd fast-theme: Support 4 new styles (for brackets) -2018-07-30 a03f004 themes: Add 4 new styles (brackets) -2018-07-30 2448cdc *-string-*: Additional highlight of bracket under cursor; more styles -2018-07-30 5e1795e *-string-*: Highlighter for brackets, handles all quotings; detached -``` - -## 2018-07-28, received $2 - - * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** - * **Goal**: Distinguish file and directory when highlighting - * **Status**: The job is done. - -A user requested that when `fast-syntax-highlighting` colorizes the command line it should use different -styles (e.g. colors) for token that's a *file* and that's a *directory*. It was a reasonable idea and I've -implemented it. - -Commit list: -``` -2018-07-28 7f48e04 themes: Extend all themes with new style `path-to-dir' -2018-07-28 c7c6a91 fast-theme: Support for new style `path-to-dir' -2018-07-28 264676c *-highlight: Differentiate path and to-dir path. New style: path-to-dir -``` - -## 2018-07-25, received $3 - - * **Project**: **[zdharma/zshelldoc](https://github.com/zdharma/zshelldoc)** - * **Goal**: Implement documenting of used environment variables. - * **Status**: The job is done. - -Zshelldoc generates code-documentation like Doxygen or Javadoc, etc. User requested a -new feature: the generated docs should enumerate environment variables used and/or -exported by every function. Everything went fine and this feature has been implemented. - -Commit list: - -``` -2018-07-26 f63ea25 Updated README.md -2018-07-26 3af0cf7 *detect: Get `var' from ${var:-...} and ${...:+${var}} and other subst -2018-07-25 2932510 *adoc: Better language in output document (about exported vars) #5 -2018-07-25 f858dd8 *adoc: Include (in the output document) data on env-vars used #5 -2018-07-25 80e3763 *adoc: Include data on exports (environment) in the output document #5 -2018-07-25 ca576e2 *detect: Detect which env-vars are used, store meta-data in data/ #5 -2018-07-25 f369dcc *detect: Function `find-variables' reported "$" as a variable, fixed #5 -2018-07-25 e243dab *detect: Function `find-variables' #5 -2018-07-25 5b34bb1 *transform: Detect exports done by function/script-body, store #5 -``` - -## 2018-07-20, received $3 - - * **Project**: **[zdharma/zshelldoc](https://github.com/zdharma/zshelldoc)** - * **Goal**: Implement stripping of leading `#` char from functions' descriptions. - * **Status**: The job is done. - -A user didn't like that functions' descriptions in the JavaDoc-like document (generated with Zshelldoc) all -contain a leading `#` character. I've added stripping of this character (it is there in the processed source -code) controlled by a new Zshelldoc option. - -Commit list: -``` -2018-07-20 172c220 zsd,*adoc,README: Option --scomm to strip "#" from function descriptions -``` - -## 2018-06-17, received ~$155 (200 CAD) - - * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** - * **Goal**: No goal set up. - * **Status**: Done intense research. - -I've created 2 new branches: `Hue-optimization` (33 commits) and `Tidbits-feature` (22 commits). Those were -branches with architectural changes and extraordinary features. The changes yielded to be too slow, and I had -to withdraw the merge. Below are fixing and optimizing commits (i.e. the valuable ones) that I've restored -from the two branches into master. - -Commit list: -``` -2018-07-21 dab6576 *-highlight: Merge-restore: remove old comments -2018-07-21 637521f *-highlight: Merge-restore: a threshold on # of zle .redisplay calls -2018-07-21 4163d4d *-highlight: Merge-restore: optimize four $__arg[1] = ... cases -2018-07-21 0f01195 *-highlight: Merge-restore: can remove one (Q) dequoting -2018-07-21 39a4ec6 *-highlight: Merge-restore: $v = A* is faster than $v[1] = A, tests: -2018-07-21 99d6b33 *-highlight: Merge-restore: optimize-out ${var:1} Bash syntax -2018-07-21 719c092 *-highlight: Merge-restore: allow $V/cmd, "$V/cmd, "$V/cmd", "${V}/cmd" -2018-07-21 026941d *-highlight: Merge-restore: stack pop in single instruction, not two -2018-07-21 3467e3d *-highlight: Merge-restore: more reasonable redirection-detecting code -2018-07-21 00d25ee *-highlight: Merge-restore: one active_command="$__arg" not needed (?) -2018-07-21 1daa6b3 *-highlight: Merge-restore: simplify ; and \n code short-paths -2018-07-21 55d65be *-highlight: Merge-restore: proc_buf advancement via patterns (not (i)) -2018-07-21 cc55546 *-highlight: Merge-restore: pattern matching to replace (i) flag -``` - -## 2018-06-10, received $10 - - * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** - * **Goal**: No goal set up. - * **Status**: Done intense experimenting. - -I was working on *chromas* – command-specific colorization. I've added `which` and -`printf` colorization, then added asynchronous path checking (needed on slow network -drives), then coded experimental `ZPath` feature for chromas, but it couldn't be optimized -so I had to resign of it. - -Commit list: -``` -2018-06-12 c4ed1c6 Optimization – the same idea as in previous patch, better method -2018-06-12 c36feef Optimization – a) don't index large buffer, b) with negative index -2018-06-12 2f03829 Performance status 2298 / 1850 -2018-06-12 14f5159 New working feature – ZPath. It requires optimization -2018-06-12 e027c40 -which.ch: One of commands can apparently return via stderr (#27) -2018-06-11 5b8004f New chroma `ruby', works like chroma `perl', checks syntax via -ce opts -2018-06-10 ca2e18b *-highlight: Async path checking has now 8-second cache -2018-06-10 e071469 *-highlight: Remove path-exists queue clearing -2018-06-10 5a6684c *-highlight: Support for asynchronous path checking -2018-06-10 1d7d6f5 New chroma: `printf', highlights special sequences like %s, %20s, etc. -2018-06-10 8f59868 -which.ch: Update main comment on purpose of this chroma -2018-06-10 5f4ece2 -which.ch: Added `whatis', it has only 1st line if output used -2018-06-10 e2d173e -which.ch: Uplift: handle `which' called on a function, /usr/bin/which -``` - -## 2018-05-25, received $50 - - * **Project**: **[zdharma/fast-syntax-highlighting](https://github.com/zdharma/fast-syntax-highlighting)** - * **Goal**: No goal set up. - * **Status**: New ideas and features. - -I was working from May, 25 to June, 9 and came up with key ideas and implemented them. First were *themes* -that were very special because they were using `INI` files instead of some Zsh-script format. Creating themes -for `fast-syntax-highlighting` is thus easy and fun. Then I came up with *chromas*, command-specific -highlighting, which redefine how syntax-highlighting for Zshell works – detailed highlighting for e.g. Git -became possible, the user is informed about e.g. a mistake even before running a command. Overall 178 commits -in 16 days. - -``` -2018-06-09 3f72e6c -git.ch: `revert' works almost like `checkout', attach `revert' there -2018-06-09 b892743 Updated CHROMA_GUIDE.adoc -2018-06-09 f05643d Revert "Revert "Updated CHROMA_GUIDE.md"" -2018-06-09 729bf7f Revert "Revert "CHROMA_GUIDE: Remove redundant comments, uplift"" -2018-06-09 48a4e0c Revert "CHROMA_GUIDE: Remove redundant comments, uplift" -2018-06-09 55ede0a Revert "Updated CHROMA_GUIDE.md" -2018-06-09 17a28ba New chroma `-docker.ch' that verifies image ID passed to `image rm' -2018-06-09 868812a -make.ch,*-make-targets: Check Makefile exists, use 7 second cache, #24 -2018-06-09 73df278 -sh.ch: Attach fish, has -c option, though different syntax, let's try -2018-06-09 3a73b8e Updated CHROMA_GUIDE.md -2018-06-09 29d04c8 CHROMA_GUIDE: Remove redundant comments, uplift -2018-06-09 22ce1d8 -sh.ch,*-highlight: Attach to 2 other shells, Zsh and Bash -2018-06-09 f54e44f New chroma `-sh.ch', colorizes code passed to `sh' with -c option -2018-06-09 f5d2375 CHROMA_GUIDE: Add example code block (rendered broken in mdown) -2018-06-09 08f4b28 CHROMA_GUIDE: Switch to asciidoc (rename) -2018-06-09 4e03609 CHROMA_GUIDE.md -2018-06-09 bbcf2d6 -source.ch: Word "source" should be highlighted as builtin -2018-06-09 6739b8b New chroma – `source' to handle . and source builtins -2018-06-09 b961211 gitignore: ignore more paths -2018-06-09 59d5d09 Updated README.md -2018-06-09 f6d4d19 Updated README.md -2018-06-09 eb31324 Update README.md (figlet logo) -2018-06-09 71dcc5f Performance status 298 / 479 -2018-06-09 00c5f8f *-highlight: Add comments -2018-06-09 232903c -awk.ch: Highlight `sub' function, not working {, } highlighting -2018-06-09 b5241ba *-highlight: Much better $( ) recursion, would say problems-free, maybe -2018-06-08 6c69437 *-highlight: Larger buffer (110 -> 250) for $( ) matching -2018-06-08 f2b7a96 -awk.ch: Syntax check code passed to awk. Awk is very forgiving, though -2018-06-08 c53d8ba -vim.ch: Pass almost everything to big-loop, check if vim exists -2018-06-08 7fbf7cd chroma: New chroma `vim', shows last opened files under prompt -2018-06-08 06e4570 gitignore: Extend .gitignore -2018-06-08 3184ba1 chroma: All chroma functions end chroma mode on e.g. | and similar -2018-06-08 070077d *-highlight,-example.ch: Rename arg_type -> __arg_type, use it to end -2018-06-08 6c2411e -awk.ch: Use the new theme style `subtle-bg' -2018-06-08 9ec8d63 themes: All themes (remaining 4) to support `subtle-bg' style -2018-06-08 66e848b fast-theme: New theme key `subtle-bg', default & clean.ini support it -2018-06-08 1e794f9 -awk.ch: More keywords highlighted -2018-06-08 f3bbaca -awk.ch: Don't highlight keywords when they only contain proper keyword -2018-06-08 e4d5283 -awk.ch: Fix mistake (indices), was highlighting 1 extra trailing letter -2018-06-08 eebbb19 -awk.ch: Initialize FSH_LIST -2018-06-08 8ec24ca *-highlight: Missing math function for awk -2018-06-08 d8e423a -awk.ch: Highlight more keywords, via more general code -2018-06-07 ee26e66 Commit missing -fast-make-targets -2018-06-07 9d4f2b5 New chroma `-awk.ch', colorizes regex characters and a keyword (print) -2018-06-07 def5133 -example.ch: Add comments -2018-06-07 f31a2d0 New chroma -make.ch, verifies if target is correct -2018-06-07 623b8ce -perl.ch: Use correct keys in FAST_HIGHLIGHT hash -2018-06-07 090f420 themes: Make all themes provide {in,}correct-subtle styles -2018-06-07 2201fb6 New -perl.ch chroma, syntax-checks perl code; 2 new theme entries -2018-06-06 4b9598e *-highlight: Fix bug in math highlight – allow variables starting with _ -2018-06-06 708afec *-highlight: Fix FAST_BLIST_PATTERNS not expanding path to absolute one -2018-06-06 caef05a -example.ch: Update, fix typos, remove unused code -2018-06-06 3fb192a Updated README.md -2018-06-06 6de0c82 images: git_chroma.png -2018-06-06 2852fdd -grep.ch (new): Special highlighting for grep – -grep.ch chroma function -2018-06-06 f216785 -example.ch: Added comments -2018-06-06 4ab5b36 -example.ch: Add comments -2018-06-06 380cd12 -example.ch: Added comments -2018-06-06 c8947cc -example.ch: Add comments -2018-06-06 f2e273e -example.ch: Add comments -2018-06-06 2f3565b plugin.zsh: Fix parse error -2018-06-06 4f1a9bd plugin.zsh: Added $fpath handling, to match what README contains -2018-06-06 cc9adb5 -example.ch: Change and extend comments -2018-06-06 3128fff -git.ch: More intelligent `checkout' highlighting – ref is first -2018-06-06 4b6f54b -git.ch: Support for `checkout' subcommand -2018-06-06 1930d37 -example.ch: Added example chroma function -2018-06-05 d79cd85 -git.ch: Add comments -2018-06-05 1473c9e -git.ch: Add comments -2018-06-05 0cb1419 -git.ch: Message passed after -m is checked for the 72 chars boundary -2018-06-05 3f99944 -git.ch: Architectural uplift of git chroma -2018-06-05 e044d13 -git.ch: Single place to add entry to $reply (target: region_highlight) -2018-06-05 3a84364 -git.ch: Handle quoted non-option arguments, also partly quoted: "abc -2018-06-05 d635bf4 -fast-run-git-command, it handles cache automatically, decimates source -2018-06-05 102ea78 -git.ch: Smart handling of `git push', remotes and branches are verified -2018-06-04 be88850 Performance status [+] 39+77=116 / -26+24=-2 -2018-06-04 0e033f8 Experimental chroma support, currently active only on command `git' -2018-06-04 43ae221 *-highlight: Emacs mode-line -2018-06-04 938ad29 test: New "-git" parsing option, test results, -git.ch included -2018-06-04 e433fbc fast-theme: Explicitly return 0; added Emacs mode-line -2018-06-04 66e9b3c *-highlight: Detection of $( ) now doesn't go for $(( )) as a candidate -2018-06-04 488a580 chroma: Empty chroma function for `git' -2018-06-04 f54d770 *-highlight: Rename $cur_cmd to $active_command -2018-06-04 3f24e68 *-highlight: Make sudo and always-block compatible with `case' handling -2018-06-02 cd82637 themes: forest.ini to support 3 new `case' styles -2018-06-02 e1e993e themes: safari.ini & zdharma.ini to support 3 new `case' styles -2018-06-02 2e78a02 themes: clean.ini & default.ini to support 3 new `case' styles -2018-06-02 c1c3aab themes: free.ini to support 3 new `case' styles -2018-06-02 70a7e18 fast-theme,*-highlight: 3 new styles for `case' higlighting -2018-06-02 8d90dc2 *-highlight: Support for `case' highlighting -2018-06-02 10d291c *-highlight: Softer state manipulation, less rigid =1 etc. assignments -2018-06-02 6159507 *-highlight: Don't highlight closing ) with style `assign' -2018-06-02 1fc2450 *-highlight: One complex math command optimization, top of the loop -2018-06-02 cc49247 *-highlight: Fix improper state after assignment (command | regular) -2018-06-02 02942b8 Updated README.md -2018-06-02 5e28259 images: eval_cmp.png -2018-06-02 df92fed *-highlight: Fix removal of trailing "/' when recursing in eval -2018-06-02 4f61938 Performance status 46 / 44 -2018-06-02 a5ade0e *-highlight: Recursive highlighting of eval string argument -2018-06-02 e91847b *-highlight: Don't recurse when not at main *-process call -2018-06-02 fca8603 *-highlight: Support assignments of arrays when key is taken from array -2018-06-02 5d70f01 *-highlight: Math highlighting recognizes ${+VAR} -2018-06-02 c48eb0d *-highlight: Math colorizing recognizes variables in braces ${HISTISZE} -2018-06-02 53dd85a *-highlight: Allow -- for precommand modifiers command & exec -2018-06-02 d9fe110 *-highlight: Detect globbing also when `##' occurs -2018-06-02 55c923d Performance status 132 / 66 -2018-06-02 3bd8f07 themes: safari.ini to have globbing color specifically selected -2018-06-02 2b55260 themes: free.ini to have globbing color specifically selected -2018-06-02 494868e themes: clean.ini to have globbing color specifically selected -2018-06-01 fca6b3d images: herestring.png #9 -2018-06-01 f9842c1 themes: forest.ini to use underline instead of bg color #9 -2018-06-01 c25c539 themes: Small tune-up of forest & zdharma themes for here-string #9 -2018-06-01 988d504 themes: Rudimentary (all same) configuration of here-string tokens #9 -2018-06-01 99842d2 fast-theme,*-highlight: Support for here-string, can use bg color #9 -2018-06-01 f739c30 Updated README.md -2018-06-01 7fa8451 images: execfd.png execfd_cmp.png -2018-06-01 d7384f1 themes: All themes gained `exec-descriptor=` key, now supported by code -2018-06-01 d66d140 themes: Fix improper effect of s/red/.../ substitution in clean,forest -2018-06-01 f7ee5e2 fast-theme,*-highlight: Support highlighting of {FD} etc. passed to exec -2018-06-01 e5c5534 *-highlight: Proper states for precmd (command,exec) option handling -2018-06-01 647b198 images: New cmdsubst.png -2018-06-01 74bdc4c Updated README.md -2018-06-01 86eb15e images: theme.png -2018-06-01 5169e82 Updated README.md -2018-06-01 1c462b7 Updated README.md -2018-06-01 4c21da4 images: cmdsubst.png -2018-06-01 b39996e *-highlight: Switch theme to secondary when descending into $() #15 -2018-06-01 bf96045 themes: Equip all themes with key `secondary' (an alternate theme) #15 -2018-06-01 aa1b112 fast-theme: Generate secondary theme (from key `secondary' in theme) #15 -2018-06-01 6dd3bd3 *-highlight: Support for multiple active themes #15 -2018-06-01 8a32944 *-highlight: Fix "$() found?" comparison -2018-06-01 3651605 *-highlight: Significant change: the parser is called recursively on $() -2018-05-31 882d88b test,*-highlight: New -ooo performance test; highlighter takes arguments -2018-05-31 5ba1178 *-highlight: Optimization - compute __arg length once -2018-05-30 b2a0126 *-highlight: Allow multiple separate options for `command', `exec' (#10) -2018-05-30 5804e9a *-highlight: Correct state after option for precommand (#10) -2018-05-30 1247b64 *-highlight: Simpler and more accurate option-testing for exec, command (#10) -2018-05-30 d87fed4 *-highlight: Correctly highlight options for `command' and `exec' (#10) -2018-05-30 8c3e75e *-highlight: Double-hyphen (--) stops option recognition and colorizing -2018-05-30 1c5a56c *-highlight: Support ${VAR} at command position (not only $VAR) -2018-05-30 f19d761 Updated README.md -2018-05-30 4a27351 images: for-loop -2018-05-30 4d650de themes: zdharma.ini to support for-loop -2018-05-30 45cafbc themes: safari.ini to support for-loop -2018-05-30 8bb9ee0 themes: free.ini to support for-loop -2018-05-30 f25a059 themes: forest.ini to support for-loop -2018-05-29 093d79e themes: default.ini to support for-loop -2018-05-29 446cb7b clean.ini,fast-theme: Clean-theme & theme subsystem to support for-loop -2018-05-29 1bb701f *-highlight: Move $variable highlighting from case to if-block -2018-05-29 b8413e9 *-highlight: For-loop highlighting, working, needs few upgrades -2018-05-28 7bec6e5 *-highlight: Three more simple vs. complex math operation optimizations -2018-05-27 baae683 *-highlight: Optimise complex math command into single one with & and ~ -2018-05-27 2dc3103 *-highlight: Optimise complex math command into single one with & and ~ -2018-05-27 291f905 _fast-theme: Update -t/--test description -2018-05-27 ec305f6 fast-theme: Help message treats about -t/--test -2018-05-27 0e1d19a Updated README.md -2018-05-27 5c3c911 Updated README.md -2018-05-26 76af248 themes: A fix for zdharma theme, 61 -> 63, a lighter color for builtins -2018-05-26 8eca0f2 *fast-theme: Ability to test theme after setting it (-t/--test) -2018-05-26 d3a7922 *-highlight: Fix in_array_assignment setting when closing ) found -2018-05-26 796c482 *-highlight: Make parameters' names exotic blank-var detection to work -2018-05-26 ae3913f _fast-theme: Complete theme names -2018-05-26 d212945 *-highlight,plugin.zsh,default.ini: Uplift of fg=112-fix code -2018-05-26 ee56f65 *-highlight,plugin.zsh: Final fix for fg=112 assignment – use zstyle -2018-05-26 391f5a4 fast-theme: Set `theme' zstyle in `:plugin:fast...' to given theme -2018-05-26 e0dc086 plugin.zsh: Fix the fg=112 assignment done for `variable' style -2018-05-26 17c9286 Updated README.md -2018-05-26 4774c1c fast-theme: Add completion for this function -2018-05-26 d971f39 fast-theme: Detect lack of theme name in arguments -2018-05-26 74f0d4d fast-theme: Use standard option parsing (zparseopts) and typical options -2018-05-26 d9c6180 New theme: `forest' -2018-05-26 419c156 New theme: `zdharma' -2018-05-26 a7735df gitignore -2018-05-26 99db69a New theme: `free' -2018-05-26 73619ff New theme: `clean' -2018-05-25 52307fb Theme support, 1 extra theme – `safari' -2018-05-25 41df55b *-highlight: (k) subscript flag is sufficient, no need for (K) -2018-05-25 cb21c05 Updated README.md -2018-05-25 a580cff *-highlight: FAST_BLIST_PATTERNS -``` diff --git a/.config/shell/zsh-fast-syntax-highlighting/README.md b/.config/shell/zsh-fast-syntax-highlighting/README.md index 6ba4ee0..7f50905 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/README.md +++ b/.config/shell/zsh-fast-syntax-highlighting/README.md @@ -1,16 +1,10 @@ -[](https://www.paypal.me/ZdharmaInitiative) -[](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=D54B3S7C6HGME) -[](https://www.patreon.com/psprint) -<br/>New: You can request a feature when donating, even fancy or advanced ones get implemented this way. [There are -reports](DONATIONS.md) about what is being done with the money received. - -# Fast Syntax Highlighting (F-Sy-H) +# Fast Syntax Highlighting (F-Sy-H) [![Gitter][gitter-image]][gitter-link] Feature rich syntax highlighting for Zsh. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/highlight-much.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/highlight-much.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -22,22 +16,20 @@ Feature rich syntax highlighting for Zsh. - [Installation](#installation) - [Features](#features) - [Performance](#performance) -- [IRC Channel](#irc-channel) ### Other Contents -- [License](https://github.com/zdharma/fast-syntax-highlighting/blob/master/LICENSE) -- [Changelog](https://github.com/zdharma/fast-syntax-highlighting/blob/master/CHANGELOG.md) -- [Theme Guide](https://github.com/zdharma/fast-syntax-highlighting/blob/master/THEME_GUIDE.md) -- [Chroma Guide](https://github.com/zdharma/fast-syntax-highlighting/blob/master/CHROMA_GUIDE.adoc) + +- [License](https://github.com/zdharma-continuum/fast-syntax-highlighting/blob/master/LICENSE) +- [Changelog](https://github.com/zdharma-continuum/fast-syntax-highlighting/blob/master/CHANGELOG.md) +- [Theme Guide](https://github.com/zdharma-continuum/fast-syntax-highlighting/blob/master/THEME_GUIDE.md) +- [Chroma Guide](https://github.com/zdharma-continuum/fast-syntax-highlighting/blob/master/CHROMA_GUIDE.adoc) # News -* 15-06-2019 - - A new architecture for defining the highlighting for **specific commands**: it now - uses **abstract definitions** instead of **top-down, regular code**. The first effect - is the highlighting for the `git` command it is now **maximally faithful**, it - follows the `git` command almost completely. - [Screencast](https://asciinema.org/a/253411) +- 15-06-2019 + - A new architecture for defining the highlighting for **specific commands**: it now uses **abstract definitions** + instead of **top-down, regular code**. The first effect is the highlighting for the `git` command it is now + **maximally faithful**, it follows the `git` command almost completely. [Screencast](https://asciinema.org/a/253411) # Installation @@ -46,20 +38,35 @@ Feature rich syntax highlighting for Zsh. Clone the Repository. ```zsh -git clone https://github.com/zdharma/fast-syntax-highlighting ~/path/to/fsh +git clone https://github.com/zdharma-continuum/fast-syntax-highlighting ~/path/to/fsh ``` And add the following to your `zshrc` file. + ```zsh source ~/path/to/fsh/fast-syntax-highlighting.plugin.zsh ``` -### Zplugin +### Zinit Add the following to your `zshrc` file. ```zsh -zplugin light zdharma/fast-syntax-highlighting +zinit light zdharma-continuum/fast-syntax-highlighting +``` + +Here's an example of how to load the plugin together with a few other popular ones with the use of +[Turbo](https://zdharma-continuum.org/zinit/wiki/INTRODUCTION/#turbo_mode_zsh_62_53), i.e.: speeding up the Zsh startup +by loading the plugin right after the first prompt, in background: + +```zsh +zinit wait lucid for \ + atinit"ZINIT[COMPINIT_OPTS]=-C; zicompinit; zicdreplay" \ + zdharma-continuum/fast-syntax-highlighting \ + blockf \ + zsh-users/zsh-completions \ + atload"!_zsh_autosuggest_start" \ + zsh-users/zsh-autosuggestions ``` ### Antigen @@ -67,26 +74,33 @@ zplugin light zdharma/fast-syntax-highlighting Add the following to your `zshrc` file. ```zsh -antigen bundle zdharma/fast-syntax-highlighting +antigen bundle zdharma-continuum/fast-syntax-highlighting ``` +### Fig + +[Fig](https://fig.io) adds apps, shortcuts, and autocomplete to your existing terminal. + +Install `fast-syntax-highlighting` in just one click. + +<a href="https://fig.io/plugins/other/fast-syntax-highlighting_zdharma-continuum" target="_blank"><img src="https://fig.io/badges/install-with-fig.svg" /></a> + + ### Zgen -Add the following to your `.zshrc` file in the same place you're doing -your other `zgen load` calls in. +Add the following to your `.zshrc` file in the same place you're doing your other `zgen load` calls in. -``` -zgen load zdharma/fast-syntax-highlighting +```zsh +zgen load zdharma-continuum/fast-syntax-highlighting ``` - ### Oh-My-Zsh Clone the Repository. -``` -git clone https://github.com/zdharma/fast-syntax-highlighting.git \ - ~ZSH_CUSTOM/plugins/fast-syntax-highlighting +```zsh +git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git \ + ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/fast-syntax-highlighting ``` And add `fast-syntax-highlighting` to your plugin list. @@ -99,7 +113,7 @@ Switch themes via `fast-theme {theme-name}`. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/theme.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/theme.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -115,7 +129,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/parameter.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/parameter.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -123,7 +137,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/in_string.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/in_string.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -133,7 +147,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/brackets.gif" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/brackets.gif" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -145,7 +159,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/cplx_cond.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/cplx_cond.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -157,18 +171,17 @@ Exact highlighting that recognizes quotings. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/ideal-string.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/ideal-string.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> - ### here-strings <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/herestring.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/herestring.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -180,7 +193,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/execfd_cmp.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/execfd_cmp.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -190,7 +203,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/for-loop-cmp.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/for-loop-cmp.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -202,7 +215,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper 2 lines) <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/function.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/function.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -214,7 +227,7 @@ Comparing to the project `zsh-users/zsh-syntax-highlighting` (the upper line): <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/eval_cmp.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/eval_cmp.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -226,21 +239,21 @@ Highlighting that is specific for a given command. <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/git_chroma.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/git_chroma.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> -The [chromas](https://github.com/zdharma/fast-syntax-highlighting/tree/master/chroma) -that are enabled by default can be found -[here](https://github.com/zdharma/fast-syntax-highlighting/blob/master/fast-highlight#L166). +The [chromas](https://github.com/zdharma-continuum/fast-syntax-highlighting/tree/master/%E2%86%92chroma) that are +enabled by default can be found +[here](https://github.com/zdharma-continuum/fast-syntax-highlighting/blob/master/fast-highlight#L166). ### Math-mode highlighting <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/math.gif" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/math.gif" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> @@ -250,13 +263,14 @@ that are enabled by default can be found <div style="width:100%;background-color:black;border:3px solid black;border-radius:6px;margin:5px 0;padding:2px 5px"> <img - src="https://raw.githubusercontent.com/zdharma/fast-syntax-highlighting/master/images/zcalc.png" + src="https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/images/zcalc.png" alt="image could not be loaded" style="color:red;background-color:black;font-weight:bold" /> </div> # Performance + Performance differences can be observed in this Asciinema recording, where a `10 kB` function is being edited. <div style="width:100%;background-color:#121314;border:3px solid #121314;border-radius:6px;margin:5px 0;padding:2px 5px"> @@ -265,10 +279,5 @@ Performance differences can be observed in this Asciinema recording, where a `10 </a> </div> -## IRC Channel - -Channel `#zplugin@freenode` is a support place for all author's projects. Connect to: -[chat.freenode.net:6697](ircs://chat.freenode.net:6697/%23zplugin) (SSL) or [chat.freenode.net:6667](irc://chat.freenode.net:6667/%23zplugin) - and join #zplugin. - -Following is a quick access via Webchat [](https://kiwiirc.com/client/chat.freenode.net:+6697/#zplugin) +[gitter-image]: https://badges.gitter.im/zdharma-continuum/community.svg +[gitter-link]: https://gitter.im/zdharma-continuum/community diff --git a/.config/shell/zsh-fast-syntax-highlighting/THEME_GUIDE.md b/.config/shell/zsh-fast-syntax-highlighting/THEME_GUIDE.md index 1d66dac..7f53c53 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/THEME_GUIDE.md +++ b/.config/shell/zsh-fast-syntax-highlighting/THEME_GUIDE.md @@ -1,14 +1,13 @@ # Theme Guide for F-Sy-H -`fast-theme` tool is used to select a theme. There are 6 shipped themes, they can be listed with `fast-theme -l`. -Themes are basic [INI files](https://github.com/zdharma/fast-syntax-highlighting/tree/master/themes) where each -key is a *style*. -Besides shipped themes, user can point this tool to any other theme, by simple `fast-theme ~/mytheme.ini`. To +`fast-theme` tool is used to select a theme. There are 6 shipped themes, they can be listed with `fast-theme -l`. Themes +are basic [INI files](https://github.com/zdharma/fast-syntax-highlighting/tree/master/themes) where each key is a +*style*. Besides shipped themes, user can point this tool to any other theme, by simple `fast-theme ~/mytheme.ini`. To obtain template to work on when creating own theme, issue `fast-theme --copy-shipped-theme {theme-name}`. -To alter just a few styles and not create a whole new theme, use **overlay**. What is overlay? It is in the same -format as full theme, but can have only a few styles defined, and these styles will overwrite styles in main-theme. -Example overlay file: +To alter just a few styles and not create a whole new theme, use **overlay**. What is overlay? It is in the same format +as full theme, but can have only a few styles defined, and these styles will overwrite styles in main-theme. Example +overlay file: ```ini ; overlay.ini @@ -32,8 +31,8 @@ HOME: = ~/.fsh/ OPT: = /opt/local/share/fsh/ ``` -So for example, issue `fast-theme XDG:overlay` to load `~/.config/fsh/overlay.ini` as overlay. The `.ini` -extension is optional. +So for example, issue `fast-theme XDG:overlay` to load `~/.config/fsh/overlay.ini` as overlay. The `.ini` extension is +optional. ## Secondary Theme @@ -50,27 +49,25 @@ unknown-token = red,bold secondary = zdharma ``` -Secondary theme (`zdharma` in the example) will be used for highlighting of argument for `eval` -and of `$( ... )` interior (i.e. of interior of command substitution). Basically, recursive -highlighting uses alternate theme to make the highlighted code distinct: +Secondary theme (`zdharma` in the example) will be used for highlighting of argument for `eval` and of `$( ... )` +interior (i.e. of interior of command substitution). Basically, recursive highlighting uses alternate theme to make the +highlighted code distinct: - + -In the above screen-shot the interior of `$( ... )` uses different colors than the rest of the -code. Example for `eval`: +In the above screen-shot the interior of `$( ... )` uses different colors than the rest of the code. Example for `eval`: - + -First line doesn't use recursive highlighting, highlights `eval` argument as regular string. -Second line switches theme to `zdharma` and does full recursive highlighting of eval argument. +First line doesn't use recursive highlighting, highlights `eval` argument as regular string. Second line switches theme +to `zdharma` and does full recursive highlighting of eval argument. ## Custom Working Directory -Set `$FAST_WORK_DIR` before loading the plugin to have e.g. processed theme files (ready to -load, in Zsh format, not INI) kept under specified location. This is handy if e.g. you install -Fast-Syntax-Highlighting system-wide (e.g. from AUR on ArchLinux) and want to have per-user -theme setup. +Set `$FAST_WORK_DIR` before loading the plugin to have e.g. processed theme files (ready to load, in Zsh format, not +INI) kept under specified location. This is handy if e.g. you install Fast-Syntax-Highlighting system-wide (e.g. from +AUR on ArchLinux) and want to have per-user theme setup. -You can use "~" in the path, e.g. `FAST_WORK_DIR=~/.fsh` and also the `XDG:`, `LOCAL:`, `OPT:`, -etc. short-hands, so e.g. `FAST_WORK_DIR=XDG` or `FAST_WORK_DIR=XDG:` is allowed (in this case -it will be changed to `$HOME/.config/fsh` by default by F-Sy-H loader). +You can use "~" in the path, e.g. `FAST_WORK_DIR=~/.fsh` and also the `XDG:`, `LOCAL:`, `OPT:`, etc. short-hands, so +e.g. `FAST_WORK_DIR=XDG` or `FAST_WORK_DIR=XDG:` is allowed (in this case it will be changed to `$HOME/.config/fsh` by +default by F-Sy-H loader). diff --git a/.config/shell/zsh-fast-syntax-highlighting/_fast-theme b/.config/shell/zsh-fast-syntax-highlighting/_fast-theme index 4c88062..67f8a4d 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/_fast-theme +++ b/.config/shell/zsh-fast-syntax-highlighting/_fast-theme @@ -26,6 +26,12 @@ arguments=( typeset -a themes themes=( "$FAST_WORK_DIR"/themes/*.ini(:t:r) ) +if [[ -d ${XDG_CONFIG_HOME:-$HOME/.config}/fsh ]] { + typeset -a themes2 + themes2=( "${XDG_CONFIG_HOME:-$HOME/.config}"/fsh/*.ini(:t:r) ) + themes+=( XDG:${^themes2[@]} ) +} + _wanted themes expl "Themes" \ compadd "$@" -a - themes && ret=0 _arguments -s $arguments && ret=0 diff --git a/.config/shell/zsh-fast-syntax-highlighting/fast-highlight b/.config/shell/zsh-fast-syntax-highlighting/fast-highlight index c410c23..d82df20 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/fast-highlight +++ b/.config/shell/zsh-fast-syntax-highlighting/fast-highlight @@ -33,7 +33,10 @@ typeset -g FAST_WORK_DIR : ${FAST_WORK_DIR:=$FAST_BASE_DIR} FAST_WORK_DIR=${~FAST_WORK_DIR} () { - setopt localoptions extendedglob + # We must not use emulate -o if we want to keep compatibility with Zsh < v.5.0 + # See https://github.com/zdharma-continuum/fast-syntax-highlighting/pull/7 + emulate -L zsh + setopt extendedglob local -A map map=( "XDG:" "${XDG_CONFIG_HOME:-$HOME/.config}/fsh/" "LOCAL:" "/usr/local/share/fsh/" @@ -107,7 +110,7 @@ zstyle :plugin:fast-syntax-highlighting theme default : ${FAST_HIGHLIGHT_STYLES[incorrect-subtle]:=fg=red} : ${FAST_HIGHLIGHT_STYLES[subtle-separator]:=fg=green} : ${FAST_HIGHLIGHT_STYLES[subtle-bg]:=bg=18} -: ${FAST_HIGHLIGHT_STYLES[secondary]:=} +: ${FAST_HIGHLIGHT_STYLES[secondary]:=free} fi # This can overwrite some of *_STYLES fields @@ -165,107 +168,115 @@ typeset -gA FAST_HIGHLIGHT : ${FAST_HIGHLIGHT[use_brackets]:=1} FAST_HIGHLIGHT+=( - chroma-fast-theme :chroma/-fast-theme.ch - chroma-alias :chroma/-alias.ch - chroma-autoload :chroma/-autoload.ch - chroma-autorandr :chroma/-autorandr.ch - chroma-docker :chroma/-docker.ch - chroma-example :chroma/-example.ch - chroma-ionice :chroma/-ionice.ch - chroma-make :chroma/-make.ch - chroma-nice :chroma/-nice.ch - chroma-nmcli :chroma/-nmcli.ch - chroma-node :chroma/-node.ch - chroma-perl :chroma/-perl.ch - chroma-printf :chroma/-printf.ch - chroma-ruby :chroma/-ruby.ch - chroma-scp :chroma/-scp.ch - chroma-ssh :chroma/-ssh.ch - - chroma-git :chroma/main-chroma.ch%git - chroma-hub :chroma/-hub.ch - chroma-lab :chroma/-lab.ch - chroma-svn :chroma/-subversion.ch - chroma-svnadmin :chroma/-subversion.ch - chroma-svndumpfilter :chroma/-subversion.ch - - chroma-egrep :chroma/-grep.ch - chroma-fgrep :chroma/-grep.ch - chroma-grep :chroma/-grep.ch - - chroma-awk :chroma/-awk.ch - chroma-gawk :chroma/-awk.ch - chroma-mawk :chroma/-awk.ch - - chroma-source :chroma/-source.ch - chroma-. :chroma/-source.ch - - chroma-bash :chroma/-sh.ch - chroma-fish :chroma/-sh.ch - chroma-sh :chroma/-sh.ch - chroma-zsh :chroma/-sh.ch - - chroma-whatis :chroma/-whatis.ch - chroma-man :chroma/-whatis.ch - - chroma-- :chroma/-precommand.ch - chroma-xargs :chroma/-precommand.ch - chroma-nohup :chroma/-precommand.ch - - chroma-hg :chroma/-subcommand.ch - chroma-cvs :chroma/-subcommand.ch - chroma-pip :chroma/-subcommand.ch - chroma-pip2 :chroma/-subcommand.ch - chroma-pip3 :chroma/-subcommand.ch - chroma-gem :chroma/-subcommand.ch - chroma-bundle :chroma/-subcommand.ch - chroma-yard :chroma/-subcommand.ch - chroma-cabal :chroma/-subcommand.ch - chroma-npm :chroma/-subcommand.ch - chroma-nvm :chroma/-subcommand.ch - chroma-yarn :chroma/-subcommand.ch - chroma-brew :chroma/-subcommand.ch - chroma-port :chroma/-subcommand.ch - chroma-yum :chroma/-subcommand.ch - chroma-dnf :chroma/-subcommand.ch - chroma-tmux :chroma/-subcommand.ch - chroma-pass :chroma/-subcommand.ch - chroma-aws :chroma/-subcommand.ch - chroma-apt :chroma/-subcommand.ch - chroma-apt-get :chroma/-subcommand.ch - chroma-apt-cache :chroma/-subcommand.ch - chroma-aptitude :chroma/-subcommand.ch - chroma-keyctl :chroma/-subcommand.ch - chroma-systemctl :chroma/-subcommand.ch - chroma-asciinema :chroma/-subcommand.ch - chroma-ipfs :chroma/-subcommand.ch - chroma-zplugin :chroma/main-chroma.ch%zplugin - chroma-aspell :chroma/-subcommand.ch - chroma-bspc :chroma/-subcommand.ch - chroma-cryptsetup :chroma/-subcommand.ch - chroma-diskutil :chroma/-subcommand.ch - chroma-exercism :chroma/-subcommand.ch - chroma-gulp :chroma/-subcommand.ch - chroma-i3-msg :chroma/-subcommand.ch - chroma-openssl :chroma/-subcommand.ch - chroma-solargraph :chroma/-subcommand.ch - chroma-subliminal :chroma/-subcommand.ch - chroma-svnadmin :chroma/-subcommand.ch - chroma-travis :chroma/-subcommand.ch - chroma-udisksctl :chroma/-subcommand.ch - chroma-xdotool :chroma/-subcommand.ch - chroma-zmanage :chroma/-subcommand.ch - chroma-zsystem :chroma/-subcommand.ch - chroma-zypper :chroma/-subcommand.ch - - chroma-fpath+=\( :chroma/-fpath_peq.ch - chroma-fpath=\( :chroma/-fpath_peq.ch - chroma-FPATH+= :chroma/-fpath_peq.ch - chroma-FPATH= :chroma/-fpath_peq.ch - #chroma-which :chroma/-which.ch - #chroma-vim :chroma/-vim.ch + chroma-fast-theme →chroma/-fast-theme.ch + chroma-alias →chroma/-alias.ch + chroma-autoload →chroma/-autoload.ch + chroma-autorandr →chroma/-autorandr.ch + chroma-docker →chroma/-docker.ch + chroma-example →chroma/-example.ch + chroma-ionice →chroma/-ionice.ch + chroma-make →chroma/-make.ch + chroma-nice →chroma/-nice.ch + chroma-nmcli →chroma/-nmcli.ch + chroma-node →chroma/-node.ch + chroma-perl →chroma/-perl.ch + chroma-podman →chroma/-podman.ch + chroma-printf →chroma/-printf.ch + chroma-ruby →chroma/-ruby.ch + chroma-scp →chroma/-scp.ch + chroma-ssh →chroma/-ssh.ch + + chroma-git →chroma/main-chroma.ch%git + chroma-hub →chroma/-hub.ch + chroma-lab →chroma/-lab.ch + chroma-svn →chroma/-subversion.ch + chroma-svnadmin →chroma/-subversion.ch + chroma-svndumpfilter →chroma/-subversion.ch + + chroma-egrep →chroma/-grep.ch + chroma-fgrep →chroma/-grep.ch + chroma-grep →chroma/-grep.ch + + chroma-awk →chroma/-awk.ch + chroma-gawk →chroma/-awk.ch + chroma-goawk →chroma/-awk.ch + chroma-mawk →chroma/-awk.ch + + chroma-source →chroma/-source.ch + chroma-. →chroma/-source.ch + + chroma-bash →chroma/-sh.ch + chroma-fish →chroma/-sh.ch + chroma-sh →chroma/-sh.ch + chroma-zsh →chroma/-sh.ch + + chroma-whatis →chroma/-whatis.ch + chroma-man →chroma/-whatis.ch + + chroma-- →chroma/-precommand.ch + chroma-xargs →chroma/-precommand.ch + chroma-nohup →chroma/-precommand.ch + chroma-strace →chroma/-precommand.ch + chroma-ltrace →chroma/-precommand.ch + + chroma-hg →chroma/-subcommand.ch + chroma-cvs →chroma/-subcommand.ch + chroma-pip →chroma/-subcommand.ch + chroma-pip2 →chroma/-subcommand.ch + chroma-pip3 →chroma/-subcommand.ch + chroma-gem →chroma/-subcommand.ch + chroma-bundle →chroma/-subcommand.ch + chroma-yard →chroma/-subcommand.ch + chroma-cabal →chroma/-subcommand.ch + chroma-npm →chroma/-subcommand.ch + chroma-nvm →chroma/-subcommand.ch + chroma-yarn →chroma/-subcommand.ch + chroma-brew →chroma/-subcommand.ch + chroma-port →chroma/-subcommand.ch + chroma-yum →chroma/-subcommand.ch + chroma-dnf →chroma/-subcommand.ch + chroma-tmux →chroma/-subcommand.ch + chroma-pass →chroma/-subcommand.ch + chroma-aws →chroma/-subcommand.ch + chroma-apt →chroma/-subcommand.ch + chroma-apt-get →chroma/-subcommand.ch + chroma-apt-cache →chroma/-subcommand.ch + chroma-aptitude →chroma/-subcommand.ch + chroma-keyctl →chroma/-subcommand.ch + chroma-systemctl →chroma/-subcommand.ch + chroma-asciinema →chroma/-subcommand.ch + chroma-ipfs →chroma/-subcommand.ch + chroma-zinit →chroma/main-chroma.ch%zinit + chroma-aspell →chroma/-subcommand.ch + chroma-bspc →chroma/-subcommand.ch + chroma-cryptsetup →chroma/-subcommand.ch + chroma-diskutil →chroma/-subcommand.ch + chroma-exercism →chroma/-subcommand.ch + chroma-gulp →chroma/-subcommand.ch + chroma-i3-msg →chroma/-subcommand.ch + chroma-openssl →chroma/-subcommand.ch + chroma-solargraph →chroma/-subcommand.ch + chroma-subliminal →chroma/-subcommand.ch + chroma-svnadmin →chroma/-subcommand.ch + chroma-travis →chroma/-subcommand.ch + chroma-udisksctl →chroma/-subcommand.ch + chroma-xdotool →chroma/-subcommand.ch + chroma-zmanage →chroma/-subcommand.ch + chroma-zsystem →chroma/-subcommand.ch + chroma-zypper →chroma/-subcommand.ch + + chroma-fpath+=\( →chroma/-fpath_peq.ch + chroma-fpath=\( →chroma/-fpath_peq.ch + chroma-FPATH+= →chroma/-fpath_peq.ch + chroma-FPATH= →chroma/-fpath_peq.ch + #chroma-which →chroma/-which.ch + #chroma-vim →chroma/-vim.ch ) +if [[ $OSTYPE == darwin* ]] { + noglob unset FAST_HIGHLIGHT[chroma-man] FAST_HIGHLIGHT[chroma-whatis] +} + # Assignments seen, to know if math parameter exists typeset -gA FAST_ASSIGNS_SEEN @@ -288,7 +299,7 @@ typeset -ga ZLAST_COMMANDS if zmodload -e zsh/parameter; then if (( $+aliases[(e)$1] )); then REPLY=alias - elif (( ${+galiases[(e)$1]} )); then + elif (( ${+galiases[(e)${(Q)1}]} )); then REPLY="global alias" elif (( $+functions[(e)$1] )); then REPLY=function @@ -360,7 +371,7 @@ typeset -ga ZLAST_COMMANDS -fast-highlight-process() { emulate -L zsh - setopt extendedglob bareglobqual nonomatch noksharrays typesetsilent + setopt extendedglob bareglobqual nonomatch typesetsilent [[ $CONTEXT == "select" ]] && return 0 @@ -434,9 +445,9 @@ typeset -ga ZLAST_COMMANDS FAST_HIGHLIGHT[chroma-autoload-elements]="" # Restart FPATH elements gathering FAST_HIGHLIGHT[chroma-fpath_peq-elements]="" - # Restart svn zplugin's ICE gathering - FAST_HIGHLIGHT[chroma-zplugin-ice-elements-svn]=0 - FAST_HIGHLIGHT[chroma-zplugin-ice-elements-id-as]="" + # Restart svn zinit's ICE gathering + FAST_HIGHLIGHT[chroma-zinit-ice-elements-svn]=0 + FAST_HIGHLIGHT[chroma-zinit-ice-elements-id-as]="" [[ -n $ZCALC_ACTIVE ]] && { _start_pos=0; _end_pos=__len; __arg=$__buf @@ -629,11 +640,13 @@ typeset -ga ZLAST_COMMANDS [[ $__arg = "[[" ]] && __style=${FAST_THEME_NAME}double-sq-bracket || __style=${FAST_THEME_NAME}reserved-word if [[ $__arg == $'\x7b' ]]; then # Y - '{' braces_stack='Y'$braces_stack + elif [[ $__arg == $'\x7d' && $braces_stack = Y* ]]; then # Y - '}' # We're at command word, so no need to check right_brace_is_recognised_everywhere braces_stack=${braces_stack#Y} __style=${FAST_THEME_NAME}reserved-word (( next_word = next_word | 16 )) + elif [[ $__arg == "[[" ]]; then # A - [[ braces_stack='A'$braces_stack @@ -641,14 +654,17 @@ typeset -ga ZLAST_COMMANDS _FAST_COMPLEX_BRACKETS+=( $(( _start_pos-__PBUFLEN )) $(( _start_pos-__PBUFLEN + 1 )) ) elif [[ $__arg == "for" ]]; then (( next_word = next_word | 32 )) # BIT_for + elif [[ $__arg == "case" ]]; then (( next_word = BIT_case_preamble )) + elif [[ $__arg = (typeset|declare|local|float|integer|export|readonly) ]]; then braces_stack='T'$braces_stack fi ;; 'suffix alias') __style=${FAST_THEME_NAME}suffix-alias;; 'global alias') __style=${FAST_THEME_NAME}global-alias;; + alias) if [[ $__arg = ?*'='* ]]; then # The so called (by old code) "insane_alias" @@ -659,6 +675,7 @@ typeset -ga ZLAST_COMMANDS [[ ${__FAST_HIGHLIGHT_TOKEN_TYPES[$alias_target]} = "1" && $__arg_type != "1" ]] && __FAST_HIGHLIGHT_TOKEN_TYPES[$__arg]="1" fi ;; + builtin) [[ $__arg = "[" ]] && { __style=${FAST_THEME_NAME}single-sq-bracket _FAST_COMPLEX_BRACKETS+=( $(( _start_pos-__PBUFLEN )) ) @@ -667,12 +684,17 @@ typeset -ga ZLAST_COMMANDS [[ $__arg = (typeset|declare|local|float|integer|export|readonly) ]] && braces_stack='T'$braces_stack [[ $__arg = eval ]] && (( next_word = next_word | 256 )) ;; + function) __style=${FAST_THEME_NAME}function;; + command) __style=${FAST_THEME_NAME}command;; + hashed) __style=${FAST_THEME_NAME}hashed-command;; + dirpath) __style=${FAST_THEME_NAME}path-to-dir;; + none) # Assign? - if [[ $__arg == [a-zA-Z_][a-zA-Z0-9_]#(|\[[^\]]#\])(|[^\]]#\])(|[+])=* || $__arg == [0-9]##(|[+])=* || ( $braces_stack = T* && ${__arg_type} != 3 ) ]]; then + if [[ $__arg == [a-zA-Z_][a-zA-Z0-9_]#(|\[[^\]]#\])(|[^\]]#\])(|[+])=* || $__arg == [0-9]##(|[+])=* || ( $braces_stack = T* && ${__arg_type} != 3 ) ]] { __style=${FAST_THEME_NAME}assign FAST_ASSIGNS_SEEN[${__arg%%=*}]=1 @@ -716,15 +738,19 @@ typeset -ga ZLAST_COMMANDS } || -fast-highlight-string; (( _start_pos = _start_pos - itmp + 1, 1 > 0 )) } - elif [[ $__arg = ${histchars[1]}* && -n ${__arg[2]} ]]; then + + } elif [[ $__arg = ${histchars[1]}* && -n ${__arg[2]} ]] { __style=${FAST_THEME_NAME}history-expansion - elif [[ $__arg == ${histchars[2]}* ]]; then + + } elif [[ $__arg == ${histchars[2]}* ]] { __style=${FAST_THEME_NAME}history-expansion - elif (( __arg_type == 3 )); then + + } elif (( __arg_type == 3 )) { # This highlights empty commands (semicolon follows nothing) as an error. # Zsh accepts them, though. (( this_word & 3 )) && __style=${FAST_THEME_NAME}commandseparator - elif [[ $__arg[1,2] == '((' ]]; then + + } elif [[ $__arg[1,2] == '((' ]] { # Arithmetic evaluation. # # Note: prior to zsh-5.1.1-52-g4bed2cf (workers/36669), the ${(z)...} @@ -752,25 +778,30 @@ typeset -ga ZLAST_COMMANDS # Counting complex brackets (for brackets-highlighter): 7. )) for as-command (( _FAST_COMPLEX_BRACKETS+=( $__start $(( __start + 1 )) ) } - elif [[ $__arg == '()' ]]; then + + } elif [[ $__arg == '()' ]] { _FAST_COMPLEX_BRACKETS+=( $(( _start_pos-__PBUFLEN )) $(( _start_pos-__PBUFLEN + 1 )) ) # anonymous function __style=${FAST_THEME_NAME}reserved-word - elif [[ $__arg == $'\x28' ]]; then + } elif [[ $__arg == $'\x28' ]] { # subshell '(', stack: letter 'R' __style=${FAST_THEME_NAME}reserved-word braces_stack='R'$braces_stack - elif [[ $__arg == $'\x29' ]]; then + + } elif [[ $__arg == $'\x29' ]] { # ')', stack: letter 'R' for subshell [[ $braces_stack = R* ]] && { braces_stack=${braces_stack#R}; __style=${FAST_THEME_NAME}reserved-word; } - elif (( this_word & 14 )); then + + } elif (( this_word & 14 )) { __style=${FAST_THEME_NAME}default - elif [[ $__arg = (';;'|';&'|';|') ]] && (( this_word & BIT_case_code )); then + + } elif [[ $__arg = (';;'|';&'|';|') ]] && (( this_word & BIT_case_code )) { (( next_word = (next_word | BIT_case_item) & ~(BIT_case_code+3) )) __style=${FAST_THEME_NAME}default - elif [[ $__arg = \$\([^\(]* ]]; then + + } elif [[ $__arg = \$\([^\(]* ]] { already_added=1 - fi + } ;; *) # ADD @@ -1035,7 +1066,7 @@ typeset -ga ZLAST_COMMANDS __style=${FAST_THEME_NAME}commandseparator elif (( in_redirection == 2 )); then __style=${FAST_THEME_NAME}redirection - elif (( ${+galiases[(e)$__arg]} )); then + elif (( ${+galiases[(e)${(Q)__arg}]} )); then __style=${FAST_THEME_NAME}global-alias else if [[ ${FAST_HIGHLIGHT[no_check_paths]} != 1 ]]; then @@ -1119,6 +1150,18 @@ typeset -ga ZLAST_COMMANDS fi fi fi + if [[ $__arg = (#b)*'#'(([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])([0-9a-fA-F][0-9a-fA-F])|([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F]))(|[^[:alnum:]]*) || $__arg = (#b)*'rgb('(([0-9a-fA-F][0-9a-fA-F](#c0,1)),([0-9a-fA-F][0-9a-fA-F](#c0,1)),([0-9a-fA-F][0-9a-fA-F](#c0,1)))* ]]; then + if [[ -n $match[2] ]]; then + if [[ $match[2] = ?? || $match[3] = ?? || $match[4] = ?? ]]; then + (( __start=_start_pos-__PBUFLEN, __end=_end_pos-__PBUFLEN, __start >= 0 )) && reply+=("$__start $__end bg=#${(l:2::0:)match[2]}${(l:2::0:)match[3]}${(l:2::0:)match[4]}") + else + (( __start=_start_pos-__PBUFLEN, __end=_end_pos-__PBUFLEN, __start >= 0 )) && reply+=("$__start $__end bg=#$match[2]$match[3]$match[4]") + fi + else + (( __start=_start_pos-__PBUFLEN, __end=_end_pos-__PBUFLEN, __start >= 0 )) && reply+=("$__start $__end bg=#$match[5]$match[6]$match[7]") + fi + already_added=1 + fi # ADD (( already_added == 0 )) && [[ ${FAST_HIGHLIGHT_STYLES[$__style]} != "none" ]] && (( __start=_start_pos-__PBUFLEN, __end=_end_pos-__PBUFLEN, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") @@ -1373,10 +1416,12 @@ zle -N -- fast-highlight-check-path-handler -fast-highlight-check-path-handler local i j k __style local AA integer c + # Starting dollar-quote is at 1:2, so __start parsing at offset 3 in the string. for (( i = 3 ; i < _end_pos - _start_pos ; i += 1 )) ; do (( j = i + _start_pos - 1 )) (( k = j + 1 )) + case ${__arg[$i]} in "\\") __style=${FAST_THEME_NAME}back-dollar-quoted-argument for (( c = i + 1 ; c <= _end_pos - _start_pos ; c += 1 )); do @@ -1384,13 +1429,13 @@ zle -N -- fast-highlight-check-path-handler -fast-highlight-check-path-handler done AA=$__arg[$i+1,$c-1] # Matching for HEX and OCT values like \0xA6, \xA6 or \012 - if [[ "$AA" =~ "^(x|X)[0-9a-fA-F]{1,2}" - || "$AA" =~ "^[0-7]{1,3}" - || "$AA" =~ "^u[0-9a-fA-F]{1,4}" - || "$AA" =~ "^U[0-9a-fA-F]{1,8}" + if [[ "$AA" == (#m)(#s)(x|X)[0-9a-fA-F](#c1,2) + || "$AA" == (#m)(#s)[0-7](#c1,3) + || "$AA" == (#m)(#s)u[0-9a-fA-F](#c1,4) + || "$AA" == (#m)(#s)U[0-9a-fA-F](#c1,8) ]]; then - (( k += $#MATCH )) - (( i += $#MATCH )) + (( k += MEND )) + (( i += MEND )) else if (( __asize > i+1 )) && [[ $__arg[i+1] == [xXuU] ]]; then # \x not followed by hex digits is probably an error diff --git a/.config/shell/zsh-fast-syntax-highlighting/fast-string-highlight b/.config/shell/zsh-fast-syntax-highlighting/fast-string-highlight index dd8eb4f..cc8d860 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/fast-string-highlight +++ b/.config/shell/zsh-fast-syntax-highlighting/fast-string-highlight @@ -15,18 +15,18 @@ function -fast-highlight-string-process { pair_map=( "(" ")" "{" "}" "[" "]" ) - while [[ $_mybuf = (#b)[^"{}()[]\\\"'"]#((["({[]})\"'"])|[\\](*))(*) ]]; do - [[ -n ${match[3]} ]] && { - __idx+=${mbegin[1]} + while [[ $_mybuf = (#b)([^"{}()[]\\\"'"]#)((["({[]})\"'"])|[\\](*))(*) ]]; do + if [[ -n ${match[4]} ]] { + __idx+=${mbegin[2]} - [[ $__quoting = \' ]] && _mybuf=${match[3]} || { _mybuf=${match[3]:1}; (( ++ __idx )); } - } || { - __idx+=${mbegin[1]} + [[ $__quoting = \' ]] && _mybuf=${match[4]} || { _mybuf=${match[4]:1}; (( ++ __idx )); } + } else { + __idx+=${mbegin[2]} [[ -z $__quoting && -z ${_FAST_COMPLEX_BRACKETS[(r)$((__idx-${#PREBUFFER}-1))]} ]] && { - if [[ ${match[1]} = ["({["] ]]; then + if [[ ${match[2]} = ["({["] ]]; then pos_to_level[$__idx]=$(( ++__level )) level_to_pos[$__level]=$__idx - elif [[ ${match[1]} = ["]})"] ]]; then + elif [[ ${match[2]} = ["]})"] ]]; then if (( __level > 0 )); then __pair_idx=${level_to_pos[$__level]} pos_to_level[$__idx]=$(( __level -- )) @@ -40,10 +40,21 @@ function -fast-highlight-string-process { fi } - [[ ${match[1]} = \" && $__quoting != \' ]] && { [[ $__quoting = '"' ]] && __quoting="" || __quoting='"'; } - [[ ${match[1]} = \' && $__quoting != \" ]] && { [[ $__quoting = "'" ]] && __quoting="" || __quoting="'"; } - - _mybuf=${match[4]} + if [[ ${match[2]} = \" && $__quoting != \' ]] { + [[ $__quoting = '"' ]] && __quoting="" || __quoting='"'; + } + if [[ ${match[2]} = \' && $__quoting != \" ]] { + if [[ $__quoting = ("'"|"$'") ]] { + __quoting="" + } else { + if [[ $match[1] = *\$ ]] { + __quoting="\$'"; + } else { + __quoting="'"; + } + } + } + _mybuf=${match[5]} } done diff --git a/.config/shell/zsh-fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh b/.config/shell/zsh-fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh index c5357e1..40b30b5 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh +++ b/.config/shell/zsh-fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh @@ -33,25 +33,30 @@ # regardless of functionargzero and posixargzero, # and with an option for a plugin manager to alter # the plugin directory (i.e. set ZERO parameter) -# http://zdharma.org/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html +# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html 0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}" 0="${${(M)0:#/*}:-$PWD/$0}" +typeset -g FAST_HIGHLIGHT_VERSION=1.55 typeset -g FAST_BASE_DIR="${0:h}" typeset -ga _FAST_MAIN_CACHE # Holds list of indices pointing at brackets that # are complex, i.e. e.g. part of "[[" in [[ ... ]] typeset -ga _FAST_COMPLEX_BRACKETS -typeset -g FAST_WORK_DIR -: ${FAST_WORK_DIR:=$FAST_BASE_DIR} +typeset -g FAST_WORK_DIR=${FAST_WORK_DIR:-${XDG_CACHE_HOME:-~/.cache}/fast-syntax-highlighting} +: ${FAST_WORK_DIR:=${FAST_BASE_DIR-}} +# Expand any tilde in the (supposed) path. FAST_WORK_DIR=${~FAST_WORK_DIR} -if [[ -z "$ZPLG_CUR_PLUGIN" && "${fpath[(r)$FAST_BASE_DIR]}" != $FAST_BASE_DIR ]]; then - fpath+=( "$FAST_BASE_DIR" ) +# Last (currently, possibly) loaded plugin isn't "fast-syntax-highlighting"? +# And FPATH isn't containing plugin dir? +if [[ ${zsh_loaded_plugins[-1]-} != */fast-syntax-highlighting && -z ${fpath[(r)${0:h}]-} ]] +then + fpath+=( "${0:h}" ) fi -if [[ "$FAST_WORK_DIR" = /usr/* || ( "$FAST_WORK_DIR" = /opt/* && ! -w "$FAST_WORK_DIR" ) ]]; then +if [[ ! -w $FAST_WORK_DIR ]]; then FAST_WORK_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/fsh" command mkdir -p "$FAST_WORK_DIR" fi @@ -70,7 +75,9 @@ _zsh_highlight() return $ret fi - setopt localoptions warncreateglobal noksharrays noshwordsplit extendedglob typesetsilent nokshglob + emulate -LR zsh + setopt extendedglob warncreateglobal typesetsilent noshortloops + local REPLY # don't leak $REPLY into global scope local -a reply @@ -232,7 +239,7 @@ _zsh_highlight_bind_widgets() # Override ZLE widgets to make them invoke _zsh_highlight. local -U widgets_to_bind - widgets_to_bind=(${${(k)widgets}:#(.*|run-help|which-command|beep|set-local-history|yank)}) + widgets_to_bind=(${${(k)widgets}:#(.*|run-help|which-command|beep|set-local-history|yank|zle-line-pre-redraw|zle-keymap-select)}) # Always wrap special zle-line-finish widget. This is needed to decide if the # current line ends and special highlighting logic needs to be applied. @@ -245,7 +252,7 @@ _zsh_highlight_bind_widgets() local cur_widget for cur_widget in $widgets_to_bind; do - case $widgets[$cur_widget] in + case ${widgets[$cur_widget]-} in # Already rebound event: do nothing. user:_zsh_highlight_widget_*);; @@ -272,7 +279,7 @@ _zsh_highlight_bind_widgets() # Incomplete or nonexistent widget: Bind to z-sy-h directly. *) - if [[ $cur_widget == zle-* ]] && [[ -z $widgets[$cur_widget] ]]; then + if [[ $cur_widget == zle-* ]] && [[ -z ${widgets[$cur_widget]-} ]]; then _zsh_highlight_widget_${cur_widget}() { :; _zsh_highlight } zle -N -- $cur_widget _zsh_highlight_widget_$cur_widget else @@ -311,23 +318,23 @@ add-zsh-hook preexec _zsh_highlight_preexec_hook 2>/dev/null || { print -r -- "$@" >>! /tmp/reply } -ZSH_HIGHLIGHT_MAXLENGTH=10000 +typeset -g ZSH_HIGHLIGHT_MAXLENGTH=10000 # Load zsh/parameter module if available zmodload zsh/parameter 2>/dev/null zmodload zsh/system 2>/dev/null -autoload -Uz -- is-at-least fast-theme fast-read-ini-file -fast-run-git-command -fast-make-targets \ - -fast-run-command -fast-zts-read-all -autoload -Uz -- :chroma/-git.ch :chroma/-hub.ch :chroma/-lab.ch :chroma/-example.ch \ - :chroma/-grep.ch :chroma/-perl.ch :chroma/-make.ch :chroma/-awk.ch \ - :chroma/-vim.ch :chroma/-source.ch :chroma/-sh.ch :chroma/-docker.ch \ - :chroma/-autoload.ch :chroma/-ssh.ch :chroma/-scp.ch :chroma/-which.ch \ - :chroma/-printf.ch :chroma/-ruby.ch :chroma/-whatis.ch :chroma/-alias.ch \ - :chroma/-subcommand.ch :chroma/-autorandr.ch :chroma/-nmcli.ch \ - :chroma/-fast-theme.ch :chroma/-node.ch :chroma/-fpath_peq.ch \ - :chroma/-precommand.ch :chroma/-subversion.ch :chroma/-ionice.ch \ - :chroma/-nice.ch :chroma/main-chroma.ch :chroma/-ogit.ch :chroma/-zplugin.ch +autoload -Uz -- is-at-least fast-theme .fast-read-ini-file .fast-run-git-command \ + .fast-make-targets .fast-run-command .fast-zts-read-all +autoload -Uz -- →chroma/-git.ch →chroma/-hub.ch →chroma/-lab.ch →chroma/-example.ch \ + →chroma/-grep.ch →chroma/-perl.ch →chroma/-make.ch →chroma/-awk.ch \ + →chroma/-vim.ch →chroma/-source.ch →chroma/-sh.ch →chroma/-docker.ch →chroma/-podman.ch \ + →chroma/-autoload.ch →chroma/-ssh.ch →chroma/-scp.ch →chroma/-which.ch \ + →chroma/-printf.ch →chroma/-ruby.ch →chroma/-whatis.ch →chroma/-alias.ch \ + →chroma/-subcommand.ch →chroma/-autorandr.ch →chroma/-nmcli.ch \ + →chroma/-fast-theme.ch →chroma/-node.ch →chroma/-fpath_peq.ch \ + →chroma/-precommand.ch →chroma/-subversion.ch →chroma/-ionice.ch \ + →chroma/-nice.ch →chroma/main-chroma.ch →chroma/-ogit.ch →chroma/-zinit.ch source "${0:h}/fast-highlight" source "${0:h}/fast-string-highlight" @@ -355,3 +362,23 @@ unset __fsyh_theme alias fsh-alias=fast-theme -fast-highlight-fill-option-variables + +if [[ ! -e $FAST_WORK_DIR/secondary_theme.zsh ]] { + if { type curl &>/dev/null } { + curl -fsSL -o "$FAST_WORK_DIR/secondary_theme.zsh" \ + https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/share/free_theme.zsh \ + &>/dev/null + } elif { type wget &>/dev/null } { + wget -O "$FAST_WORK_DIR/secondary_theme.zsh" \ + https://raw.githubusercontent.com/zdharma-continuum/fast-syntax-highlighting/master/share/free_theme.zsh \ + &>/dev/null + } + touch "$FAST_WORK_DIR/secondary_theme.zsh" +} + +if [[ $(uname -a) = (#i)*darwin* ]] { + typeset -gA FAST_HIGHLIGHT + FAST_HIGHLIGHT[chroma-man]= +} + +[[ ${COLORTERM-} == (24bit|truecolor) || ${terminfo[colors]} -eq 16777216 ]] || zmodload zsh/nearcolor &>/dev/null || true diff --git a/.config/shell/zsh-fast-syntax-highlighting/fast-theme b/.config/shell/zsh-fast-syntax-highlighting/fast-theme index 0bc1188..06ad005 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/fast-theme +++ b/.config/shell/zsh-fast-syntax-highlighting/fast-theme @@ -234,13 +234,13 @@ if [[ "$1" = */* || "$1" = (XDG|LOCAL|HOME|OPT):* ]]; then [[ ! -r "$1" ]] && { print -u2 "Theme \`$1' unreadable, aborting"; return 1; } THEME_NAME="${1:t:r}" - fast-read-ini-file "$1" out "" + .fast-read-ini-file "$1" out "" else [[ ! -f "$FAST_BASE_DIR/themes/$1.ini" ]] && { print -u2 "No such theme \`$1', aborting"; return 1; } [[ ! -r "$FAST_BASE_DIR/themes/$1.ini" ]] && { print -u2 "Theme \`$1' unreadable, aborting"; return 1; } THEME_NAME="$1" - fast-read-ini-file "$FAST_BASE_DIR/themes/$1.ini" out "" + .fast-read-ini-file "$FAST_BASE_DIR/themes/$1.ini" out "" fi [[ -z "$OPT_SECONDARY" ]] && { [[ "$THEME_NAME" = *"overlay"* ]] && local outfile="theme_overlay.zsh" || local outfile="current_theme.zsh"; } || local outfile="secondary_theme.zsh" diff --git a/.config/shell/zsh-fast-syntax-highlighting/share/free_theme.zsh b/.config/shell/zsh-fast-syntax-highlighting/share/free_theme.zsh new file mode 100644 index 0000000..0f32d66 --- /dev/null +++ b/.config/shell/zsh-fast-syntax-highlighting/share/free_theme.zsh @@ -0,0 +1,61 @@ +: ${FAST_HIGHLIGHT_STYLES[freedefault]:=none} +: ${FAST_HIGHLIGHT_STYLES[freeunknown-token]:=fg=red,bold} +: ${FAST_HIGHLIGHT_STYLES[freereserved-word]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freealias]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freesuffix-alias]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freebuiltin]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freefunction]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freecommand]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freeprecommand]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freecommandseparator]:=none} +: ${FAST_HIGHLIGHT_STYLES[freehashed-command]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freepath]:=fg=166} +: ${FAST_HIGHLIGHT_STYLES[freepath_pathseparator]:=} +: ${FAST_HIGHLIGHT_STYLES[freeglobbing]:=fg=112} +: ${FAST_HIGHLIGHT_STYLES[freeglobbing-ext]:=fg=118} +: ${FAST_HIGHLIGHT_STYLES[freehistory-expansion]:=fg=blue,bold} +: ${FAST_HIGHLIGHT_STYLES[freesingle-hyphen-option]:=fg=110} +: ${FAST_HIGHLIGHT_STYLES[freedouble-hyphen-option]:=fg=110} +: ${FAST_HIGHLIGHT_STYLES[freeback-quoted-argument]:=none} +: ${FAST_HIGHLIGHT_STYLES[freesingle-quoted-argument]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freedouble-quoted-argument]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freedollar-quoted-argument]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freeback-or-dollar-double-quoted-argument]:=fg=110} +: ${FAST_HIGHLIGHT_STYLES[freeback-dollar-quoted-argument]:=fg=110} +: ${FAST_HIGHLIGHT_STYLES[freeassign]:=none} +: ${FAST_HIGHLIGHT_STYLES[freeredirection]:=none} +: ${FAST_HIGHLIGHT_STYLES[freecomment]:=fg=black,bold} +: ${FAST_HIGHLIGHT_STYLES[freevariable]:=none} +: ${FAST_HIGHLIGHT_STYLES[freemathvar]:=fg=blue,bold} +: ${FAST_HIGHLIGHT_STYLES[freemathnum]:=fg=166} +: ${FAST_HIGHLIGHT_STYLES[freematherr]:=fg=red} +: ${FAST_HIGHLIGHT_STYLES[freeassign-array-bracket]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freefor-loop-variable]:=none} +: ${FAST_HIGHLIGHT_STYLES[freefor-loop-number]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freefor-loop-operator]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freefor-loop-separator]:=fg=109} +: ${FAST_HIGHLIGHT_STYLES[freeexec-descriptor]:=fg=yellow,bold} +: ${FAST_HIGHLIGHT_STYLES[freehere-string-tri]:=fg=yellow} +: ${FAST_HIGHLIGHT_STYLES[freehere-string-text]:=bg=19} +: ${FAST_HIGHLIGHT_STYLES[freehere-string-var]:=fg=110,bg=19} +: ${FAST_HIGHLIGHT_STYLES[freesecondary]:=zdharma} +: ${FAST_HIGHLIGHT_STYLES[freecase-input]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freecase-parentheses]:=fg=116} +: ${FAST_HIGHLIGHT_STYLES[freecase-condition]:=bg=19} +: ${FAST_HIGHLIGHT_STYLES[freecorrect-subtle]:=bg=55} +: ${FAST_HIGHLIGHT_STYLES[freeincorrect-subtle]:=bg=52} +: ${FAST_HIGHLIGHT_STYLES[freesubtle-separator]:=none} +: ${FAST_HIGHLIGHT_STYLES[freesubtle-bg]:=bg=18} +: ${FAST_HIGHLIGHT_STYLES[freepath-to-dir]:=fg=166,underline} +: ${FAST_HIGHLIGHT_STYLES[freepaired-bracket]:=bg=blue} +: ${FAST_HIGHLIGHT_STYLES[freebracket-level-1]:=fg=130} +: ${FAST_HIGHLIGHT_STYLES[freebracket-level-2]:=fg=70} +: ${FAST_HIGHLIGHT_STYLES[freebracket-level-3]:=fg=69} +: ${FAST_HIGHLIGHT_STYLES[freeglobal-alias]:=bg=19} +: ${FAST_HIGHLIGHT_STYLES[freesubcommand]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freesingle-sq-bracket]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freedouble-sq-bracket]:=fg=180} +: ${FAST_HIGHLIGHT_STYLES[freedouble-paren]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freeoptarg-string]:=fg=150} +: ${FAST_HIGHLIGHT_STYLES[freeoptarg-number]:=fg=166} +: ${FAST_HIGHLIGHT_STYLES[freerecursive-base]:=fg=183} diff --git a/.config/shell/zsh-fast-syntax-highlighting/themes/base16.ini b/.config/shell/zsh-fast-syntax-highlighting/themes/base16.ini new file mode 100644 index 0000000..8c82598 --- /dev/null +++ b/.config/shell/zsh-fast-syntax-highlighting/themes/base16.ini @@ -0,0 +1,82 @@ +[base] +default = none +unknown-token = 1,bold +commandseparator = none +redirection = none +here-string-tri = 14 +here-string-text = bg:11 +here-string-var = 1,bg:11 +exec-descriptor = 9,bold +comment = 8 +correct-subtle = 12 +incorrect-subtle = 1 +subtle-separator = 12 +subtle-bg = bg:10 +; secondary = +; recursive-base = + +[command-point] +reserved-word = 5 +subcommand = 6 +alias = 4 +suffix-alias = 4 +global-alias = 4,bg:11 +builtin = 4 +function = 4 +command = 4 +precommand = 6 +hashed-command = 4 +single-sq-bracket = 4 +double-sq-bracket = 4 +double-paren = 5 + +[paths] +path = 9 +pathseparator = +path-to-dir = 9,underline +globbing = 6 +globbing-ext = 6,bold + +[brackets] +paired-bracket = bg:8 +bracket-level-1 = 3,bold +bracket-level-2 = 6,bold +bracket-level-3 = 2,bold + +[arguments] +single-hyphen-option = 3 +double-hyphen-option = 3 +back-quoted-argument = none +single-quoted-argument = 2 +double-quoted-argument = 2 +dollar-quoted-argument = 2 + +[in-string] +; backslash in $'...' +back-dollar-quoted-argument = 6 +; backslash or $... in "..." +back-or-dollar-double-quoted-argument = 1 + +[other] +variable = 1 +assign = none +assign-array-bracket = 5 +history-expansion = 6,bold + +[math] +mathvar = 1 +mathnum = 9 +matherr = 1,bold + +[for-loop] +forvar = 1 +fornum = 9 +; operator +foroper = none +; separator +forsep = none + +[case] +case-input = 1 +case-parentheses = 5 +case-condition = bg:10 diff --git a/.config/shell/zsh-fast-syntax-highlighting/themes/default.ini b/.config/shell/zsh-fast-syntax-highlighting/themes/default.ini index a5abeab..c0840fb 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/themes/default.ini +++ b/.config/shell/zsh-fast-syntax-highlighting/themes/default.ini @@ -14,7 +14,7 @@ correct-subtle = 12 incorrect-subtle = red subtle-separator = green subtle-bg = bg:18 -secondary = +secondary = free ; recursive-base = [command-point] diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-alias.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-alias.ch index d581341..d581341 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-alias.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-alias.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-autoload.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-autoload.ch index 78a8924..78a8924 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-autoload.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-autoload.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-autorandr.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-autorandr.ch index 9687db3..9687db3 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-autorandr.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-autorandr.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-awk.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-awk.ch index 47b3ec7..47b3ec7 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-awk.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-awk.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-docker.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-docker.ch index 0a6a3bb..31772f2 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-docker.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-docker.ch @@ -61,7 +61,7 @@ local -a __lines_list if (( __idx1 == 2 )); then __style=${FAST_THEME_NAME}subcommand elif (( __idx1 == 3 )); then - -fast-run-command "docker images -q" chroma-docker-list "" + .fast-run-command "docker images -q" chroma-docker-list "" [[ -n "${__lines_list[(r)$__wrd]}" ]] && { (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && \ reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}correct-subtle]}") diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-example.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-example.ch index 8814922..8814922 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-example.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-example.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-fast-theme.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-fast-theme.ch index 15bc210..15bc210 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-fast-theme.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-fast-theme.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-fpath_peq.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-fpath_peq.ch index 072cee3..072cee3 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-fpath_peq.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-fpath_peq.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-git.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-git.ch index bf5fbe5..43693ce 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-git.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-git.ch @@ -17,20 +17,22 @@ fsh__git__chroma__def=( subcmd:NULL "NULL_0_opt" NULL_0_opt "(-C|--exec-path=|--git-dir=|--work-tree=|--namespace=|--super-prefix=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || -c <<>> __style=\${FAST_THEME_NAME}single-hyphen-option // NO-OP <<>> __style=\${FAST_THEME_NAME}optarg-string // NO-OP || (--version|--help|--html-path|--man-path|--info-path|-p|--paginate| -P|--no-pager|--no-replace-objects|--bare) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" - "subcommands" ":::chroma/-git-get-subcommands" # run a function (the :: causes this) and use `reply' + "subcommands" "::→chroma/-git-get-subcommands" # run a function (the :: causes this) and use `reply' #"subcommands" "(fetch|pull)" # run a function (the :: causes this) and use `reply' - "subcmd-hook" ":chroma/-git-check-if-alias" + "subcmd-hook" "→chroma/-git-check-if-alias" + + "subcommands-blacklist" "mv,other" ## }}} @@ -68,8 +70,8 @@ fsh__git__chroma__def=( --refmap=|--recurse-submodules=|-j|--jobs=|--submodule-prefix=| --recurse-submodules-default=|-o|--server-option=|--upload-pack| --negotiation-tip=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (--help|--all|-a|--append|--unshallow|--update-shallow|--dry-run|-f|--force| -k|--keep|--multiple|-p|--prune|-n|--no-tags|-t|--tags|--no-recurse-submodules| -u|--update-head-ok|-q|--quiet|-v|--verbose|--progress| @@ -82,9 +84,9 @@ fsh__git__chroma__def=( # is set to be argument-less. The argument is a) -o/--option argument # and b) -o/--option=argument. - REMOTE_GR_1_arg "NO-OP // :::chroma/-git-verify-remote-or-group" # This definition is generic, reused later - "REF_#_arg" "NO-OP // :::chroma/-git-verify-ref" # This too - "REMOTE_GR_#_arg" "NO-OP // :::chroma/-git-verify-remote-or-group" # and this too + REMOTE_GR_1_arg "NO-OP // ::→chroma/-git-verify-remote-or-group" # This definition is generic, reused later + "REF_#_arg" "NO-OP // ::→chroma/-git-verify-ref" # This too + "REMOTE_GR_#_arg" "NO-OP // ::→chroma/-git-verify-remote-or-group" # and this too # The hash `#' above denotes: an argument at any position # It will nicely match any following (above the first explicitly # numbered ones) arguments passed when using --multiple @@ -105,8 +107,8 @@ fsh__git__chroma__def=( PUSH_0_opt " (--receive-pack=|--exec=|--repo=|--push-option=|--signed=| --force-with-lease=|--signed=|--recurse-submodules=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (--help|--all|--mirror|--tags|--follow-tags|--atomic|-n|--dry-run| --porcelain|--delete|--tags|--follow-tags|--signed|--no-signed| --atomic|--no-atomic|-o|--push-option|--force-with-lease| @@ -115,7 +117,7 @@ fsh__git__chroma__def=( --verify|--no-verify|-4|--ipv4|-6|--ipv6) <<>> __style=\${FAST_THEME_NAME}single-hyphen-option // NO-OP" - REMOTE_1_arg "NO-OP // :::chroma/-git-verify-remote" # This definition is generic, reused later + REMOTE_1_arg "NO-OP // ::→chroma/-git-verify-remote" # This definition is generic, reused later ### }}} @@ -131,8 +133,8 @@ fsh__git__chroma__def=( --strategy-option=|--rebase=|--depth=|--deepen=|--shallow-exclude=| --shallow-since=|--negotiation-tip|--upload-pack|-o|--server-option=| --no-recurse-submodules=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (--help|-q|--quiet|-v|--verbose|--progress|--no-recurse-submodules| --commit|--no-commit|--edit|--no-edit|--ff|--no-ff|--ff-only| --log|--no-log|--signoff|--no-signoff|--stat|-n|--no-stat|--squash| @@ -153,23 +155,23 @@ fsh__git__chroma__def=( subcmd:commit "COMMIT_#_opt // FILE_#_arg // NO_MATCH_#_opt" "COMMIT_#_opt" " - (-m|--message=|-am) - <<>> NO-OP // :::chroma/-git-commit-msg-opt-action - <<>> NO-OP // :::chroma/-git-commit-msg-opt-ARG-action + (-m|--message=|--message|-am) + <<>> NO-OP // ::→chroma/-git-commit-msg-opt-action + <<>> NO-OP // ::→chroma/-git-commit-msg-opt-ARG-action || (--help|-a|--all|-p|--patch|--reset-author|--short|--branch| --porcelain|--long|-z|--null|-s|--signoff|-n|--no-verify| --allow-empty|--allow-empty-message|-e|--edit|--no-edit| --amend|--no-post-rewrite|-i|--include|-o|--only|--untracked-files| -v|--verbose|-q|--quiet|--dry-run|--status|--no-status|--no-gpg-sign) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || (-C|--reuse-message=|-c|--reedit-message=|--fixup=|--squash=| -F|--file=|--author=|--date=|-t|--template=|--cleanup=| -u|--untracked-files=|-S|--gpg-sign=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action" # A generic action - "FILE_#_arg" "NO-OP // :::chroma/-git-verify-file" + "FILE_#_arg" "NO-OP // ::→chroma/-git-verify-file" ## }}} @@ -181,20 +183,20 @@ fsh__git__chroma__def=( subcmd:merge "MERGE_0_opt // COMMIT_#_arg" MERGE_0_opt "(-m) - <<>> NO-OP // :::chroma/-git-commit-msg-opt-action - <<>> NO-OP // :::chroma/-git-commit-msg-opt-ARG-action + <<>> NO-OP // ::→chroma/-git-commit-msg-opt-action + <<>> NO-OP // ::→chroma/-git-commit-msg-opt-ARG-action (-S|--gpg-sign=|--log=|-e|--strategy=|-X|--strategy-option=|-F| --file) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (--help|--commit|--no-commit|-e|--edit|--no-edit|--ff|--no-ff|--ff-only| --log|--no-log|--signoff|--no-signoff|-n|--stat|--no-stat|--squash| --no-squash|--verify-signatures|--no-verify-signatures|--summary| --no-summary|-q|--quiet|-v|--verbose|--progress|--no-progress| --allow-unrelated-histories|--rerere-autoupdate|--no-rerere-autoupdate| --abort|--continue) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" - COMMIT_\#_arg "NO-OP // :::chroma/-git-verify-commit" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" + COMMIT_\#_arg "NO-OP // ::→chroma/-git-verify-commit" ## }}} @@ -206,7 +208,7 @@ fsh__git__chroma__def=( subcmd:reset "RESET_0_opt^ // RESET_0_opt // RESET_#_arg // NO_MATCH_#_opt" "RESET_0_opt^" " (--soft|--mixed|--hard|--merge|--keep) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || (--soft|--mixed|--hard|--merge|--keep):del <<>> RESET_0_opt // RESET_#_arg || (--soft|--mixed|--hard|--merge|--keep):add @@ -215,11 +217,11 @@ fsh__git__chroma__def=( RESET_0_opt " (-q|-p|--patch) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" - RESET_1_arg "NO-OP // :::chroma/-git-verify-commit" + RESET_1_arg "NO-OP // ::→chroma/-git-verify-commit" - "RESET_#_arg" "NO-OP // :::chroma/-git-RESET-verify-commit-or-file" + "RESET_#_arg" "NO-OP // ::→chroma/-git-RESET-verify-commit-or-file" ## }}} @@ -232,20 +234,20 @@ fsh__git__chroma__def=( subcmd:revert "REVERT_SEQUENCER_0_opt^ // REVERT_0_opt // REVERT_#_arg // NO_MATCH_#_opt" REVERT_0_opt " (-m|--mainline|-S|--gpg-sign=|--strategy=|-X|--strategy-option=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (-e|--edit|--no-edit|-n|--no-commit|-s|--signoff) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" "REVERT_SEQUENCER_0_opt^" " (--continue|--quit|--abort) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || (--continue|--quit|--abort):del <<>> REVERT_0_opt // REVERT_#_arg || (--continue|--quit|--abort):add <<>> NO_MATCH_#_arg" - "REVERT_#_arg" "NO-OP // :::chroma/-git-verify-commit" + "REVERT_#_arg" "NO-OP // ::→chroma/-git-verify-commit" ## }}} @@ -260,7 +262,7 @@ fsh__git__chroma__def=( "DIFF_NO_INDEX_0_opt^" " --no-index - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || --no-index:del <<>> COMMIT_FILE_DIR_#_arg || --no-index:add @@ -273,8 +275,8 @@ fsh__git__chroma__def=( --diff-filter=|-S|-G|--find-object=|--relative=|-O|--relative=| --inter-hunk-context=|--ignore-submodules=|--src-prefix=|--dst-prefix=| --line-prefix=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (-p|--patch|-u|-s|--no-patch|--raw|--patch-with-raw|--indent-heuristic| --no-indent-heuristic|--minimal|--patience|--histogram|--stat| --compact-summary|--numstat|--shortstat|--dirstat|--summary| @@ -288,16 +290,16 @@ fsh__git__chroma__def=( --ext-diff|--no-ext-diff|--textconv|--no-textconv|--ignore-submodules| --no-prefix|--ita-invisible-in-index|-1|--base|-2|--ours|-3|--theirs| -0|--cached) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" # A generic action - "COMMIT_FILE_DIR_#_arg" "NO-OP // :::chroma/-git-verify-commit-or-file-or-dir" + "COMMIT_FILE_DIR_#_arg" "NO-OP // ::→chroma/-git-verify-commit-or-file-or-dir" # A generic action - "FILE_1_arg" "NO-OP // :::chroma/-git-verify-file" + "FILE_1_arg" "NO-OP // ::→chroma/-git-verify-file" # A generic action - "FILE_2_arg" "NO-OP // :::chroma/-git-verify-file" + "FILE_2_arg" "NO-OP // ::→chroma/-git-verify-file" ## }}} @@ -310,16 +312,16 @@ fsh__git__chroma__def=( ADD_0_opt " --chmod= - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (-v|--verbose|-f|--force|-i|--interactive|-n|--dry-run| -p|--patch|-e|--edit|--all|--no-all|-A|--all|--no-all| --ignore-removal|--no-ignore-removal|-u|--update|-N| --intent-to-add|--refresh|--ignore-errors|--ignore-missing| --renormalize|--no-warn-embedded-repo) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" - FILE_OR_DIR_#_arg "NO-OP // :::chroma/-git-verify-file-or-dir" + FILE_OR_DIR_#_arg "NO-OP // ::→chroma/-git-verify-file-or-dir" ## }}} @@ -334,32 +336,32 @@ fsh__git__chroma__def=( "CHECKOUT_BRANCH_0_opt^" " (-b|-B|--orphan) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || (-b|-B|--orphan):del <<>> FILE_OR_DIR_OR_BRANCH_OR_COMMIT_1_arg // FILE_#_arg // FILE_#_arg || (-b|-B|--orphan):add <<>> NEW_BRANCH_1_arg // COMMIT_2_arg // NO_MATCH_#_arg" - NEW_BRANCH_1_arg "NO-OP // :::chroma/-git-verify-correct-branch-name" + NEW_BRANCH_1_arg "NO-OP // ::→chroma/-git-verify-correct-branch-name" - COMMIT_2_arg "NO-OP // :::chroma/-git-verify-commit" + COMMIT_2_arg "NO-OP // ::→chroma/-git-verify-commit" CHECKOUT_0_opt " --conflict= - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (-q|--quiet|--progress|--no-progress|-f|--force|--ours|--theirs| -b|-B|-t|--track|--no-track|-l|--detach|--orphan| --ignore-skip-worktree-bits|-m|--merge|-p|--patch| --ignore-other-worktrees|--no-ignore-other-worktrees) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" # A generic action - COMMIT_1_arg "NO-OP // :::chroma/-git-verify-commit" + COMMIT_1_arg "NO-OP // ::→chroma/-git-verify-commit" # Unused - FILE_OR_BRANCH_OR_COMMIT_1_arg "NO-OP // :::chroma/-git-file-or-ubranch-or-commit-verify" - FILE_OR_DIR_OR_BRANCH_OR_COMMIT_1_arg "NO-OP // :::chroma/-git-file-or-dir-or-ubranch-or-commit-verify" + FILE_OR_BRANCH_OR_COMMIT_1_arg "NO-OP // ::→chroma/-git-file-or-ubranch-or-commit-verify" + FILE_OR_DIR_OR_BRANCH_OR_COMMIT_1_arg "NO-OP // ::→chroma/-git-file-or-dir-or-ubranch-or-commit-verify" ## }}} @@ -374,7 +376,7 @@ fsh__git__chroma__def=( REMOTE_PRUNE_1_arg // REMOTE_UPDATE_1_arg" REMOTE_0_opt "(-v|--verbose) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" REMOTE_ADD_1_arg "add ::::: __style=${FAST_THEME_NAME}subcommand // NO-OP <<>> add:REMOTE_ADD_OPTS_1_opt // REMOTE_A_NAME_2_arg // @@ -415,53 +417,53 @@ fsh__git__chroma__def=( REMOTE_ADD_OPTS_1_opt " (-t|-m|--mirror=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (-f|--tags|--no-tags) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" REMOTE_SET_HEAD_OPTS_1_opt " (-a|--auto|-d|--delete) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" REMOTE_SET_HEAD_OPTS_2_opt " (-a|--auto|-d|--delete) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" REMOTE_SET_BRANCHES_OPTS_1_opt " --add - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" REMOTE_GET_URL_OPTS_1_opt " (--push|--all) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" "REMOTE_SET_URL_OPTS_1_opt^" " --push|--add|--delete - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || (--add|--delete):del <<>> REMOTE_A_URL_4_arg" REMOTE_SHOW_OPTS_1_opt " -n - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" REMOTE_PRUNE_OPTS_1_opt " (-n|--dry-run) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" REMOTE_UPDATE_OPTS_1_opt " (-p|--prune) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" - REMOTE_A_NAME_2_arg "NO-OP // :::chroma/-git-verify-correct-branch-name" - REMOTE_A_NAME_3_arg "NO-OP // :::chroma/-git-verify-correct-branch-name" - REMOTE_A_URL_3_arg "NO-OP // :::chroma/main-chroma-std-verify-url" - REMOTE_A_URL_4_arg "NO-OP // :::chroma/main-chroma-std-verify-url" - BRANCH_3_arg "NO-OP // :::chroma/-git-verify-branch" - BRANCH_\#_arg "NO-OP // :::chroma/-git-verify-branch" - REMOTE_2_arg "NO-OP // :::chroma/-git-verify-remote" - REMOTE_\#_arg "NO-OP // :::chroma/-git-verify-remote" + REMOTE_A_NAME_2_arg "NO-OP // ::→chroma/-git-verify-correct-branch-name" + REMOTE_A_NAME_3_arg "NO-OP // ::→chroma/-git-verify-correct-branch-name" + REMOTE_A_URL_3_arg "NO-OP // ::→chroma/main-chroma-std-verify-url" + REMOTE_A_URL_4_arg "NO-OP // ::→chroma/main-chroma-std-verify-url" + BRANCH_3_arg "NO-OP // ::→chroma/-git-verify-branch" + BRANCH_\#_arg "NO-OP // ::→chroma/-git-verify-branch" + REMOTE_2_arg "NO-OP // ::→chroma/-git-verify-remote" + REMOTE_\#_arg "NO-OP // ::→chroma/-git-verify-remote" ## }}} @@ -483,8 +485,8 @@ fsh__git__chroma__def=( --find-renames=|-C|--find-copies=|-l|--diff-filter=|-S|-G|--find-object=| --relative=|-O|--relative=|--inter-hunk-context=|--ignore-submodules=| --src-prefix=|--dst-prefix=|--line-prefix=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (--follow|--decorate|--no-decorate|--source|--use-mailmap|--full-diff| --log-size|--all-match|--invert-grep|-i|--regexp-ignore-case|--basic-regexp| @@ -510,9 +512,9 @@ fsh__git__chroma__def=( --ignore-blank-lines|-W|--function-context|--ext-diff|--no-ext-diff| --textconv|--no-textconv|--ignore-submodules|--no-prefix| --ita-invisible-in-index) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" - LOG_1_arg "NO-OP // :::chroma/-git-verify-rev-range-or-file" + LOG_1_arg "NO-OP // ::→chroma/-git-verify-rev-range-or-file" ## ## TAG @@ -522,65 +524,65 @@ fsh__git__chroma__def=( "TAG_0_opt^" " (-u|--local-user=|--cleanup=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || -m - <<>> NO-OP // :::chroma/-git-commit-msg-opt-action - <<>> NO-OP // :::chroma/-git-commit-msg-opt-ARG-action + <<>> NO-OP // ::→chroma/-git-commit-msg-opt-action + <<>> NO-OP // ::→chroma/-git-commit-msg-opt-ARG-action || (-F|--file) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/-git-verify-file + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/-git-verify-file || (-a|--annotate|-s|--sign|-f|-e|--edit) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || (-u|--local-user=|--cleanup=|-m|-F|--file|-a|--annotate|-s|--sign| -f|-e|--edit):add <<>> TAG_NEW_1_arg // COMMIT_2_arg // NO_MATCH_#_arg // NO_MATCH_#_opt" - TAG_NEW_1_arg "NO-OP // :::chroma/-git-verify-correct-branch-name" + TAG_NEW_1_arg "NO-OP // ::→chroma/-git-verify-correct-branch-name" - TAG_1_arg "NO-OP // :::chroma/-git-verify-tag-name" + TAG_1_arg "NO-OP // ::→chroma/-git-verify-tag-name" "TAG_D_0_opt^" " (-d) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || -d:add <<>> TAG_#_arg // NO_MATCH_#_opt || -d:del <<>> TAG_0_opt // TAG_NEW_1_arg // COMMIT_2_arg" - "TAG_#_arg" "NO-OP // :::chroma/-git-verify-tag-name" + "TAG_#_arg" "NO-OP // ::→chroma/-git-verify-tag-name" "TAG_L_0_opt^" " (-l) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || -l:add <<>> TAG_L_0_opt // TAG_PAT_#_arg // NO_MATCH_#_opt || -l:del <<>> TAG_0_opt // TAG_NEW_1_arg // COMMIT_2_arg" - "TAG_L_0_opt" " + TAG_L_0_opt " (-n|--contains|--no-contains|--points-at|--column=|--sort=|--format=| --color=) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action || (--column|--no-column|--create-reflog|--merged|--no-merged|--color|-i) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" - "TAG_PAT_#_arg" "NO-OP // :::chroma/main-chroma-std-verify-pattern" + "TAG_PAT_#_arg" "NO-OP // ::→chroma/main-chroma-std-verify-pattern" "TAG_V_0_opt^" " (-v) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action || -v:add <<>> TAG_V_0_opt // TAG_#_arg // NO_MATCH_#_opt || -v:del <<>> TAG_0_opt // TAG_NEW_1_arg // COMMIT_2_arg" - "TAG_V_0_opt" " + TAG_V_0_opt " --format= - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action - <<>> NO-OP // :::chroma/main-chroma-std-aopt-ARG-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-ARG-action" ## ## All remaining subcommands @@ -588,13 +590,13 @@ fsh__git__chroma__def=( ## {{{ "subcmd:*" "CATCH_ALL_#_opt" - "CATCH_ALL_#_opt" "* <<>> NO-OP // :::chroma/main-chroma-std-aopt-SEMI-action" + "CATCH_ALL_#_opt" "* <<>> NO-OP // ::→chroma/main-chroma-std-aopt-SEMI-action" ## }}} ) # Called after entering just "git" on the command line -:chroma/-git-first-call() { +→chroma/-git-first-call() { # Called for the first time - new command # FAST_HIGHLIGHT is used because it survives between calls, and # allows to use a single global hash only, instead of multiple @@ -614,23 +616,23 @@ fsh__git__chroma__def=( return 1 } -:chroma/-git-check-if-alias() { +→chroma/-git-check-if-alias() { local _wrd="$1" local -a _result typeset -ga fsh__chroma__git__aliases _result=( ${(M)fsh__chroma__git__aliases[@]:#${_wrd}[[:space:]]##*} ) - :chroma/main-chroma-print "Got is-alias-_result: $_result" + →chroma/main-chroma-print "Got is-alias-_result: $_result" [[ -n "$_result" ]] && \ FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]="${${${_result#* }## ##}%% *}" } # A hook that returns the list of git's # available subcommands in $reply -:chroma/-git-get-subcommands() { +→chroma/-git-get-subcommands() { local __svalue integer __ivalue - LANG=C -fast-run-command "git help -a" chroma-${FAST_HIGHLIGHT[chroma-current]}-subcmd-list "" $(( 15 * 60 )) + LANG=C .fast-run-command "git help -a" chroma-${FAST_HIGHLIGHT[chroma-current]}-subcmd-list "" $(( 15 * 60 )) if [[ "${__lines_list[1]}" = See* ]]; then # (**) # git >= v2.20, the aliases in the `git help -a' command @@ -646,7 +648,7 @@ fsh__git__chroma__def=( # This allows to check if the command is an alias - we want to # highlight the aliased command just like the target command of # the alias - -fast-run-command "+git config --get-regexp 'alias.*'" chroma-${FAST_HIGHLIGHT[chroma-current]}-alias-list "[[:space:]]#alias." $(( 15 * 60 )) + .fast-run-command "+git config --get-regexp 'alias.*'" chroma-${FAST_HIGHLIGHT[chroma-current]}-alias-list "[[:space:]]#alias." $(( 15 * 60 )) fi __tmp=${#__lines_list} @@ -658,9 +660,9 @@ fsh__git__chroma__def=( } # A generic handler -:chroma/-git-verify-remote() { +→chroma/-git-verify-remote() { local _wrd="$4" - -fast-run-git-command "git remote" "chroma-git-remotes-$PWD" "" $(( 2 * 60 )) + .fast-run-git-command "git remote" "chroma-git-remotes-$PWD" "" 10 [[ -n ${__lines_list[(r)$_wrd]} ]] && { __style=${FAST_THEME_NAME}correct-subtle; return 0 } || { @@ -669,25 +671,25 @@ fsh__git__chroma__def=( } # A generic handler - checks if given ref is correct -:chroma/-git-verify-ref() { +→chroma/-git-verify-ref() { local _wrd="$4" _wrd="${_wrd%%:*}" - -fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-refs-$PWD" "refs/heads" $(( 2 * 60 )) + .fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-refs-$PWD" "refs/heads" 10 [[ -n ${__lines_list[(r)$_wrd]} ]] && \ { __style=${FAST_THEME_NAME}correct-subtle; return 0; } || \ { __style=${FAST_THEME_NAME}incorrect-subtle; return 1; } } # A generic handler - checks if given remote or group is correct -:chroma/-git-verify-remote-or-group() { - :chroma/-git-verify-remote "$@" && return 0 +→chroma/-git-verify-remote-or-group() { + →chroma/-git-verify-remote "$@" && return 0 # The check for a group is to follow below integer _start="$2" _end="$3" local _scmd="$1" _wrd="$4" } # A generic handler - checks whether the file exists -:chroma/-git-verify-file() { +→chroma/-git-verify-file() { integer _start="$2" _end="$3" __pos __start __end local _wrd="$4" bg @@ -721,7 +723,7 @@ fsh__git__chroma__def=( } # A generic handler - checks whether the file exists -:chroma/-git-verify-file-or-dir() { +→chroma/-git-verify-file-or-dir() { integer _start="$2" _end="$3" __pos __start __end retval local _wrd="$4" bg @@ -757,48 +759,54 @@ fsh__git__chroma__def=( return $retval } -:chroma/-git-verify-branch() { +→chroma/-git-verify-branch() { local _wrd="$4" - -fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-branches-$PWD" "refs/heads" $(( 2 * 60 )) - [[ -n ${__lines_list[(r)$_wrd]} ]] && \ - { __style=${FAST_THEME_NAME}correct-subtle; return 0; } || \ - { __style=${FAST_THEME_NAME}incorrect-subtle; return 1; } + .fast-run-git-command "git for-each-ref --format='%(refname:short)'" "chroma-git-branches-$PWD" "refs/heads" 10 + if [[ -n ${__lines_list[(r)$_wrd]} ]] { + __style=${FAST_THEME_NAME}correct-subtle; return 0 + } elif [[ -n ${__lines_list[(r)origin/$_wrd]} ]] { + __style=${FAST_THEME_NAME}correct-subtle; return 0 + } else { + __style=${FAST_THEME_NAME}incorrect-subtle; return 1 + } } -:chroma/-git-verify-also-unfetched-ref() { +→chroma/-git-verify-also-unfetched-ref() { local _wrd="$4" - -fast-run-git-command "git config --get checkout.defaultRemote" \ - "chroma-git-defaultRemote-$PWD" "" $(( 2 * 60 )) + .fast-run-git-command "git config --get checkout.defaultRemote" \ + "chroma-git-defaultRemote-$PWD" "" 10 local remote="${__lines_list[1]:-origin}" - -fast-run-git-command "git rev-list --count --no-walk + .fast-run-git-command "git rev-list --count --no-walk --glob=\"refs/remotes/$remote/$_wrd\"" \ - "chroma-git-unfetched-ref-$PWD" "" $(( 2 * 60 )) + "chroma-git-unfetched-ref-$PWD" "" 10 (( __lines_list[1] )) && { __style=${FAST_THEME_NAME}correct-subtle; return 0; } || \ { __style=${FAST_THEME_NAME}incorrect-subtle; return 1; } } # A generic handler -:chroma/-git-file-or-ubranch-or-commit-verify() { - :chroma/-git-verify-commit "$@" && return - :chroma/-git-verify-file "$@" && return - :chroma/-git-verify-also-unfetched-ref "$@" +→chroma/-git-file-or-ubranch-or-commit-verify() { + →chroma/-git-verify-commit "$@" && return + →chroma/-git-verify-file "$@" && return + →chroma/-git-verify-branch "$@" && return + →chroma/-git-verify-also-unfetched-ref "$@" } # A generic handler -:chroma/-git-file-or-dir-or-ubranch-or-commit-verify() { - :chroma/-git-verify-commit "$@" && return - :chroma/-git-verify-file-or-dir "$@" && return - :chroma/-git-verify-also-unfetched-ref "$@" +→chroma/-git-file-or-dir-or-ubranch-or-commit-verify() { + →chroma/-git-verify-commit "$@" && return + →chroma/-git-verify-file-or-dir "$@" && return + →chroma/-git-verify-branch "$@" && return + →chroma/-git-verify-also-unfetched-ref "$@" } # A generic handler -:chroma/-git-verify-correct-branch-name() { +→chroma/-git-verify-correct-branch-name() { local _wrd="$4" - :chroma/-git-verify-commit "$@" && \ + →chroma/-git-verify-commit "$@" && \ { __style=${FAST_THEME_NAME}incorrect-subtle; return 0; } - :chroma/-git-verify-remote "$@" && \ + →chroma/-git-verify-remote "$@" && \ { __style=${FAST_THEME_NAME}incorrect-subtle; return 0; } [[ "$_wrd" != ./* && "$_wrd" != *..* && "$_wrd" != *[~\^\ $'\t']* && @@ -808,11 +816,12 @@ fsh__git__chroma__def=( } # A generic handler that checks if given commit reference is correct -:chroma/-git-verify-commit() { +→chroma/-git-verify-commit() { local _wrd="$4" __lines_list=() - -fast-run-git-command "git rev-parse --verify --quiet \"$_wrd\"" "chroma-git-commits-$PWD-$_wrd" "" $(( 1.5 * 60 )) - if (( ${#__lines_list} )); then + .fast-run-git-command --status "git rev-parse --verify --quiet \"$_wrd\"" \ + "chroma-git-commits-$PWD-$_wrd" "" $(( 1.5 * 60 )) + if (( __lines_list[1] == 0 )); then __style=${FAST_THEME_NAME}correct-subtle return 0 fi @@ -822,28 +831,28 @@ fsh__git__chroma__def=( # A generic handler that checks if given commit reference # is correct or if it's a file that exists -:chroma/-git-verify-commit-or-file() { - :chroma/-git-verify-commit "$@" && return - :chroma/-git-verify-file "$@" +→chroma/-git-verify-commit-or-file() { + →chroma/-git-verify-commit "$@" && return + →chroma/-git-verify-file "$@" } # A generic handler that checks if given commit reference # is correct or if it's a file or directives that exists -:chroma/-git-verify-commit-or-file-or-dir() { - :chroma/-git-verify-commit "$@" && return - :chroma/-git-verify-file-or-dir "$@" +→chroma/-git-verify-commit-or-file-or-dir() { + →chroma/-git-verify-commit "$@" && return + →chroma/-git-verify-file-or-dir "$@" } # A generic handler that checks if given revision range # is correct or if a file of that name exists -:chroma/-git-verify-rev-range-or-file() { +→chroma/-git-verify-rev-range-or-file() { local _wrd="$4" - :chroma/-git-verify-commit "$@" && return 0 + →chroma/-git-verify-commit "$@" && return 0 if [[ "$_wrd" = *..* ]]; then (( FAST_HIGHLIGHT[chroma-git-reset-etc-saw-file] )) && { - :chroma/-git-verify-file "$@" && return 0 + →chroma/-git-verify-file "$@" && return 0 __style=${FAST_THEME_NAME}unknown-token return 1 } @@ -852,29 +861,29 @@ fsh__git__chroma__def=( return 0 fi - :chroma/-git-verify-file "$@" && \ + →chroma/-git-verify-file "$@" && \ { FAST_HIGHLIGHT[chroma-git-reset-etc-saw-file]=1; return 0; } __style="" return 1 } -:chroma/-git-verify-tag-name() { +→chroma/-git-verify-tag-name() { local _wrd="$4" - -fast-run-git-command "git tag" "chroma-git-tags-$PWD" "" $(( 2*60 )) + .fast-run-git-command "git tag" "chroma-git-tags-$PWD" "" $(( 2*60 )) [[ -n ${__lines_list[(r)$_wrd]} ]] && \ __style=${FAST_THEME_NAME}correct-subtle || \ __style=${FAST_THEME_NAME}incorrect-subtle } # A handler for the commit's -m/--message options.Currently -# does the same what :chroma/main-chroma-std-aopt-action does -:chroma/-git-commit-msg-opt-action() { - :chroma/main-chroma-std-aopt-action "$@" +# does the same what →chroma/main-chroma-std-aopt-action does +→chroma/-git-commit-msg-opt-action() { + →chroma/main-chroma-std-aopt-action "$@" } # A handler for the commit's -m/--message options' argument -:chroma/-git-commit-msg-opt-ARG-action() { +→chroma/-git-commit-msg-opt-ARG-action() { integer _start="$2" _end="$3" local _scmd="$1" _wrd="$4" @@ -913,9 +922,9 @@ fsh__git__chroma__def=( # A RESET handler # TODO: differentiate tree-ish from commit -:chroma/-git-RESET-verify-commit-or-file() { - :chroma/-git-verify-commit "$@" && { - :chroma/-git-verify-file "$@" && { +→chroma/-git-RESET-verify-commit-or-file() { + →chroma/-git-verify-commit "$@" && { + →chroma/-git-verify-file "$@" && { # TODO: with -p/--patch, the <paths> are optional, # and this argument will be taken as a commit in a # specific circumstances @@ -934,7 +943,7 @@ fsh__git__chroma__def=( return 0 } - :chroma/-git-verify-file "$@" && \ + →chroma/-git-verify-file "$@" && \ { FAST_HIGHLIGHT[chroma-git-reset-etc-saw-file]=1; return 0; } return 1 diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-grep.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-grep.ch index 54309bf..54309bf 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-grep.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-grep.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-hub.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-hub.ch index 466d2e5..2f0626a 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-hub.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-hub.ch @@ -13,7 +13,7 @@ if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then fi if [[ "$__wrd" != -* ]] && (( FAST_HIGHLIGHT[chroma-git-got-subcommand] == 0 )); then - -fast-run-command "git config --get-regexp 'alias.*'" chroma-git-alias-list "" $(( 5 * 60 )) + .fast-run-command "git config --get-regexp 'alias.*'" chroma-git-alias-list "" $(( 5 * 60 )) # Grep for line: alias.{user-entered-subcmd}[[:space:]], and remove alias. prefix __lines_list=( ${${(M)__lines_list[@]:#alias.${__wrd}[[:space:]]##*}#alias.} ) diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ionice.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ionice.ch index f328f83..f328f83 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ionice.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ionice.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-lab.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-lab.ch index cf3fc95..9c76e03 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-lab.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-lab.ch @@ -17,7 +17,7 @@ if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then fi if [[ "$__wrd" != -* ]] && (( FAST_HIGHLIGHT[chroma-git-got-subcommand] == 0 )); then - -fast-run-command "git config --get-regexp 'alias.*'" chroma-git-alias-list "" $(( 5 * 60 )) + .fast-run-command "git config --get-regexp 'alias.*'" chroma-git-alias-list "" $(( 5 * 60 )) # Grep for line: alias.{user-entered-subcmd}[[:space:]], and remove alias. prefix __lines_list=( ${${(M)__lines_list[@]:#alias.${__wrd}[[:space:]]##*}#alias.} ) diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-make.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-make.ch index 91f7324..33f46bf 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-make.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-make.ch @@ -73,7 +73,7 @@ local -a __lines_list reply2 __wrd="${(Q)__wrd}" if [[ -f "${FAST_HIGHLIGHT[chroma-make-custom-dir]%/}/${FAST_HIGHLIGHT[chroma-make-custom-file]}" ]] && \ - -fast-make-targets < "${FAST_HIGHLIGHT[chroma-make-custom-dir]%/}/${FAST_HIGHLIGHT[chroma-make-custom-file]}" + make -f "${FAST_HIGHLIGHT[chroma-make-custom-dir]%/}/${FAST_HIGHLIGHT[chroma-make-custom-file]}" -Rrpq | awk '/^[a-zA-Z0-9][^$#\t=]*:/' | .fast-make-targets then if [[ "${reply2[(r)$__wrd]}" ]]; then (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}correct-subtle]}") diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-nice.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-nice.ch index 7fa8a94..7fa8a94 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-nice.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-nice.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-nmcli.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-nmcli.ch index be444e5..be444e5 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-nmcli.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-nmcli.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-node.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-node.ch index 65f214c..65f214c 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-node.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-node.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ogit.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ogit.ch index 06f0d75..6f76674 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ogit.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ogit.ch @@ -79,7 +79,7 @@ else # Check if the command is an alias - we want to highlight the # aliased command just like the target command of the alias - -fast-run-command "git config --get-regexp 'alias.*'" chroma-git-alias-list "" $(( 10 * 60 )) + .fast-run-command "git config --get-regexp 'alias.*'" chroma-git-alias-list "" $(( 10 * 60 )) # Grep for line: alias.{user-entered-subcmd}[[:space:]], and remove alias. prefix __lines_list=( ${${(M)__lines_list[@]:#alias.${__wrd}[[:space:]]##*}#alias.} ) @@ -95,7 +95,7 @@ else fi if (( __start_pos >= 0 )); then # if subcommand exists - LANG=C -fast-run-command "git help -a" chroma-git-subcmd-list "" $(( 10 * 60 )) + LANG=C .fast-run-command "git help -a" chroma-git-subcmd-list "" $(( 10 * 60 )) # (s: :) will split on every space, but because the expression # isn't double-quoted, the empty elements will be eradicated # Some further knowledge-base: s-flag is special, it skips @@ -144,10 +144,10 @@ else if [[ "$__wrd" != -* || "${FAST_HIGHLIGHT[chrome-git-occurred-double-hyphen]}" -eq 1 ]]; then (( FAST_HIGHLIGHT[chroma-git-counter] += 1, __idx1 = FAST_HIGHLIGHT[chroma-git-counter] )) if (( __idx1 == 2 )); then - -fast-run-git-command "git remote" "chroma-git-remotes" "" + .fast-run-git-command "git remote" "chroma-git-remotes" "" else __wrd="${__wrd%%:*}" - -fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-branches" "refs/heads" + .fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-branches" "refs/heads" fi # if remote/ref exists if [[ -n ${__lines_list[(r)$__wrd]} ]]; then @@ -173,7 +173,7 @@ else fi elif (( ${FAST_HIGHLIGHT[chroma-git-fetch-multiple]} )) \ && [[ "$__wrd" != -* || "${FAST_HIGHLIGHT[chrome-git-occurred-double-hyphen]}" -eq 1 ]]; then - -fast-run-git-command "git remote" "chroma-git-remotes" "" + .fast-run-git-command "git remote" "chroma-git-remotes" "" if [[ -n ${__lines_list[(r)$__wrd]} ]]; then __style=${FAST_THEME_NAME}correct-subtle fi @@ -283,12 +283,12 @@ else __style=${FAST_THEME_NAME}incorrect-subtle fi elif [[ "$__idx1" = 3 && "$FAST_HIGHLIGHT[chroma-git-remote-subcommand]" = "add" ]]; then - -fast-run-git-command "git remote" "chroma-git-remotes" "" + .fast-run-git-command "git remote" "chroma-git-remotes" "" if [[ -n ${__lines_list[(r)$__wrd]} ]]; then __style=${FAST_THEME_NAME}incorrect-subtle fi elif [[ "$__idx1" = 3 && -n "$FAST_HIGHLIGHT[chroma-git-remote-subcommand]" ]]; then - -fast-run-git-command "git remote" "chroma-git-remotes" "" + .fast-run-git-command "git remote" "chroma-git-remotes" "" if [[ -n ${__lines_list[(r)$__wrd]} ]]; then __style=${FAST_THEME_NAME}correct-subtle else @@ -305,7 +305,7 @@ else FAST_HIGHLIGHT[chroma-git-branch-change]=1 return 1 elif [[ "$__wrd" != -* ]]; then - -fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-branches" "refs/heads" + .fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-branches" "refs/heads" if [[ -n ${__lines_list[(r)$__wrd]} ]]; then __style=${FAST_THEME_NAME}correct-subtle elif (( FAST_HIGHLIGHT[chroma-git-branch-change] )); then @@ -328,8 +328,8 @@ else if [[ "$__wrd" != -* ]]; then (( FAST_HIGHLIGHT[chroma-git-counter] += 1, __idx1 = FAST_HIGHLIGHT[chroma-git-counter] )) if [[ ${FAST_HIGHLIGHT[chroma-git-counter]} -eq 2 ]]; then - -fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-branches" "refs/heads" - -fast-run-git-command "+git tag" "chroma-git-tags" "" + .fast-run-git-command "git for-each-ref --format='%(refname:short)' refs/heads" "chroma-git-branches" "refs/heads" + .fast-run-git-command "+git tag" "chroma-git-tags" "" [[ -n ${__lines_list[(r)$__wrd]} ]] && __style=${FAST_THEME_NAME}incorrect-subtle elif [[ ${FAST_HIGHLIGHT[chroma-git-counter]} -eq 3 ]]; then fi @@ -346,7 +346,7 @@ else return 1; ;; (3) - -fast-run-git-command "git tag" "chroma-git-tags" "" + .fast-run-git-command "git tag" "chroma-git-tags" "" [[ -n ${__lines_list[(r)$__wrd]} ]] && \ __style=${FAST_THEME_NAME}correct-subtle || \ __style=${FAST_THEME_NAME}incorrect-subtle diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-perl.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-perl.ch index 49f0ad3..49f0ad3 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-perl.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-perl.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/→chroma/-podman.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-podman.ch new file mode 100644 index 0000000..f74afd6 --- /dev/null +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-podman.ch @@ -0,0 +1,90 @@ +# -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# Copyright (c) 2018 Sebastian Gniazdowski +# +# Chroma function for command `podman'. It verifies command line, by denoting +# wrong and good arguments by color. Currently implemented: verification of +# image IDs passed to: podman image rm <ID>. +# +# $1 - 0 or 1, denoting if it's first call to the chroma, or following one +# $2 - the current token, also accessible by $__arg from the above scope - +# basically a private copy of $__arg +# $3 - a private copy of $_start_pos, i.e. the position of the token in the +# command line buffer, used to add region_highlight entry (see man), +# because Zsh colorizes by *ranges* in command line buffer +# $4 - a private copy of $_end_pos from the above scope +# + +(( next_word = 2 | 8192 )) + +local __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" +local __style +integer __idx1 __idx2 +local -a __lines_list + +(( __first_call )) && { + # Called for the first time - new command + # FAST_HIGHLIGHT is used because it survives between calls, and + # allows to use a single global hash only, instead of multiple + # global variables + FAST_HIGHLIGHT[chroma-podman-counter]=0 + FAST_HIGHLIGHT[chroma-podman-got-subcommand]=0 + FAST_HIGHLIGHT[chroma-podman-subcommand]="" + FAST_HIGHLIGHT[chrome-podman-got-msg1]=0 + return 1 +} || { + # Following call, i.e. not the first one + + # Check if chroma should end – test if token is of type + # "starts new command", if so pass-through – chroma ends + [[ "$__arg_type" = 3 ]] && return 2 + + if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then + return 1 + fi + + if [[ "$__wrd" = -* && ${FAST_HIGHLIGHT[chroma-podman-got-subcommand]} -eq 0 ]]; then + __style=${FAST_THEME_NAME}${${${__wrd:#--*}:+single-hyphen-option}:-double-hyphen-option} + else + if (( FAST_HIGHLIGHT[chroma-podman-got-subcommand] == 0 )); then + FAST_HIGHLIGHT[chroma-podman-got-subcommand]=1 + FAST_HIGHLIGHT[chroma-podman-subcommand]="$__wrd" + __style=${FAST_THEME_NAME}subcommand + (( FAST_HIGHLIGHT[chroma-podman-counter] += 1 )) + else + __wrd="${__wrd//\`/x}" + __arg="${__arg//\`/x}" + __wrd="${(Q)__wrd}" + if [[ "${FAST_HIGHLIGHT[chroma-podman-subcommand]}" = "image" ]]; then + [[ "$__wrd" != -* ]] && { + (( FAST_HIGHLIGHT[chroma-podman-counter] += 1, __idx1 = FAST_HIGHLIGHT[chroma-podman-counter] )) + + if (( __idx1 == 2 )); then + __style=${FAST_THEME_NAME}subcommand + elif (( __idx1 == 3 )); then + .fast-run-command "podman images -q" chroma-podman-list "" + [[ -n "${__lines_list[(r)$__wrd]}" ]] && { + (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && \ + reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}correct-subtle]}") + } || { + (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && \ + reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}incorrect-subtle]}") + } + fi + } || __style=${FAST_THEME_NAME}${${${__wrd:#--*}:+single-hyphen-option}:-double-hyphen-option} + else + return 1 + fi + fi + fi +} + +# Add region_highlight entry (via `reply' array) +[[ -n "$__style" ]] && (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") + +# We aren't passing-through, do obligatory things ourselves +(( this_word = next_word )) +_start_pos=$_end_pos + +return 0 + +# vim:ft=zsh:et:sw=4 diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-precommand.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-precommand.ch index 7e85a06..7e85a06 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-precommand.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-precommand.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-printf.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-printf.ch index 89d2789..89d2789 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-printf.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-printf.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ruby.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ruby.ch index 3495cc8..3495cc8 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ruby.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ruby.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-scp.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-scp.ch index d162284..d162284 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-scp.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-scp.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-sh.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-sh.ch index 13c8ded..43fa8f9 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-sh.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-sh.ch @@ -14,7 +14,7 @@ (( next_word = 2 | 8192 )) -local __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" +local __first_call=$1 __wrd=$2 __start_pos=$3 __end_pos=$4 local __style integer __idx1 __idx2 local -a __lines_list @@ -28,31 +28,31 @@ local -a __lines_list # Check if chroma should end – test if token is of type # "starts new command", if so pass-through – chroma ends - [[ "$__arg_type" = 3 ]] && return 2 + [[ $__arg_type = 3 ]] && return 2 if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then return 1 fi - __wrd="${${${(Q)__wrd}#[\"\']}%[\"\']}" - if [[ "$__wrd" = -* && "$__wrd" != -*c* ]]; then + __wrd=${${${(Q)__wrd}#[\"\']}%[\"\']} + if [[ $__wrd = -* && $__wrd != -*c* ]]; then __style=${FAST_THEME_NAME}${${${__wrd:#--*}:+single-hyphen-option}:-double-hyphen-option} else if (( FAST_HIGHLIGHT[chrome-git-got-c] == 1 )); then for (( __idx1 = 1, __idx2 = 1; __idx2 <= __asize; ++ __idx1 )); do - [[ "${__arg[__idx2]}" = "${__wrd[__idx1]}" ]] && break - while [[ "${__arg[__idx2]}" != "${__wrd[__idx1]}" ]]; do + [[ ${__arg[__idx2]} = ${__wrd[__idx1]} ]] && break + while [[ ${__arg[__idx2]} != ${__wrd[__idx1]} ]]; do (( ++ __idx2 )) (( __idx2 > __asize )) && { __idx2=0; break; } done (( __idx2 == 0 )) && break - [[ "${__arg[__idx2]}" = "${__wrd[__idx1]}" ]] && break + [[ ${__arg[__idx2]} = ${__wrd[__idx1]} ]] && break done FAST_HIGHLIGHT[chrome-git-got-c]=0 (( _start_pos-__PBUFLEN >= 0 )) && \ -fast-highlight-process "$PREBUFFER" "${__wrd}" "$(( __start_pos + __idx2 - 1 ))" - elif [[ "$__wrd" = -*c* ]]; then + elif [[ $__wrd = -*c* ]]; then FAST_HIGHLIGHT[chrome-git-got-c]=1 else return 1 @@ -61,7 +61,7 @@ local -a __lines_list } # Add region_highlight entry (via `reply' array) -[[ -n "$__style" ]] && (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") +[[ -n $__style ]] && (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") # We aren't passing-through, do obligatory things ourselves (( this_word = next_word )) diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-source.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-source.ch index dc27e76..dc27e76 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-source.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-source.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ssh.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ssh.ch index 879158f..1d5e257 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-ssh.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-ssh.ch @@ -25,7 +25,7 @@ setopt extended_glob warn_create_global typeset_silent local __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" local __style check_port=0 host_start_offset host_style user_style possible_host -local -a match mbegin mend completions_user completions_host +local -a match mbegin mend completions_users completions_host # First call, i.e. command starts, i.e. "grep" token etc. (( __first_call )) && { @@ -70,11 +70,14 @@ local -a match mbegin mend completions_user completions_host # Zstyle clobbers reply for sure zstyle -a ":completion:*:users" users completions_users } - (( ! $#completions_users )) && completions_users=(${(k)userdirs}) if (( $#completions_users )); then [[ $match[2] = ${~${:-(${(j:|:)completions_users})}} ]] \ && user_style=${FAST_THEME_NAME}correct-subtle \ || user_style=${FAST_THEME_NAME}incorrect-subtle + elif (( $#userdirs )); then + [[ -n $userdirs[$match[2]] ]] \ + && user_style=${FAST_THEME_NAME}correct-subtle \ + || user_style=${FAST_THEME_NAME}incorrect-subtle fi [[ -n $user_style ]] \ && (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}-(mend[5]-mend[2]), __start >= 0 )) \ diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-subcommand.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-subcommand.ch index 0665548..0665548 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-subcommand.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-subcommand.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/→chroma/-subversion.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-subversion.ch new file mode 100644 index 0000000..4149cc6 --- /dev/null +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-subversion.ch @@ -0,0 +1,250 @@ +# -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*- +# ------------------------------------------------------------------------------------------------- +# Copyright (c) 2018 Sebastian Gniazdowski +# Copyright (C) 2019 by Philippe Troin (F-i-f on GitHub) +# All rights reserved. +# +# The only licensing for this file follows. +# +# Redistribution and use in source and binary forms, with or without modification, are permitted +# provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, this list of conditions +# and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, this list of +# conditions and the following disclaimer in the documentation and/or other materials provided +# with the distribution. +# * Neither the name of the zsh-syntax-highlighting contributors nor the names of its contributors +# may be used to endorse or promote products derived from this software without specific prior +# written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR +# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +# FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER +# IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# ------------------------------------------------------------------------------------------------- + +→chroma/-subversion.ch/parse-revision() { + setopt local_options extendedglob warn_create_global typeset_silent + local __wrd="$1" __start_pos="$2" __end_pos="$3" __style __start __end + case $__wrd in + (r|)[0-9]##) __style=${FAST_THEME_NAME}mathnum ;; + (HEAD|BASE|COMITTED|PREV)) __style=${FAST_THEME_NAME}correct-subtle ;; + '{'[^}]##'}') __style=${FAST_THEME_NAME}subtle-bg ;; + *) __style=${FAST_THEME_NAME}incorrect-subtle ;; + esac + (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") +} + +→chroma/-subversion.ch/parse-target() { + setopt local_options extendedglob warn_create_global typeset_silent + local __wrd="$1" __start_pos="$2" __end_pos="$3" __style __start __end + if [[ $__wrd == *@[^/]# ]] + then + local place=${__wrd%@[^/]#} + local rev=$__wrd[$(($#place+2)),$#__wrd] + if [[ -e $place ]]; then + local __style + [[ -d $place ]] && __style="${FAST_THEME_NAME}path-to-dir" || __style="${FAST_THEME_NAME}path" + (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}-$#rev-1, __start >= 0 )) \ + && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") + fi + (( __start=__start_pos-${#PREBUFFER}+$#place, __end=__end_pos-${#PREBUFFER}-$#rev, __start >= 0 )) \ + && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}for-loop-separator]}") + →chroma/-subversion.ch/parse-revision $rev $((__start_pos+$#place+1)) $__end_pos + else + return 1 + fi +} + +setopt local_options extendedglob warn_create_global + +# Keep chroma-takever state meaning: until ;, handle highlighting via chroma. +# So the below 8192 assignment takes care that next token will be routed to chroma. +(( next_word = 2 | 8192 )) + +local __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" +local __style +integer __idx1 __idx2 + +(( __first_call )) && { + # Called for the first time - new command. + # FAST_HIGHLIGHT is used because it survives between calls, and + # allows to use a single global hash only, instead of multiple + # global string variables. + FAST_HIGHLIGHT[subversion-command]=$__wrd + FAST_HIGHLIGHT[subversion-option-argument]= + FAST_HIGHLIGHT[subversion-subcommand]= + FAST_HIGHLIGHT[subversion-subcommand-arguments]=0 + + # Set style for region_highlight entry. It is used below in + # '[[ -n "$__style" ]] ...' line, which adds highlight entry, + # like "10 12 fg=green", through `reply' array. + # + # Could check if command `example' exists and set `unknown-token' + # style instead of `command' + __style=${FAST_THEME_NAME}command + +} || { + # Following call, i.e. not the first one + + # Check if chroma should end – test if token is of type + # "starts new command", if so pass-through – chroma ends + [[ "$__arg_type" = 3 ]] && return 2 + + if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then + return 1 + fi + + if [[ "$__wrd" = -* ]]; then + # Detected option, add style for it. + [[ "$__wrd" = --* ]] && __style=${FAST_THEME_NAME}double-hyphen-option || \ + __style=${FAST_THEME_NAME}single-hyphen-option + case $FAST_HIGHLIGHT[subversion-command]/$FAST_HIGHLIGHT[subversion-subcommand] in + svn/) + case $__wrd in + --username|-u) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --password|-p) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --config-(dir|option)) FAST_HIGHLIGHT[subversion-option-argument]=any;; + esac + ;; + svn/?*) + case $__wrd in + --accept) FAST_HIGHLIGHT[subversion-option-argument]=accept;; + --change|-c) FAST_HIGHLIGHT[subversion-option-argument]=revision;; + --changelist|--cl) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --(set-|)depth) FAST_HIGHLIGHT[subversion-option-argument]=depth;; + --diff(3|)-cmd) FAST_HIGHLIGHT[subversion-option-argument]=cmd;; + --editor-cmd) FAST_HIGHLIGHT[subversion-option-argument]=cmd;; + --encoding) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --file) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --limit|-l) FAST_HIGHLIGHT[subversion-option-argument]=number;; + --message|-m) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --native-eol) FAST_HIGHLIGHT[subversion-option-argument]=eol;; + --new|--old) FAST_HIGHLIGHT[subversion-option-argument]=target;; + --revision|-r) FAST_HIGHLIGHT[subversion-option-argument]=revision-pair;; + --show-revs) FAST_HIGHLIGHT[subversion-option-argument]=show-revs;; + --strip) FAST_HIGHLIGHT[subversion-option-argument]=number;; + --with-revprop) FAST_HIGHLIGHT[subversion-option-argument]=revprop;; + esac + ;; + svnadmin/*) + case $__wrd in + --config-dir) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --fs-type) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --memory-cache-size|-M) FAST_HIGHLIGHT[subversion-option-argument]=number;; + --parent-dir) FAST_HIGHLIGHT[subversion-option-argument]=any;; + --revision|-r) FAST_HIGHLIGHT[subversion-option-argument]=revision-pair;; + esac + ;; + svndumpfilter/*) + case $__wrd in + --targets) FAST_HIGHLIGHT[subversion-option-argument]=any;; + esac + ;; + esac + elif [[ -n $FAST_HIGHLIGHT[subversion-option-argument] ]]; then + case $FAST_HIGHLIGHT[subversion-option-argument] in + any) + FAST_HIGHLIGHT[subversion-option-argument]= + return 1 + ;; + accept) + [[ $__wrd = (p(|ostpone)|e(|dit)|l(|aunch)|base|working|recommended|[mt][cf]|(mine|theirs)-(conflict|full)) ]] \ + && __style=${FAST_THEME_NAME}correct-subtle \ + || __style=${FAST_THEME_NAME}incorrect-subtle + ;; + depth) + [[ $__wrd = (empty|files|immediates|infinity) ]] \ + && __style=${FAST_THEME_NAME}correct-subtle \ + || __style=${FAST_THEME_NAME}incorrect-subtle + ;; + number) + [[ $__wrd = [0-9]## ]] \ + && __style=${FAST_THEME_NAME}mathnum \ + || __style=${FAST_THEME_NAME}incorrect-subtle + ;; + eol) + [[ $__wrd = (CR(|LF)|LF) ]] \ + && __style=${FAST_THEME_NAME}correct-subtle \ + || __style=${FAST_THEME_NAME}incorrect-subtle + ;; + show-revs) + [[ $__wrd = (merged|eligible) ]] \ + && __style=${FAST_THEME_NAME}correct-subtle \ + || __style=${FAST_THEME_NAME}incorrect-subtle + ;; + revision) + →chroma/-subversion.ch/parse-revision $__wrd $__start_pos $__end_pos + ;; + revision-pair) + local -a match mbegin mend + if [[ $__wrd = (#b)(\{[^}]##\}|[^:]##)(:)(*) ]]; then + →chroma/-subversion.ch/parse-revision $match[1] $__start_pos $(( __end_pos - ( mend[3]-mend[2] ) - 1 )) + →chroma/-subversion.ch/parse-revision $match[3] $(( __start_pos + ( mbegin[3]-mbegin[1] ) )) $__end_pos + (( __start=__start_pos-${#PREBUFFER}+(mbegin[2]-mbegin[1]), __end=__end_pos-${#PREBUFFER}-(mend[3]-mend[2]), __start >= 0 )) \ + && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}for-loop-separator]}") + else + →chroma/-subversion.ch/parse-revision $__wrd $__start_pos $__end_pos + fi + ;; + target) + →chroma/-subversion.ch/parse-target $__wrd $__start_pos $__end_pos || return $? + ;; + cmd) + this_word=1 + return 1 + ;; + esac + FAST_HIGHLIGHT[subversion-option-argument]= + elif [[ -z $FAST_HIGHLIGHT[subversion-subcommand] ]] + then + FAST_HIGHLIGHT[subversion-subcommand]=$__wrd + local subcmds + case $FAST_HIGHLIGHT[subversion-command] in + svn) subcmds='(add|auth|blame|praise|annotate|ann|cat|changelist|cl|checkout|co|cleanup|commit|ci|copy|cp|delete|del|remove|rm|diff|di|export|help|\?|h|import|info|list|ls|lock|log|merge|mergeinfo|mkdir|move|mv|rename|ren|patch|propdel|pdel|pd|propedit|pedit|pe|propget|pget|pg|proplist|plist|pl|propset|pset|ps|relocate|resolve|resolved|revert|status|stat|st|switch|sw|unlock|update|up|upgrade|x-shelf-diff|x-shelf-drop|x-shelf-list|x-shelves|x-shelf-list-by-paths|x-shelf-log|x-shelf-save|x-shelve|x-unshelve)' ;; + svnadmin) subcmds="(crashtest|create|delrevprop|deltify|dump|dump-revprops|freeze|help|\?|h|hotcopy|info|list-dblogs|list-unused-dblogs|load|load-revprops|lock|lslocks|lstxns|pack|recover|rmlocks|rmtxns|setlog|setrevprop|setuuid|unlock|upgrade|verify)";; + svndumpfilter) subcmds='(include|exclude|help|\?)';; + esac + [[ $FAST_HIGHLIGHT[subversion-subcommand] = $~subcmds ]] \ + && __style=${FAST_THEME_NAME}subcommand \ + || __style=${FAST_THEME_NAME}incorrect-subtle + FAST_HIGHLIGHT[subversion-subcommand-arguments]=0 + else + (( FAST_HIGHLIGHT[subversion-subcommand-arguments]+=1 )) + if [[ ( $FAST_HIGHLIGHT[subversion-subcommand] == (checkout|co|export|log|merge|switch|sw) && $FAST_HIGHLIGHT[subversion-subcommand-arguments] -eq 1 ) \ + || $FAST_HIGHLIGHT[subversion-subcommand] == (blame|praise|annotate|ann|cat|copy|cp|diff|info|list|ls|mergeinfo) ]]; then + →chroma/-subversion.ch/parse-target $__wrd $__start_pos $__end_pos || return $? + else + return 1 + fi + fi +} + +# Add region_highlight entry (via `reply' array). +# If 1 will be added to __start_pos, this will highlight "oken". +# If 1 will be subtracted from __end_pos, this will highlight "toke". +# $PREBUFFER is for specific situations when users does command \<ENTER> +# i.e. when multi-line command using backslash is entered. +# +# This is a common place of adding such entry, but any above code can do +# it itself (and it does in other chromas) and skip setting __style to +# this way disable this code. +[[ -n "$__style" ]] && (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && reply+=("$__start $__end ${FAST_HIGHLIGHT_STYLES[$__style]}") + +# We aren't passing-through, do obligatory things ourselves. +# _start_pos=$_end_pos advainces pointers in command line buffer. +# +# To pass through means to `return 1'. The highlighting of +# this single token is then done by fast-syntax-highlighting's +# main code and chroma doesn't have to do anything. +(( this_word = next_word )) +_start_pos=$_end_pos + +return 0 + +# vim:ft=zsh:et:sw=4 diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-vim.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-vim.ch index b3fecd1..b3fecd1 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-vim.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-vim.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-whatis.ch index ce59e8f..c0c90c6 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-whatis.ch @@ -3,6 +3,18 @@ (( next_word = 2 | 8192 )) local THEFD check __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" +local __style __term __section __section_flag + +# extact manual subsection +# NOTE: __term should be separated from __wrd to prevent incorrect cache hits +if command -v mandb > /dev/null; then + __term="${__wrd%.[0-8n](|p|type|const|head|perl)}" + __section="${${2#$__term}#.}" +else + __term=$__wrd +fi + +[[ -n $__section ]] && __section_flag="-s $__section" (( ! ${+FAST_HIGHLIGHT[whatis_chroma_callback_was_ran]} )) && \ FAST_HIGHLIGHT[whatis_chroma_callback_was_ran]=0 @@ -18,7 +30,7 @@ local THEFD check __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4" local THEFD="$1" input check=2 nl=$'\n' __wrd __style - -fast-zts-read-all "$THEFD" input + .fast-zts-read-all "$THEFD" input zle -F "$THEFD" exec {THEFD}<&- @@ -96,7 +108,7 @@ else print "$__wrd" (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER} )) print "$__start/$__end" - LANG=C whatis "$__wrd" 2>/dev/null + LANG=C whatis "${(z)__section_flag}" "$__term" 2>/dev/null ) command true # see above zle -F ${${FAST_HIGHLIGHT[whatis_chroma_zle_-F_have_-w_opt]:#0}:+-w} "$THEFD" -fast-whatis-chroma-callback @@ -106,12 +118,15 @@ else print "$__wrd" (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER} )) print "$__start/$__end" - LANG=C whatis "$__wrd" &> /dev/null + LANG=C whatis "${(z)__section_flag}" "$__term" &> /dev/null print "$?" ) command true zle -F ${${FAST_HIGHLIGHT[whatis_chroma_zle_-F_have_-w_opt]:#0}:+-w} "$THEFD" -fast-whatis-chroma-callback fi + __style=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}incorrect-subtle]} + (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && \ + reply+=("$__start $__end $__style") else check=${FAST_HIGHLIGHT[whatis-cache-$__wrd]} if (( check )) then diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-which.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-which.ch index 5a5d7b3..5a5d7b3 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-which.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-which.ch diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-zplugin.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-zinit.ch index 2302da5..06637a8 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-zplugin.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/-zinit.ch @@ -4,12 +4,12 @@ # Chroma function for command `git'. It colorizes the part of command # line that holds `git' invocation. -(( FAST_HIGHLIGHT[-zplugin.ch-chroma-def] )) && return 1 +(( FAST_HIGHLIGHT[-zinit.ch-chroma-def] )) && return 1 -FAST_HIGHLIGHT[-zplugin.ch-chroma-def]=1 +FAST_HIGHLIGHT[-zinit.ch-chroma-def]=1 -typeset -gA fsh__zplugin__chroma__def -fsh__zplugin__chroma__def=( +typeset -gA fsh__zinit__chroma__def +fsh__zinit__chroma__def=( ## ## No subcommand ## @@ -17,7 +17,7 @@ fsh__zplugin__chroma__def=( subcmd:NULL "NULL_0_opt" NULL_0_opt "(-help|--help|-h) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" "subcommands" "(help|man|self-update|cd|times|zstatus|load|light|unload|snippet|ls|ice|<ice|specification>|update|status|report|delete|loaded|list|cd|create|edit|glance|stress|changes|recently|clist|completions|cdisable|cname|cenable|cname|creinstall|cuninstall|csearch|compinit|dtrace|dstart|dstop|dunload|dreport|dclear|compile|uncompile|compiled|cdlist|cdreplay|cdclear|srv|recall|env-whitelist|bindkeys|module)" @@ -35,7 +35,7 @@ fsh__zplugin__chroma__def=( subcmd:ice "ICE_#_arg // NO_MATCH_#_opt" - "ICE_#_arg" "NO-OP // :::chroma/-zplugin-check-ice-mod" + "ICE_#_arg" "NO-OP // ::→chroma/-zinit-check-ice-mod" ## }}} @@ -48,9 +48,9 @@ fsh__zplugin__chroma__def=( NO_MATCH_#_arg" SNIPPET_0_opt "(-f|--command) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" - SNIPPET_1_arg "NO-OP // :::chroma/-zplugin-verify-snippet" + SNIPPET_1_arg "NO-OP // ::→chroma/-zinit-verify-snippet" ## }}} @@ -59,12 +59,26 @@ fsh__zplugin__chroma__def=( ## ## {{{ - "subcmd:(load|light|compile|stress|edit|glance|recall|status|cd|changes)" + "subcmd:load" "LOAD_1_arg // LOAD_2_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" - LOAD_1_arg "NO-OP // :::chroma/-zplugin-verify-plugin" + LOAD_1_arg "NO-OP // ::→chroma/-zinit-verify-plugin" - LOAD_2_arg "NO-OP // :::chroma/-zplugin-verify-plugin" + LOAD_2_arg "NO-OP // ::→chroma/-zinit-verify-plugin" + + ## }}} + + ## + ## `compile|uncompile|stress|edit|glance|recall|status|cd|changes` + ## + ## {{{ + + "subcmd:(compile|uncompile|stress|edit|glance|recall|status|cd|changes)" + "PLGSNP_1_arg // PLGSNP_2_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" + + PLGSNP_1_arg "NO-OP // ::→chroma/-zinit-verify-plugin-or-snippet" + + PLGSNP_2_arg "NO-OP // ::→chroma/-zinit-verify-plugin-or-snippet" ## }}} @@ -73,16 +87,12 @@ fsh__zplugin__chroma__def=( ## ## {{{ - subcmd:update "UPDATE_0_opt // LOAD_1_arg // LOAD_2_arg // + subcmd:update "UPDATE_0_opt // PLGSNP_1_arg // PLGSNP_2_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" UPDATE_0_opt " - (--all|-r|--reset|-q|--quiet) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" - - LOAD_1_arg "NO-OP // :::chroma/-zplugin-verify-plugin" - - LOAD_2_arg "NO-OP // :::chroma/-zplugin-verify-plugin" + (--all|-r|--reset|-q|--quiet|-p|--parallel) + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" ## }}} @@ -95,21 +105,37 @@ fsh__zplugin__chroma__def=( NO_MATCH_#_arg" LIGHT_0_opt "-b - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" ## }}} ## - ## `unload|report' + ## `unload' ## ## {{{ - subcmd:"(unload|report)" "UNLOAD_1_arg // UNLOAD_2_arg // NO_MATCH_#_opt // + subcmd:unload "UNLOAD_0_opt // UNLOAD_1_arg // UNLOAD_2_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" - UNLOAD_1_arg "NO-OP // :::chroma/-zplugin-verify-loaded-plugin" + UNLOAD_0_opt "-q + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" + + UNLOAD_1_arg "NO-OP // ::→chroma/-zinit-verify-loaded-plugin" + + UNLOAD_2_arg "NO-OP // ::→chroma/-zinit-verify-loaded-plugin" - UNLOAD_2_arg "NO-OP // :::chroma/-zplugin-verify-loaded-plugin" + ## }}} + + ## + ## `report' + ## + ## {{{ + + subcmd:report "REPORT_0_opt // UNLOAD_1_arg // UNLOAD_2_arg // NO_MATCH_#_opt // + NO_MATCH_#_arg" + + REPORT_0_opt "--all + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" ## }}} @@ -119,15 +145,11 @@ fsh__zplugin__chroma__def=( ## {{{ "subcmd:delete" - "DELETE_0_opt // LOAD_1_arg // LOAD_2_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" + "DELETE_0_opt // PLGSNP_1_arg // PLGSNP_2_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" DELETE_0_opt " (--all|--clean|-y|--yes|-q|--quiet) - <<>> NO-OP // :::chroma/main-chroma-std-aopt-action" - - LOAD_1_arg "NO-OP // :::chroma/-zplugin-verify-plugin" - - LOAD_2_arg "NO-OP // :::chroma/-zplugin-verify-plugin" + <<>> NO-OP // ::→chroma/main-chroma-std-aopt-action" ## }}} @@ -138,7 +160,7 @@ fsh__zplugin__chroma__def=( subcmd:cenable "COMPLETION_1_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" - COMPLETION_1_arg "NO-OP // :::chroma/-zplugin-verify-disabled-completion" + COMPLETION_1_arg "NO-OP // ::→chroma/-zinit-verify-disabled-completion" ## }}} @@ -149,7 +171,7 @@ fsh__zplugin__chroma__def=( subcmd:cdisable "DISCOMPLETION_1_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" - DISCOMPLETION_1_arg "NO-OP // :::chroma/-zplugin-verify-completion" + DISCOMPLETION_1_arg "NO-OP // ::→chroma/-zinit-verify-completion" ## }}} @@ -161,7 +183,7 @@ fsh__zplugin__chroma__def=( subcmd:uncompile "UNCOMPILE_1_arg // NO_MATCH_#_opt // NO_MATCH_#_arg" - UNCOMPILE_1_arg "NO-OP // :::chroma/-zplugin-verify-compiled-plugin" + UNCOMPILE_1_arg "NO-OP // ::→chroma/-zinit-verify-compiled-plugin" ## }}} @@ -171,26 +193,26 @@ fsh__zplugin__chroma__def=( ## {{{ "subcmd:*" "CATCH_ALL_#_opt" - "CATCH_ALL_#_opt" "* <<>> NO-OP // :::chroma/main-chroma-std-aopt-SEMI-action" + "CATCH_ALL_#_opt" "* <<>> NO-OP // ::→chroma/main-chroma-std-aopt-SEMI-action" ## }}} ) -#:chroma/-zplugin-first-call() { +#→chroma/-zinit-first-call() { # This is being done in the proper place - in -fast-highlight-process - #FAST_HIGHLIGHT[chroma-zplugin-ice-elements-svn]=0 + #FAST_HIGHLIGHT[chroma-zinit-ice-elements-svn]=0 #} -:chroma/-zplugin-verify-plugin() { +→chroma/-zinit-verify-plugin() { local _scmd="$1" _wrd="$4" [[ -d "$_wrd" ]] && \ { __style=${FAST_THEME_NAME}correct-subtle; return 0; } typeset -a plugins - plugins=( "${ZPLGM[PLUGINS_DIR]}"/*(N:t) ) + plugins=( "${ZINIT[PLUGINS_DIR]}"/*(N:t) ) plugins=( "${plugins[@]//---//}" ) - plugins=( "${plugins[@]:#_local/zplugin}" ) + plugins=( "${plugins[@]:#_local/zinit}" ) plugins=( "${plugins[@]:#custom}" ) [[ -n "${plugins[(r)$_wrd]}" ]] && \ @@ -200,10 +222,16 @@ fsh__zplugin__chroma__def=( return 0 } -:chroma/-zplugin-verify-loaded-plugin() { +→chroma/-zinit-verify-plugin-or-snippet() { + →chroma/-zinit-verify-plugin "$1" "" "" "$4" || \ + →chroma/-zinit-verify-snippet "$1" "" "" "$4" + return $? +} + +→chroma/-zinit-verify-loaded-plugin() { local _scmd="$1" _wrd="$4" typeset -a plugins absolute1 absolute2 absolute3 normal - plugins=( "${ZPLG_REGISTERED_PLUGINS[@]:#_local/zplugin}" ) + plugins=( "${ZINIT_REGISTERED_PLUGINS[@]:#_local/zinit}" ) normal=( "${plugins[@]:#%*}" ) absolute1=( "${(M)plugins[@]:#%*}" ) absolute1=( "${absolute1[@]/\%\/\//%/}" ) @@ -220,11 +248,11 @@ fsh__zplugin__chroma__def=( return 0 } -:chroma/-zplugin-verify-completion() { +→chroma/-zinit-verify-completion() { local _scmd="$1" _wrd="$4" # Find enabled completions typeset -a completions - completions=( "${ZPLGM[COMPLETIONS_DIR]}"/_*(N:t) ) + completions=( "${ZINIT[COMPLETIONS_DIR]}"/_*(N:t) ) completions=( "${completions[@]#_}" ) [[ -n "${completions[(r)${_wrd#_}]}" ]] && \ @@ -234,11 +262,11 @@ fsh__zplugin__chroma__def=( return 0 } -:chroma/-zplugin-verify-disabled-completion() { +→chroma/-zinit-verify-disabled-completion() { local _scmd="$1" _wrd="$4" # Find enabled completions typeset -a completions - completions=( "${ZPLGM[COMPLETIONS_DIR]}"/[^_]*(N:t) ) + completions=( "${ZINIT[COMPLETIONS_DIR]}"/[^_]*(N:t) ) [[ -n "${completions[(r)${_wrd#_}]}" ]] && \ __style=${FAST_THEME_NAME}correct-subtle || \ @@ -247,18 +275,18 @@ fsh__zplugin__chroma__def=( return 0 } -:chroma/-zplugin-verify-compiled-plugin() { +→chroma/-zinit-verify-compiled-plugin() { local _scmd="$1" _wrd="$4" typeset -a plugins - plugins=( "${ZPLGM[PLUGINS_DIR]}"/*(N) ) + plugins=( "${ZINIT[PLUGINS_DIR]}"/*(N) ) typeset -a show_plugins p matches for p in "${plugins[@]}"; do matches=( $p/*.zwc(N) ) if [ "$#matches" -ne "0" ]; then p="${p:t}" - [[ "$p" = (_local---zplugin|custom) ]] && continue + [[ "$p" = (_local---zinit|custom) ]] && continue p="${p//---//}" show_plugins+=( "$p" ) fi @@ -269,18 +297,18 @@ fsh__zplugin__chroma__def=( return 1 } -:chroma/-zplugin-verify-snippet() { +→chroma/-zinit-verify-snippet() { local _scmd="$1" url="$4" dirname local_dir url="${${url#"${url%%[! $'\t']*}"}%/}" - id_as="${FAST_HIGHLIGHT[chroma-zplugin-ice-elements-id-as]:-${ZPLG_ICE[id-as]:-$url}}" + id_as="${FAST_HIGHLIGHT[chroma-zinit-ice-elements-id-as]:-${ZINIT_ICE[id-as]:-$url}}" filename="${${id_as%%\?*}:t}" dirname="${${id_as%%\?*}:t}" local_dir="${${${id_as%%\?*}:h}/:\/\//--}" [[ "$local_dir" = "." ]] && local_dir="" || local_dir="${${${${${local_dir#/}//\//--}//=/--EQ--}//\?/--QM--}//\&/--AMP--}" - local_dir="${ZPLGM[SNIPPETS_DIR]}${local_dir:+/$local_dir}" + local_dir="${ZINIT[SNIPPETS_DIR]}${local_dir:+/$local_dir}" - (( ${+ZPLG_ICE[svn]} || ${FAST_HIGHLIGHT[chroma-zplugin-ice-elements-svn]} )) && { + (( ${+ZINIT_ICE[svn]} || ${FAST_HIGHLIGHT[chroma-zinit-ice-elements-svn]} )) && { # TODO: handle the SVN path's specifics [[ -d "$local_dir/$dirname" ]] && \ { __style=${FAST_THEME_NAME}correct-subtle; return 0; } || \ @@ -293,16 +321,16 @@ fsh__zplugin__chroma__def=( } } -:chroma/-zplugin-check-ice-mod() { +→chroma/-zinit-check-ice-mod() { local _scmd="$1" _wrd="$4" [[ "$_wrd" = (svn(\'|\")*|svn) ]] && \ - FAST_HIGHLIGHT[chroma-zplugin-ice-elements-svn]=1 + FAST_HIGHLIGHT[chroma-zinit-ice-elements-svn]=1 [[ "$_wrd" = (#b)(id-as(:|)(\'|\")(*)(\'|\")|id-as:(*)|id-as(*)) ]] && \ - FAST_HIGHLIGHT[chroma-zplugin-ice-elements-id-as]="${match[4]}${match[6]}${match[7]}" + FAST_HIGHLIGHT[chroma-zinit-ice-elements-id-as]="${match[4]}${match[6]}${match[7]}" - # Copy from zplugin-autoload.zsh / -zplg-recall + # Copy from zinit-autoload.zsh / -zplg-recall local -a ice_order nval_ices ext_val_ices - ext_val_ices=( ${(@)${(@Ms.|.)ZPLG_EXTS[ice-mods]:#*\'\'*}//\'\'/} ) + ext_val_ices=( ${(@)${(@Ms.|.)ZINIT_EXTS[ice-mods]:#*\'\'*}//\'\'/} ) ice_order=( svn proto from teleid bindmap cloneopts id-as depth if wait load @@ -310,20 +338,22 @@ fsh__zplugin__chroma__def=( atinit atclone atload atpull nocd run-atpull has cloneonly make service trackbinds multisrc compile nocompile nocompletions reset-prompt wrap-track reset sh \!sh bash \!bash ksh \!ksh csh - \!csh aliases countdown + \!csh aliases countdown ps-on-unload ps-on-update trigger-load + light-mode is-snippet atdelete pack git verbose on-update-of + subscribe param extract # Include all additional ices – after # stripping them from the possible: '' - ${(@s.|.)${ZPLG_EXTS[ice-mods]//\'\'/}} + ${(@s.|.)${ZINIT_EXTS[ice-mods]//\'\'/}} ) nval_ices=( blockf silent lucid trackbinds cloneonly nocd run-atpull nocompletions sh \!sh bash \!bash ksh \!ksh csh \!csh - aliases countdown + aliases countdown light-mode is-snippet git verbose # Include only those additional ices, # don't have the '' in their name, i.e. # aren't designed to hold value - ${(@)${(@s.|.)ZPLG_EXTS[ice-mods]}:#*\'\'*} + ${(@)${(@s.|.)ZINIT_EXTS[ice-mods]}:#*\'\'*} # Must be last svn diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/main-chroma.ch b/.config/shell/zsh-fast-syntax-highlighting/→chroma/main-chroma.ch index 842bf8b..323a978 100644 --- a/.config/shell/zsh-fast-syntax-highlighting/:chroma/main-chroma.ch +++ b/.config/shell/zsh-fast-syntax-highlighting/→chroma/main-chroma.ch @@ -15,7 +15,7 @@ (( next_word = 2 | 8192 )) -:chroma/main-chroma-print() { +→chroma/main-chroma-print() { (( FAST_HIGHLIGHT[DEBUG] )) && print "$@" >> /tmp/fsh-dbg } @@ -25,10 +25,10 @@ local __chroma_name="${1#\%}" __first_call="$2" __wrd="$3" __start_pos="$4" __en [[ -z "$__chroma_name" ]] && return 1 # Load the fsh_{name-of-the-chroma}_chroma_def array -(( !FAST_HIGHLIGHT[-${__chroma_name}.ch-chroma-def] )) && :chroma/-${__chroma_name}.ch +(( !FAST_HIGHLIGHT[-${__chroma_name}.ch-chroma-def] )) && →chroma/-${__chroma_name}.ch -:chroma/main-chroma-print -r -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -:chroma/main-chroma-print -r -- @@@@@@@ local __chroma_name="${1#\%}" __first_call="$2" __wrd="$3" __start_pos="$4" __end_pos="$5" @@@@@@@ +→chroma/main-chroma-print -r -- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ +→chroma/main-chroma-print -r -- @@@@@@@ local __chroma_name="${1#\%}" __first_call="$2" __wrd="$3" __start_pos="$4" __end_pos="$5" @@@@@@@ local __style __entry __value __action __handler __tmp __svalue __hspaces=$'\t ' __nl=$'\n' __ch_def_name integer __idx1 __idx2 __start __end __ivalue __have_value=0 local -a __lines_list __avalue @@ -38,7 +38,7 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) (( __start=_start_pos-__PBUFLEN, __end=_end_pos-__PBUFLEN )) # Handler that highlights the options -:chroma/main-chroma-std-aopt-action() { +→chroma/main-chroma-std-aopt-action() { integer _start="$2" _end="$3" local _scmd="$1" _wrd="$4" @@ -51,7 +51,7 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) } # Handler that highlights the options' arguments -:chroma/main-chroma-std-aopt-ARG-action() { +→chroma/main-chroma-std-aopt-ARG-action() { integer _start="$2" _end="$3" local _scmd="$1" _wrd="$4" @@ -61,7 +61,7 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) } # This handler also highlights explicit arguments, i.e. --opt=the-explicit-arg -:chroma/main-chroma-std-aopt-SEMI-action() { +→chroma/main-chroma-std-aopt-SEMI-action() { integer _start="$2" _end="$3" local _scmd="$1" _wrd="$4" @@ -75,7 +75,7 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) } # A handler which verifies the token as an GIT url -:chroma/main-chroma-std-verify-url() { +→chroma/main-chroma-std-verify-url() { setopt localoptions extendedglob local _wrd="$4" integer url_correct=0 @@ -99,21 +99,21 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) } # A handler which verifies the token as a shell wildcard -:chroma/main-chroma-std-verify-pattern() { +→chroma/main-chroma-std-verify-pattern() { setopt localoptions extendedglob local _wrd="$4" __style=${FAST_THEME_NAME}globbing-ext } # Creates a hash table for given option set (an *_opt field in the chroma def.) -:chroma/main-create-OPTION-hash.ch() { +→chroma/main-create-OPTION-hash.ch() { local __subcmd="$1" __option_set_id="$2" __the_hash_name="$3" __ __e __el __the_hash_name __var_name local -a __split __sp __s - :chroma/main-chroma-print -rl "======================" " **## STARTING ##** :chroma/main-##CREATE##-option-HASH.ch // subcmd:$__subcmd // option_set_id:$__option_set_id // h-nam:$__the_hash_name" - :chroma/main-chroma-print "[D] Got option-set: ${(j:,:)__option_set_id}" + →chroma/main-chroma-print -rl "======================" " **## STARTING ##** →chroma/main-##CREATE##-option-HASH.ch // subcmd:$__subcmd // option_set_id:$__option_set_id // h-nam:$__the_hash_name" + →chroma/main-chroma-print "[D] Got option-set: ${(j:,:)__option_set_id}" typeset -gA "$__the_hash_name" - :chroma/main-chroma-print "[E] __the_hash_name ${__the_hash_name}:[$__option_set_id]" + →chroma/main-chroma-print "[E] __the_hash_name ${__the_hash_name}:[$__option_set_id]" # Split on || __ch_def_name="fsh__${__chroma_name}__chroma__def[${__option_set_id}]" @@ -122,13 +122,13 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) # Remove only leading and trailing whitespace __split=( "${__split[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" ) - :chroma/main-chroma-print -rl "[F] Got ||-__split: _________" ${${(@)${${__split[@]##[[:space:]]##}[@]//[${__hspaces}]##/ }[@]//[${__nl}]##/$__nl}[@]//(#s)/:::} "_________" + →chroma/main-chroma-print -rl "[F] Got ||-__split: _________" ${${(@)${${__split[@]##[[:space:]]##}[@]//[${__hspaces}]##/ }[@]//[${__nl}]##/$__nl}[@]//(#s)/:::} "_________" for __el in $__split; do __sp=( "${(@s:<<>>:)__el}" ) [[ ${#__sp} -eq 1 && -z "${__sp[1]}" ]] && __sp=() __sp=( "${__sp[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" ) - :chroma/main-chroma-print -l -- "Processing an ||-part - got <<>>-split: _________" "${${__sp[@]}[@]/(#s)/-\\t}" "_________" + →chroma/main-chroma-print -l -- "Processing an ||-part - got <<>>-split: _________" "${${__sp[@]}[@]/(#s)/-\\t}" "_________" __e="${__sp[1]}" local __e1=${${__e#\(}%\)(:add|:del|)} local __e2=${(M)__e##\(*\)(:add|:del)} @@ -145,12 +145,12 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) for __ in $__s; do __=${__%\^} [[ "$__" = -*:(add|del) ]] && __var_name="${__the_hash_name}[${__}-directive]" || __var_name="${__the_hash_name}[${__}-opt-action]" - :chroma/main-chroma-print "${(r:70:: :):-${__var_name}} := >>${__sp[1]}${${${#__sp}:#(0|1)}:+ +}<<" + →chroma/main-chroma-print "${(r:70:: :):-${__var_name}} := >>${__sp[1]}${${${#__sp}:#(0|1)}:+ +}<<" : ${(P)__var_name::=${__sp[1]}${${${#__sp}:#(0|1)}:+ +}} if (( ${#__sp} >= 2 )); then __var_name="${__the_hash_name}[${__}-opt-arg-action]" - :chroma/main-chroma-print "${(r:70:: :):-${__var_name}} := >>${__sp[2]}<<}" + →chroma/main-chroma-print "${(r:70:: :):-${__var_name}} := >>${__sp[2]}<<}" : ${(P)__var_name::=$__sp[2]} fi done @@ -158,18 +158,18 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) } # Processes given token -:chroma/main-process-token.ch() { +→chroma/main-process-token.ch() { local __subcmd="$1" __wrd="$2" __val __var_name __main_hash_name __the_hash_name __i __size local -a __splitted __split __added - :chroma/main-chroma-print "\n******************* Starting :chroma/main-process-token <<$__wrd>>// subcmd:${(qq)__subcmd}" + →chroma/main-chroma-print "\n******************* Starting →chroma/main-process-token <<$__wrd>>// subcmd:${(qq)__subcmd}" __main_hash_name="fsh__chroma__main__${${FAST_HIGHLIGHT[chroma-current]//[^a-zA-Z0-9_]/_}//(#b)([\#\^\*])/${map[${match[1]}]}}" __var_name="${__main_hash_name}[subcmd:$__subcmd]" __splitted=( "${(@s://:P)__var_name}" ) [[ ${#__splitted} -eq 1 && -z "${__splitted[1]}" ]] && __splitted=() __splitted=( "${__splitted[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" ) - :chroma/main-chroma-print -rl -- "[B] MAIN-PROCESS-TOKEN: got [OPTION/ARG-**S-E-T-S**] //-splitted from subcmd:$__subcmd: ${${(j:, :)__splitted}:-EMPTY-SET!}" "----- __splitted\\Deleted: -----" ${${(j:, :)${__splitted[@]:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})}}:-EMPTY-SET (deleted)!} "----- Added\\Deleted: -----" ${${(j:, :)${${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})}}:-EMPTY-SET (added)!} -----\ Deleted:\ ----- ${(j:, :)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}} >> /tmp/reply + →chroma/main-chroma-print -rl -- "[B] MAIN-PROCESS-TOKEN: got [OPTION/ARG-**S-E-T-S**] //-splitted from subcmd:$__subcmd: ${${(j:, :)__splitted}:-EMPTY-SET!}" "----- __splitted\\Deleted: -----" ${${(j:, :)${__splitted[@]:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})}}:-EMPTY-SET (deleted)!} "----- Added\\Deleted: -----" ${${(j:, :)${${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})}}:-EMPTY-SET (added)!} -----\ Deleted:\ ----- ${(j:, :)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}} >> /tmp/reply (( ! ${#__splitted} )) && { __var_name="${__main_hash_name}[subcmd:*]" @@ -179,24 +179,24 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) (( ! ${#__splitted} )) && return 1 } - :chroma/main-chroma-print -rl -- "---NO-HASH-CREATE-FROM-NOW-ON---" + →chroma/main-chroma-print -rl -- "---NO-HASH-CREATE-FROM-NOW-ON---" if [[ -z "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]}" ]]; then - :chroma/main-chroma-print -rl -- "-z OPT-WITH-ARG-ACTIVE == true" + →chroma/main-chroma-print -rl -- "-z OPT-WITH-ARG-ACTIVE == true" if [[ "$__wrd" = -* ]]; then - :chroma/main-chroma-print "1st-PATH (-z opt-with-arg-active, non-opt-arg branch, i.e. OPTION BRANCH) [#${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}]" + →chroma/main-chroma-print "1st-PATH (-z opt-with-arg-active, non-opt-arg branch, i.e. OPTION BRANCH) [#${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}]" for __val in ${__splitted[@]:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})} ${${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})}; do - [[ "${__val}" != "${__val%%_([0-9]##|\#)##*}"_${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}_opt(\*|\^|) && "${__val}" != "${__val%%_([0-9]##|\#)*}"_"#"_opt(\*|\^|) ]] && { :chroma/main-chroma-print "DIDN'T MATCH $__val / arg counter:${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" ; continue; } || :chroma/main-chroma-print "Got candidate: $__val" + [[ "${__val}" != "${__val%%_([0-9]##|\#)##*}"_${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}_opt(\*|\^|) && "${__val}" != "${__val%%_([0-9]##|\#)*}"_"#"_opt(\*|\^|) ]] && { →chroma/main-chroma-print "DIDN'T MATCH $__val / arg counter:${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" ; continue; } || →chroma/main-chroma-print "Got candidate: $__val" # Create the hash cache-parameter if needed __the_hash_name="fsh__chroma__${FAST_HIGHLIGHT[chroma-current]//[^a-zA-Z0-9_]/_}__${__subcmd//[^a-zA-Z0-9_]/_}__${${__val//(#b)([\#\^\*])/${map[${match[1]}]}}//[^a-zA-Z0-9_]/_}" - [[ "$__val" = *_opt(\*|\^|) && "${(P)+__the_hash_name}" -eq 0 ]] && :chroma/main-create-OPTION-hash.ch "$__subcmd" "$__val" "$__the_hash_name" || :chroma/main-chroma-print "Not creating, the hash already exists..." + [[ "$__val" = *_opt(\*|\^|) && "${(P)+__the_hash_name}" -eq 0 ]] && →chroma/main-create-OPTION-hash.ch "$__subcmd" "$__val" "$__the_hash_name" || →chroma/main-chroma-print "Not creating, the hash already exists..." # Try dedicated-entry for the option __var_name="${__the_hash_name}[${${${${(M)__wrd#?*=}:+${__wrd%=*}=}:-$__wrd}}-opt-action]" __split=( "${(@s://:P)__var_name}" ) [[ ${#__split} -eq 1 && -z "${__split[1]}" ]] && __split=() # If no result, then try with catch-all entry (( ! ${#__split} )) && { - :chroma/main-chroma-print "% no ${(q-)${${${(M)__wrd#?*=}:+${__wrd%=*}=}:-$__wrd}}-opt-action, retrying with *-opt-action" "|__var_name|:$__var_name" + →chroma/main-chroma-print "% no ${(q-)${${${(M)__wrd#?*=}:+${__wrd%=*}=}:-$__wrd}}-opt-action, retrying with *-opt-action" "|__var_name|:$__var_name" __var_name="${__the_hash_name}[*-opt-action]" __split=( "${(@s://:P)__var_name}" ) [[ ${#__split} -eq 1 && -z "${__split[1]}" ]] && __split=() @@ -204,19 +204,19 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) __svalue="$__var_name" # Remove whitespace __split=( "${__split[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" ) - :chroma/main-chroma-print -l -- "\`$__val' // ${#__split} // $__wrd: (ch.run #${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr]}), deref. of \`$__var_name'" + →chroma/main-chroma-print -l -- "\`$__val' // ${#__split} // $__wrd: (ch.run #${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr]}), deref. of \`$__var_name'" if (( ${#__split} )); then - :chroma/main-chroma-print -l -- "Got split of {\$#__split:$#__split} ${__wrd}-opt-action or *-opt-action" "${${(q-)__split[@]}[@]/(#s)/->\\t}" + →chroma/main-chroma-print -l -- "Got split of {\$#__split:$#__split} ${__wrd}-opt-action or *-opt-action" "${${(q-)__split[@]}[@]/(#s)/->\\t}" if [[ "${__split[2]}" = *[[:blank:]]+ ]]; then - :chroma/main-chroma-print "YES handling the value (the OPT.ARGUMENT)! [${__split[2]}]" + →chroma/main-chroma-print "YES handling the value (the OPT.ARGUMENT)! [${__split[2]}]" if [[ "$__wrd" = *=* ]]; then - :chroma/main-chroma-print "The-immediate Arg-Acquiring, of option" + →chroma/main-chroma-print "The-immediate Arg-Acquiring, of option" FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]="${__svalue%-opt-action\]}-opt-arg-action]" FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-arg]="${__wrd#*=}" __have_value=2 else - :chroma/main-chroma-print "Enable Arg-Awaiting, of option" - :chroma/main-chroma-print "FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]=\"${__svalue%-opt-action\]}-opt-arg-action]\"" + →chroma/main-chroma-print "Enable Arg-Awaiting, of option" + →chroma/main-chroma-print "FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]=\"${__svalue%-opt-action\]}-opt-arg-action]\"" __have_value=0 FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]="${__svalue%-opt-action\]}-opt-arg-action]" fi @@ -240,27 +240,27 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) # First: del-directive FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]+="${(j: :)__split[__ivalue+1,__tmp]} " - :chroma/main-chroma-print -rl ":add / :del directives: __ivalue:$__ivalue, THE __SPLIT[#$__tmp]: " "${__split[@]}" "//" "The FAST_HIGHLIGHT[chroma-*deleted-nodes]: " ${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]} >> /tmp/reply + →chroma/main-chroma-print -rl ":add / :del directives: __ivalue:$__ivalue, THE __SPLIT[#$__tmp]: " "${__split[@]}" "//" "The FAST_HIGHLIGHT[chroma-*deleted-nodes]: " ${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]} >> /tmp/reply # Second: add-directive FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]+="${(j: :)__split[1,__ivalue]} " fi [[ "$__handler" = ::[^[:space:]]* ]] && __handler="${__handler#::}" || __handler="" - [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && { :chroma/main-chroma-print -rl -- "Running handler(1): $__handler" ; "$__handler" "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}" "$__start" "$__end" "$__wrd"; } - [[ "$__have_value" -ne 2 && -n "$__action" && "$__action" != "NO-OP" ]] && { :chroma/main-chroma-print -rl "Running action (1): $__action" ; eval "() { $__action; }"; } + [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && { →chroma/main-chroma-print -rl -- "Running handler(1): $__handler" ; "$__handler" "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}" "$__start" "$__end" "$__wrd"; } + [[ "$__have_value" -ne 2 && -n "$__action" && "$__action" != "NO-OP" ]] && { →chroma/main-chroma-print -rl "Running action (1): $__action" ; eval "() { $__action; }"; } [[ "$__val" != *\* ]] && break else - :chroma/main-chroma-print -rl -- "NO-MATCH ROUTE TAKEN" + →chroma/main-chroma-print -rl -- "NO-MATCH ROUTE TAKEN" fi done else - :chroma/main-chroma-print "1st-PATH-B (-z opt-with-arg-active, non-opt-arg branch, ARGUMENT BRANCH [#${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}]) //// added-nodes: ${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}" + →chroma/main-chroma-print "1st-PATH-B (-z opt-with-arg-active, non-opt-arg branch, ARGUMENT BRANCH [#${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}]) //// added-nodes: ${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}" for __val in ${__splitted[@]:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})} ${${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}:#(${(~j:|:)${(@)=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}})}; do - [[ "${__val}" != "${__val%%_([0-9]##|\#)*}"_"${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}"_arg(\*|\^|) && "${__val}" != "${__val%%_([0-9]##|\#)*}"_"#"_arg(\*|\^|) ]] && { :chroma/main-chroma-print "Continuing for $__val / arg counter ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" ; continue } + [[ "${__val}" != "${__val%%_([0-9]##|\#)*}"_"${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}"_arg(\*|\^|) && "${__val}" != "${__val%%_([0-9]##|\#)*}"_"#"_arg(\*|\^|) ]] && { →chroma/main-chroma-print "Continuing for $__val / arg counter ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" ; continue } # Create the hash cache-parameter if needed __the_hash_name="fsh__chroma__${FAST_HIGHLIGHT[chroma-current]//[^a-zA-Z0-9_]/_}__${__subcmd//[^a-zA-Z0-9_]/_}__${${__val//\#/H}//[^a-zA-Z0-9_]/_}" __action="" __handler="" - :chroma/main-chroma-print "A hit, chosen __val:$__val!" + →chroma/main-chroma-print "A hit, chosen __val:$__val!" __ch_def_name="fsh__${__chroma_name}__chroma__def[$__val]" __split=( "${(P@s:<<>>:)__ch_def_name}" ) __split=( "${__split[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" ) @@ -271,13 +271,13 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) # Verify if it's the expected argument [[ "${__sp[1]}" = *:::::* && "$__wrd" != ${~${__sp[1]%% ##:::::*}} ]] && \ - { :chroma/main-chroma-print -r "mismatch ${__sp[1]%% ##:::::*} != $__wrd, continuing" ; continue; } + { →chroma/main-chroma-print -r "mismatch ${__sp[1]%% ##:::::*} != $__wrd, continuing" ; continue; } - :chroma/main-chroma-print -l -- "Got action record for $__val, i.e. the split:" "${__sp[@]//(#s)/-\t}" "_________" + →chroma/main-chroma-print -l -- "Got action record for $__val, i.e. the split:" "${__sp[@]//(#s)/-\t}" "_________" - [[ "${__sp[2]}" = ::[^[:space:]]* ]] && __handler="${__sp[2]#::}" || { [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && :chroma/main-chroma-print "=== Error === In chroma definition: a handler entry ${(q)__sp[2]} without leading \`::'" ; } - [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && { :chroma/main-chroma-print -rl -- "Running handler(3): $__handler" ; "$__handler" "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}" "$__start" "$__end" "$__wrd"; } - [[ -n "$__action" && "$__action" != "NO-OP" ]] && { :chroma/main-chroma-print -rl -- "Running action(3): $__action" ; eval "() { $__action; } \"${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}\" \"$__start\" \"$__end\" \"$__wrd\""; } + [[ "${__sp[2]}" = ::[^[:space:]]* ]] && __handler="${__sp[2]#::}" || { [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && →chroma/main-chroma-print "=== Error === In chroma definition: a handler entry ${(q)__sp[2]} without leading \`::'" ; } + [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && { →chroma/main-chroma-print -rl -- "Running handler(3): $__handler" ; "$__handler" "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}" "$__start" "$__end" "$__wrd"; } + [[ -n "$__action" && "$__action" != "NO-OP" ]] && { →chroma/main-chroma-print -rl -- "Running action(3): $__action" ; eval "() { $__action; } \"${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}\" \"$__start\" \"$__end\" \"$__wrd\""; } # Check for argument directives (like :add) if (( ${#__split} >= 2 )); then @@ -289,54 +289,54 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]+="${__splitted[1]#del:} ${(j: :)__splitted[2,-1]} " fi done - :chroma/main-chroma-print -l "ARGUMENT :add / :del directives: THE __SPLIT[#${#__split}]: " "${__split[@]//(#s)/-\\t}" "//" "The FAST_HIGHLIGHT[chroma-*deleted-nodes]: " ${(@)${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}//(#s)/-\\t} "The FAST_HIGHLIGHT[chroma-*added-nodes]: " ${(@)${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}//(#s)/-\\t} + →chroma/main-chroma-print -l "ARGUMENT :add / :del directives: THE __SPLIT[#${#__split}]: " "${__split[@]//(#s)/-\\t}" "//" "The FAST_HIGHLIGHT[chroma-*deleted-nodes]: " ${(@)${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-deleted-nodes]}//(#s)/-\\t} "The FAST_HIGHLIGHT[chroma-*added-nodes]: " ${(@)${=FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-added-nodes]}//(#s)/-\\t} fi [[ "$__val" != *\* ]] && break done fi else - :chroma/main-chroma-print -- "2nd-PATH (-n opt-with-arg-active) NON-EMPTY arg-active:\nThe actual opt-val <<< \$__wrd:$__wrd >>> store (after the \`Arg-Awaiting' in the chroma-run: #$(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr]-1 )) [current: #$(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr] ))])" + →chroma/main-chroma-print -- "2nd-PATH (-n opt-with-arg-active) NON-EMPTY arg-active:\nThe actual opt-val <<< \$__wrd:$__wrd >>> store (after the \`Arg-Awaiting' in the chroma-run: #$(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr]-1 )) [current: #$(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr] ))])" FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-arg]="$__wrd" __have_value=1 fi # Execute the action if not during simulated opt-argument (--opt=...) - :chroma/main-chroma-print "** BEFORE: \`if (( __have_value ))'" + →chroma/main-chroma-print "** BEFORE: \`if (( __have_value ))'" if (( __have_value )); then - :chroma/main-chroma-print "In the \`if (( __have_value ))' [have_value: $__have_value]" + →chroma/main-chroma-print "In the \`if (( __have_value ))' [have_value: $__have_value]" # Split __var_name="${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]}" FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]="" __split=( "${(@s://:P)__var_name}" ) - [[ ${#__split} -eq 1 && -z "${__split[1]}" ]] && { :chroma/main-chroma-print -rl "NULL at __var_name:$__var_name" ; __split=(); } + [[ ${#__split} -eq 1 && -z "${__split[1]}" ]] && { →chroma/main-chroma-print -rl "NULL at __var_name:$__var_name" ; __split=(); } __split=( "${__split[@]//((#s)[[:space:]]##|[[:space:]]##(#e))/}" ) # Remember 1st level action (( __have_value == 2 )) && __value="$__action" || __value="" if (( ${#__split} )); then - :chroma/main-chroma-print -l -- "Got //-split (3, for opt-ARG-action, from [$__var_name]):" "${${(q-)__split[@]}[@]/(#s)/+\\t}" + →chroma/main-chroma-print -l -- "Got //-split (3, for opt-ARG-action, from [$__var_name]):" "${${(q-)__split[@]}[@]/(#s)/+\\t}" __action="${__split[1]}" __handler="${__split[2]}" [[ "$__handler" = ::[^[:space:]]* ]] && __handler="${__handler#::}" - [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && { :chroma/main-chroma-print -rl -- "Running handler(2): $__handler" ; "$__handler" "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}" "$__start" "$__end" "$__wrd"; } - [[ -n "$__action" && "$__action" != "NO-OP" ]] && { :chroma/main-chroma-print -rl -- "Running action(2): $__action" ; eval "$__action"; } - :chroma/main-chroma-print -rl -- "The __action value: [$__value]" - [[ "$__have_value" -eq 2 && -n "$__value" && "$__value" != "NO-OP" ]] && { :chroma/main-chroma-print -rl "Running action (of 1, at 2): $__value" ; eval "$__value"; } + [[ -n "$__handler" && "$__handler" != "NO-OP" ]] && { →chroma/main-chroma-print -rl -- "Running handler(2): $__handler" ; "$__handler" "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]:-NULL}" "$__start" "$__end" "$__wrd"; } + [[ -n "$__action" && "$__action" != "NO-OP" ]] && { →chroma/main-chroma-print -rl -- "Running action(2): $__action" ; eval "$__action"; } + →chroma/main-chroma-print -rl -- "The __action value: [$__value]" + [[ "$__have_value" -eq 2 && -n "$__value" && "$__value" != "NO-OP" ]] && { →chroma/main-chroma-print -rl "Running action (of 1, at 2): $__value" ; eval "$__value"; } fi fi - :chroma/main-chroma-print -- "_________ Exiting :chroma/main-process-token.ch $__subcmd / $__wrd _________" + →chroma/main-chroma-print -- "_________ Exiting →chroma/main-process-token.ch $__subcmd / $__wrd _________" } # Iterates over the chroma def. fields and creates initial # fields in the fsh__${__chroma_name}__chroma__def hash -:chroma/-pre_process_chroma_def.ch() { +→chroma/-pre_process_chroma_def.ch() { local __key __value __ke _val __the_hash_name="$1" __var_name local -a __split - :chroma/main-chroma-print -rl -- "Starting PRE_PROCESS for __the_hash_name:$__the_hash_name" + →chroma/main-chroma-print -rl -- "Starting PRE_PROCESS for __the_hash_name:$__the_hash_name" __ch_def_name="fsh__${__chroma_name}__chroma__def[subcommands]" local __subcmds="${(P)__ch_def_name}" @@ -348,7 +348,7 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) __var_name="${__the_hash_name}[subcommands]" : ${(P)__var_name::=$__subcmds} fi - :chroma/main-chroma-print "Got SUBCOMMANDS: ${(P)__var_name}" + →chroma/main-chroma-print "Got SUBCOMMANDS: ${(P)__var_name}" __ch_def_name="fsh__${__chroma_name}__chroma__def[subcmd-hook]" local __subcmd_hook="${(P)__ch_def_name}" @@ -366,13 +366,13 @@ map=( "#" "_H" "^" "_D" "*" "_S" ) __var_name="${__the_hash_name}[subcmd:$__ke]" __ch_def_name="fsh__${__chroma_name}__chroma__def[$__key]" : ${(P)__var_name::=${(P)__ch_def_name}} - :chroma/main-chroma-print -rl -- "Storred ${__var_name}=chroma_def[$__key], i.e. = ${(P)__ch_def_name}" + →chroma/main-chroma-print -rl -- "Storred ${__var_name}=chroma_def[$__key], i.e. = ${(P)__ch_def_name}" done done } if (( __first_call )); then - :chroma/-${__chroma_name}-first-call + →chroma/-${__chroma_name}-first-call FAST_HIGHLIGHT[chroma-current]="$__wrd" FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]=0 FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-got-subcommand]=0 @@ -386,8 +386,8 @@ if (( __first_call )); then __the_hash_name="fsh__chroma__main__${${FAST_HIGHLIGHT[chroma-current]//[^a-zA-Z0-9_]/_}//(#b)([\#\^])/${map[${match[1]}]}}" (( 0 == ${(P)+__the_hash_name} )) && { typeset -gA "$__the_hash_name" - :chroma/-pre_process_chroma_def.ch "$__the_hash_name" - } || :chroma/main-chroma-print "...No... [\${+$__the_hash_name} ${(P)+__the_hash_name}]" + →chroma/-pre_process_chroma_def.ch "$__the_hash_name" + } || →chroma/main-chroma-print "...No... [\${+$__the_hash_name} ${(P)+__the_hash_name}]" return 1 else (( ++ FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr] )) @@ -397,43 +397,50 @@ else # "starts new command", if so pass-through – chroma ends [[ "$__arg_type" = 3 ]] && return 2 - :chroma/main-chroma-print "== @@ Starting @@ #${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr]} Main-Chroma-call == // << __WORD:$__wrd >> ## Subcommand: ${${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}:-NULL} //@@// -n option-with-arg-active:${(q-)FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]}" + →chroma/main-chroma-print "== @@ Starting @@ #${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-call-nr]} Main-Chroma-call == // << __WORD:$__wrd >> ## Subcommand: ${${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}:-NULL} //@@// -n option-with-arg-active:${(q-)FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]}" if [[ "$__wrd" = -* || -n "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-option-with-arg-active]}" ]]; then - :chroma/main-chroma-print "## The \`if -*' i.e. \`IF OPTION' MAIN branch" - :chroma/main-process-token.ch "${${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}:-NULL}" "$__wrd" + →chroma/main-chroma-print "## The \`if -*' i.e. \`IF OPTION' MAIN branch" + →chroma/main-process-token.ch "${${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}:-NULL}" "$__wrd" else # If at e.g. '>' or destination/source spec (of the redirection) if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then return 1 - elif (( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-got-subcommand] == 0 )); then + elif (( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-got-subcommand] == 0 )) { __the_hash_name="fsh__chroma__main__${${FAST_HIGHLIGHT[chroma-current]//[^a-zA-Z0-9_]/_}//(#b)([\#\^])/${map[${match[1]}]}}" __var_name="${__the_hash_name}[subcommands]" if [[ "$__wrd" = ${(P)~__var_name} ]]; then - :chroma/main-chroma-print "GOT-SUBCOMMAND := $__wrd, subcmd verification / OK" + →chroma/main-chroma-print "GOT-SUBCOMMAND := $__wrd, subcmd verification / OK" FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-got-subcommand]=1 FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]="$__wrd" __var_name="${__the_hash_name}[subcmd-hook]" - (( ${(P)+__var_name} )) && { :chroma/main-chroma-print -r -- "Running subcmd-hook: ${(P)__var_name}" ; "${(P)__var_name}" "$__wrd"; } + (( ${(P)+__var_name} )) && { →chroma/main-chroma-print -r -- "Running subcmd-hook: ${(P)__var_name}" ; "${(P)__var_name}" "$__wrd"; } __style="${FAST_THEME_NAME}subcommand" else - :chroma/main-chroma-print "subcmd verif / NOT OK; Incrementing the COUNTER-ARG ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]} -> $(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg] + 1 ))" >> /tmp/fsh-dbg + →chroma/main-chroma-print "subcmd verif / NOT OK; Incrementing the COUNTER-ARG ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]} -> $(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg] + 1 ))" >> /tmp/fsh-dbg (( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg] += 1 )) - :chroma/main-chroma-print "UNRECOGNIZED ARGUMENT ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" - :chroma/main-process-token.ch "${${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}:-NULL}" "$__wrd" + →chroma/main-chroma-print "UNRECOGNIZED ARGUMENT ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" + →chroma/main-process-token.ch "${${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}:-NULL}" "$__wrd" fi - else + } else { __wrd="${__wrd//\`/x}" __arg="${__arg//\`/x}" __wrd="${(Q)__wrd}" - :chroma/main-chroma-print "Incrementing the COUNTER-ARG ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]} -> $(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg] + 1 ))" + local __tmp_def_name="fsh__${__chroma_name}__chroma__def[subcommands-blacklist]" + if [[ ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]} = \ + (${(~j:|:)${(@s:,:)${(PA)__tmp_def_name}}}) + ]] { + return 1 + } + + →chroma/main-chroma-print "Incrementing the COUNTER-ARG ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]} -> $(( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg] + 1 ))" (( FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg] += 1 )) - :chroma/main-chroma-print "ARGUMENT ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" + →chroma/main-chroma-print "ARGUMENT ${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-counter-arg]}" - :chroma/main-chroma-print "ELSE *-got-subcommand == 1 is TRUE" - :chroma/main-process-token.ch "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}" "$__wrd" - fi + →chroma/main-chroma-print "ELSE *-got-subcommand == 1 is TRUE" + →chroma/main-process-token.ch "${FAST_HIGHLIGHT[chroma-${FAST_HIGHLIGHT[chroma-current]}-subcommand]}" "$__wrd" + } fi fi diff --git a/.config/shell/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh b/.config/shell/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh new file mode 120000 index 0000000..cc95cd4 --- /dev/null +++ b/.config/shell/zsh-syntax-highlighting/zsh-syntax-highlighting.plugin.zsh @@ -0,0 +1 @@ +zsh-syntax-highlighting.zsh
\ No newline at end of file |
