aboutsummaryrefslogtreecommitdiff
path: root/.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch
diff options
context:
space:
mode:
Diffstat (limited to '.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch')
-rw-r--r--.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch134
1 files changed, 134 insertions, 0 deletions
diff --git a/.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch b/.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch
new file mode 100644
index 0000000..ce59e8f
--- /dev/null
+++ b/.config/shell/zsh-fast-syntax-highlighting/:chroma/-whatis.ch
@@ -0,0 +1,134 @@
+# -*- mode: sh; sh-indentation: 4; indent-tabs-mode: nil; sh-basic-offset: 4; -*-
+# Copyright (c) 2018-2019 Sebastian Gniazdowski
+
+(( next_word = 2 | 8192 ))
+local THEFD check __first_call="$1" __wrd="$2" __start_pos="$3" __end_pos="$4"
+
+(( ! ${+FAST_HIGHLIGHT[whatis_chroma_callback_was_ran]} )) && \
+ FAST_HIGHLIGHT[whatis_chroma_callback_was_ran]=0
+
+(( ! ${+FAST_HIGHLIGHT[whatis_chroma_zle_-F_have_-w_opt]} )) && {
+ is-at-least 5.0.6 && local __res=1 || local __res=0
+ FAST_HIGHLIGHT[whatis_chroma_zle_-F_have_-w_opt]="$__res"
+}
+
+-fast-whatis-chroma-callback() {
+ emulate -L zsh
+ setopt extendedglob warncreateglobal typesetsilent
+
+ local THEFD="$1" input check=2 nl=$'\n' __wrd __style
+
+ -fast-zts-read-all "$THEFD" input
+
+ zle -F "$THEFD"
+ exec {THEFD}<&-
+
+ __wrd="${${input#[^$nl]#$nl}%%$nl*}"
+ if [[ "$input" = test* ]]; then
+ if [[ "${input%$nl}" = *[^0-9]'0' ]]; then
+ if [[ "${input#test$nl}" = *nothing\ appropriate* ]]; then
+ FAST_HIGHLIGHT[whatis_chroma_type]=2
+ else
+ FAST_HIGHLIGHT[whatis_chroma_type]=0
+ fi
+ else
+ FAST_HIGHLIGHT[whatis_chroma_type]=1
+ fi
+ elif [[ "$input" = type2* ]]; then
+ [[ "$input" != *nothing\ appropriate* ]] && check=1 || check=0
+ elif [[ "$input" = type1* ]]; then
+ [[ "${input%$nl}" = *0 ]] && check=1 || check=0
+ fi
+
+ if (( check != 2 )); then
+ FAST_HIGHLIGHT[whatis-cache-$__wrd]=$check
+ if (( check )) then
+ __style=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}correct-subtle]}
+ elif [[ ${~__wrd} = */* && -e ${~__wrd} ]] then
+ __style=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}path]}
+ else
+ __style=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}incorrect-subtle]}
+ fi
+ local -a start_end
+ start_end=( ${(s:/:)${${(M)${${input#type?${nl}[^$nl]#$nl}}#*$nl}%$nl}} )
+ (( start_end[1] >= 0 )) && region_highlight+=("$start_end[1] $start_end[2] $__style")
+ zle -R
+ fi
+
+ FAST_HIGHLIGHT[whatis_chroma_callback_was_ran]=1
+ return 0
+}
+
+zle -N -- -fast-whatis-chroma-callback
+
+if (( __first_call )) && [[ -z "${FAST_HIGHLIGHT[whatis_chroma_type]}" ]] ;then
+ if ! command -v whatis > /dev/null; then
+ FAST_HIGHLIGHT[whatis_chroma_type]=0
+ return 1
+ fi
+
+ exec {THEFD}< <(
+ print "test"
+ LANG=C whatis "osx whatis fallback check"
+ print "$?"
+ )
+ command true # a workaround of Zsh bug
+ zle -F ${${FAST_HIGHLIGHT[whatis_chroma_zle_-F_have_-w_opt]:#0}:+-w} "$THEFD" -fast-whatis-chroma-callback
+fi
+
+[[ "$__arg_type" = 3 ]] && return 2
+
+if (( in_redirection > 0 || this_word & 128 )) || [[ $__wrd == "<<<" ]]; then
+ return 1
+fi
+
+if (( __first_call )) || [[ "$__wrd" = -* ]]; then
+ return 1
+elif (( ! FAST_HIGHLIGHT[whatis_chroma_type] )); then
+ # Return 1 (i.e. treat the argument as a path) only if the callback have
+ # had a chance to establish the whatis_chroma_type field
+ (( FAST_HIGHLIGHT[whatis_chroma_callback_was_ran] )) && return 1
+else
+ if [[ -z "${FAST_HIGHLIGHT[whatis-cache-$__wrd]}" ]]; then
+ if (( FAST_HIGHLIGHT[whatis_chroma_type] == 2 )); then
+ exec {THEFD}< <(
+ print "type2"
+ print "$__wrd"
+ (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER} ))
+ print "$__start/$__end"
+ LANG=C whatis "$__wrd" 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
+ else
+ exec {THEFD}< <(
+ print "type1"
+ print "$__wrd"
+ (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER} ))
+ print "$__start/$__end"
+ LANG=C whatis "$__wrd" &> /dev/null
+ print "$?"
+ )
+ command true
+ zle -F ${${FAST_HIGHLIGHT[whatis_chroma_zle_-F_have_-w_opt]:#0}:+-w} "$THEFD" -fast-whatis-chroma-callback
+ fi
+ else
+ check=${FAST_HIGHLIGHT[whatis-cache-$__wrd]}
+ if (( check )) then
+ __style=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}correct-subtle]}
+ elif [[ ${~__wrd} = */* && -e ${~__wrd} ]] then
+ __style=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}path]}
+ elif (( FAST_HIGHLIGHT[whatis_chroma_type] )); then
+ __style=${FAST_HIGHLIGHT_STYLES[${FAST_THEME_NAME}incorrect-subtle]}
+ fi
+ [[ -n "$__style" ]] && \
+ (( __start=__start_pos-${#PREBUFFER}, __end=__end_pos-${#PREBUFFER}, __start >= 0 )) && \
+ reply+=("$__start $__end $__style")
+ fi
+fi
+(( this_word = next_word ))
+_start_pos=$_end_pos
+
+return 0
+
+# vim:ft=zsh:et:sw=4:sts=4