# completion system
COMPDUMPFILE=${COMPDUMPFILE:-${ZDOTDIR:-${HOME}}/.zcompdump}
if zrcautoload compinit ; then
- compinit -d ${COMPDUMPFILE} || print 'Notice: no compinit available :('
+ typeset -a tmp
+ zstyle -a ':grml:completion:compinit' arguments tmp
+ compinit -d ${COMPDUMPFILE} "${tmp[@]}" || print 'Notice: no compinit available :('
+ unset tmp
else
print 'Notice: no compinit available :('
function compdef { }
_ssh_hosts=()
_etc_hosts=()
fi
+
+ local localname
+ if check_com hostname ; then
+ localname=$(hostname)
+ elif check_com hostnamectl ; then
+ localname=$(hostnamectl --static)
+ else
+ localname="$(uname -n)"
+ fi
+
hosts=(
- $(hostname)
+ "${localname}"
"$_ssh_config_hosts[@]"
"$_ssh_hosts[@]"
"$_etc_hosts[@]"
# add a command line to the shells history without executing it
function commit-to-history () {
- print -s ${(z)BUFFER}
+ print -rs ${(z)BUFFER}
zle send-break
}
zle -N commit-to-history
function batterydarwin () {
GRML_BATTERY_LEVEL=''
local -a table
-table=( ${$(pmset -g ps)[(w)7,8]%%(\%|);} )
+table=( ${$(pmset -g ps)[(w)8,9]%%(\%|);} )
if [[ -n $table[2] ]] ; then
case $table[2] in
charging)
return 2
fi
if (( init )); then
+ REPLY=''
$token $name
token=$REPLY
fi
zstyle -s ":prompt:${grmltheme}:${lr}:items:$it" token new \
|| new=${grml_prompt_token_default[$it]}
if (( ${+grml_prompt_token_function[$it]} )); then
+ REPLY=''
${grml_prompt_token_function[$it]} $it
else
case $it in
}
function grml_maintain_name () {
- # set hostname if not running on host with name 'grml'
- if [[ -n "$HOSTNAME" ]] && [[ "$HOSTNAME" != $(hostname) ]] ; then
+ local localname
+ localname="$(uname -n)"
+
+ # set hostname if not running on local machine
+ if [[ -n "$HOSTNAME" ]] && [[ "$HOSTNAME" != "${localname}" ]] ; then
NAME="@$HOSTNAME"
fi
}
function grml_control_xterm_title () {
case $TERM in
(xterm*|rxvt*)
- set_title "${(%):-"%n@%m:"}" "$1"
+ set_title "${(%):-"%n@%m:"}" "$2"
;;
esac
}
return ${RTN}
}
-# TODO: Is it supported to use pager settings like this?
-# PAGER='less -Mr' - If so, the use of $PAGER here needs fixing
-# with respect to wordsplitting. (ie. ${=PAGER})
if check_com -c $PAGER ; then
#f3# View Debian's changelog of given package(s)
function dchange () {
[[ -z "$1" ]] && printf 'Usage: %s <package_name(s)>\n' "$0" && return 1
local package
+
+ # `less` as $PAGER without e.g. `|lesspipe %s` inside $LESSOPEN can't properly
+ # read *.gz files, try to detect this to use vi instead iff available
+ local viewer
+
+ if [[ ${$(typeset -p PAGER)[2]} = -a ]] ; then
+ viewer=($PAGER) # support PAGER=(less -Mr) but leave array untouched
+ else
+ viewer=(${=PAGER}) # support PAGER='less -Mr'
+ fi
+
+ if [[ ${viewer[1]:t} = less ]] && [[ -z "${LESSOPEN}" ]] && check_com vi ; then
+ viewer='vi'
+ fi
+
for package in "$@" ; do
if [[ -r /usr/share/doc/${package}/changelog.Debian.gz ]] ; then
- $PAGER /usr/share/doc/${package}/changelog.Debian.gz
+ $viewer /usr/share/doc/${package}/changelog.Debian.gz
elif [[ -r /usr/share/doc/${package}/changelog.gz ]] ; then
- $PAGER /usr/share/doc/${package}/changelog.gz
+ $viewer /usr/share/doc/${package}/changelog.gz
elif [[ -r /usr/share/doc/${package}/changelog ]] ; then
- $PAGER /usr/share/doc/${package}/changelog
+ $viewer /usr/share/doc/${package}/changelog
else
if check_com -c aptitude ; then
echo "No changelog for package $package found, using aptitude to retrieve it."
USES_STDIN=true
USES_STDOUT=false
;;
+ *tar.zst)
+ DECOMP_CMD="tar --zstd -xvf -"
+ USES_STDIN=true
+ USES_STDOUT=false
+ ;;
*tar)
DECOMP_CMD="tar -xvf -"
USES_STDIN=true
USES_STDIN=true
USES_STDOUT=true
;;
+ *zst)
+ DECOMP_CMD="zstd -d -c -"
+ USES_STDIN=true
+ USES_STDOUT=true
+ ;;
*)
print "ERROR: '$ARCHIVE' has unrecognized archive type." >&2
RC=$((RC+1))
fi # end of check whether we have the 'hg'-executable
-# grml-small cleanups
+# disable bracketed paste mode for dumb terminals
+[[ "$TERM" == dumb ]] && unset zle_bracketed_paste
+
+# grml-small cleanups and workarounds
# The following is used to remove zsh-config-items that do not work
# in grml-small by default.
if (( GRMLSMALL_SPECIFIC > 0 )) && isgrmlsmall ; then
+ # Clean up
+
unset "abk[V]"
unalias 'V' &> /dev/null
unfunction vman &> /dev/null
unfunction manzsh &> /dev/null
unfunction man2 &> /dev/null
+ # Workarounds
+
+ # See https://github.com/grml/grml/issues/56
+ if ! [[ -x ${commands[dig]} ]]; then
+ function dig_after_all () {
+ unfunction dig
+ unfunction _dig
+ autoload -Uz _dig
+ unfunction dig_after_all
+ }
+ function dig () {
+ if [[ -x ${commands[dig]} ]]; then
+ dig_after_all
+ command dig "$@"
+ return "$!"
+ fi
+ printf 'This installation does not include `dig'\'' for size reasons.\n'
+ printf 'Try `drill'\'' as a light weight alternative.\n'
+ return 0
+ }
+ function _dig () {
+ if [[ -x ${commands[dig]} ]]; then
+ dig_after_all
+ zle -M 'Found `dig'\'' installed. '
+ else
+ zle -M 'Try `drill'\'' instead of `dig'\''.'
+ fi
+ }
+ compdef _dig dig
+ fi
fi
zrclocal