diff options
author | Tuowen Zhao <ztuowen@gmail.com> | 2020-07-25 21:01:02 -0600 |
---|---|---|
committer | Tuowen Zhao <ztuowen@gmail.com> | 2020-07-25 21:01:02 -0600 |
commit | 1edd2c43b12f9f2c2ef04cfa0428db0f7fc0aa7c (patch) | |
tree | e6aeb9029206948167619f4dc1c2ec42c4040ab4 /plugins/sudo/sudo.plugin.zsh | |
parent | 59344b5c59b7190ad3b14a2e8e02db8b5559141b (diff) | |
parent | 95218372402afc9aeafc89c0984310387ce79599 (diff) | |
download | zsh-1edd2c43b12f9f2c2ef04cfa0428db0f7fc0aa7c.tar.gz zsh-1edd2c43b12f9f2c2ef04cfa0428db0f7fc0aa7c.tar.bz2 zsh-1edd2c43b12f9f2c2ef04cfa0428db0f7fc0aa7c.zip |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'plugins/sudo/sudo.plugin.zsh')
-rw-r--r-- | plugins/sudo/sudo.plugin.zsh | 29 |
1 files changed, 21 insertions, 8 deletions
diff --git a/plugins/sudo/sudo.plugin.zsh b/plugins/sudo/sudo.plugin.zsh index f405b025f..51579377d 100644 --- a/plugins/sudo/sudo.plugin.zsh +++ b/plugins/sudo/sudo.plugin.zsh @@ -13,15 +13,28 @@ # ------------------------------------------------------------------------------ sudo-command-line() { - [[ -z $BUFFER ]] && zle up-history - if [[ $BUFFER == sudo\ * ]]; then - LBUFFER="${LBUFFER#sudo }" - elif [[ $BUFFER == $EDITOR\ * ]]; then - LBUFFER="${LBUFFER#$EDITOR }" - LBUFFER="sudoedit $LBUFFER" + [[ -z $BUFFER ]] && LBUFFER="$(fc -ln -1)" + if [[ -n $EDITOR && $BUFFER == $EDITOR\ * ]]; then + if [[ ${#LBUFFER} -le ${#EDITOR} ]]; then + RBUFFER=" ${BUFFER#$EDITOR }" + LBUFFER="sudoedit" + else + LBUFFER="sudoedit ${LBUFFER#$EDITOR }" + fi elif [[ $BUFFER == sudoedit\ * ]]; then - LBUFFER="${LBUFFER#sudoedit }" - LBUFFER="$EDITOR $LBUFFER" + if [[ ${#LBUFFER} -le 8 ]]; then + RBUFFER=" ${BUFFER#sudoedit }" + LBUFFER="$EDITOR" + else + LBUFFER="$EDITOR ${LBUFFER#sudoedit }" + fi + elif [[ $BUFFER == sudo\ * ]]; then + if [[ ${#LBUFFER} -le 4 ]]; then + RBUFFER="${BUFFER#sudo }" + LBUFFER="" + else + LBUFFER="${LBUFFER#sudo }" + fi else LBUFFER="sudo $LBUFFER" fi |