mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-02-06 02:51:32 +01:00
feat: Implement auto-detection of subexecutor
This commit is contained in:
parent
fd01fd66ce
commit
a13fdca8ac
4 changed files with 52 additions and 6 deletions
44
lib/00subexecutor.zsh
Normal file
44
lib/00subexecutor.zsh
Normal file
|
|
@ -0,0 +1,44 @@
|
||||||
|
## Provides auto-detection of subexecutor to use
|
||||||
|
|
||||||
|
# If in the future a new subexecuter is created, we only need to edit this array
|
||||||
|
typeset _KNOWN_SUBEXES=( "doas" "sudo" )
|
||||||
|
typeset _SUBEX
|
||||||
|
|
||||||
|
function _SetupSubexecutor() {
|
||||||
|
local _i
|
||||||
|
local _cmd
|
||||||
|
zstyle -s ':omz' 'subexecutor' _SUBEX
|
||||||
|
if [[ "$_SUBEX" ]]; then
|
||||||
|
if command -v "$_SUBEX" > /dev/null; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
print "Cannot find subexecutor '${_SUBEX}'; please check your configuration!" >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
for _i in "${_KNOWN_SUBEXES[@]}"; do
|
||||||
|
if command -v "$_i" > /dev/null; then
|
||||||
|
_SUBEX="$_i"
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
if [[ -z $_SUBEX ]]; then
|
||||||
|
print "oh-my-zsh: cannot auto-detect subexecutor; please specify explicitly using 'zstyle :omz subexecutor'." >&2
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
zstyle ':omz' 'subexecutor' "$_SUBEX"
|
||||||
|
}
|
||||||
|
|
||||||
|
_SetupSubexecutor
|
||||||
|
unfunction _SetupSubexecutor
|
||||||
|
unset _KNOWN_SUBEXES
|
||||||
|
|
||||||
|
# The alias provides a 'hardcoded', invariant subexecutor to use throughout the shell session
|
||||||
|
alias _="$_SUBEX "
|
||||||
|
|
||||||
|
# The function is, in contrast, modifiable by changing the :omz->subexecutor zstyle
|
||||||
|
function subex() {
|
||||||
|
local _subex
|
||||||
|
zstyle -s ':omz' 'subexecutor' _subex
|
||||||
|
${_subex} "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
@ -3,8 +3,11 @@ if [[ "$ENABLE_CORRECTION" == "true" ]]; then
|
||||||
alias man='nocorrect man'
|
alias man='nocorrect man'
|
||||||
alias mkdir='nocorrect mkdir'
|
alias mkdir='nocorrect mkdir'
|
||||||
alias mv='nocorrect mv'
|
alias mv='nocorrect mv'
|
||||||
alias sudo='nocorrect sudo'
|
|
||||||
alias su='nocorrect su'
|
alias su='nocorrect su'
|
||||||
|
|
||||||
|
zstyle -s ':omz' 'subexecutor' _subex
|
||||||
|
alias "$_subex"="nocorrect $_subex"
|
||||||
|
unset _subex
|
||||||
|
|
||||||
setopt correct_all
|
setopt correct_all
|
||||||
fi
|
fi
|
||||||
|
|
|
||||||
|
|
@ -27,9 +27,6 @@ elif (( ${+commands[more]} )); then
|
||||||
env_default 'PAGER' 'more'
|
env_default 'PAGER' 'more'
|
||||||
fi
|
fi
|
||||||
|
|
||||||
## super user alias
|
|
||||||
alias _='sudo '
|
|
||||||
|
|
||||||
## more intelligent acking for ubuntu users and no alias for users without ack
|
## more intelligent acking for ubuntu users and no alias for users without ack
|
||||||
if (( $+commands[ack-grep] )); then
|
if (( $+commands[ack-grep] )); then
|
||||||
alias afind='ack-grep -il'
|
alias afind='ack-grep -il'
|
||||||
|
|
|
||||||
|
|
@ -95,8 +95,10 @@ function omz_termsupport_preexec {
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# cmd name only, or if this is sudo or ssh, the next cmd
|
# cmd name only, or if this is doas/sudo or ssh, the next cmd
|
||||||
local CMD="${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%}"
|
local _subex
|
||||||
|
zstyle -s ':omz' 'subexecutor' _subex
|
||||||
|
local CMD="${1[(wr)^(*=*|${_subex}|_|subex|mosh|rake|-*)]:gs/%/%%}"
|
||||||
local LINE="${2:gs/%/%%}"
|
local LINE="${2:gs/%/%%}"
|
||||||
|
|
||||||
title "$CMD" "%100>...>${LINE}%<<"
|
title "$CMD" "%100>...>${LINE}%<<"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue