New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: Implement auto-detection of subexecutor #12261
base: master
Are you sure you want to change the base?
Changes from 4 commits
a13fdca
00f57b9
ca09c45
7cc5801
f1935b7
7ddee97
274d43c
a80c6ea
8913f0e
22017d6
4c7cbfe
972c663
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 " | ||
Comment on lines
+35
to
+36
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This is taken out from |
||
|
||
# The function is, in contrast, modifiable by changing the :omz->subexecutor zstyle | ||
function subex() { | ||
local _subex | ||
zstyle -s ':omz' 'subexecutor' _subex | ||
${_subex} "$@" | ||
} | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -27,9 +27,6 @@ elif (( ${+commands[more]} )); then | |
env_default 'PAGER' 'more' | ||
fi | ||
|
||
## super user alias | ||
alias _='sudo ' | ||
|
||
Comment on lines
-30
to
-32
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Moved to |
||
## more intelligent acking for ubuntu users and no alias for users without ack | ||
if (( $+commands[ack-grep] )); then | ||
alias afind='ack-grep -il' | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -95,8 +95,10 @@ function omz_termsupport_preexec { | |
fi | ||
fi | ||
|
||
# cmd name only, or if this is sudo or ssh, the next cmd | ||
local CMD="${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%}" | ||
# cmd name only, or if this is doas/sudo or ssh, the next cmd | ||
local _subex | ||
zstyle -s ':omz' 'subexecutor' _subex | ||
local CMD="${1[(wr)^(*=*|${_subex}|_|subex|mosh|rake|-*)]:gs/%/%%}" | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I replaced
|
||
local LINE="${2:gs/%/%%}" | ||
|
||
title "$CMD" "%100>...>${LINE}%<<" | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I have decided to document the subexecutor auto-detection (and its related zstyle-based configuration knob) in OMZ's README.md, especially since there are mentions of other possible zstyle-based configuration in this file.