Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
O
oh-my-zsh
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
github
oh-my-zsh
Commits
874d83f7
Unverified
Commit
874d83f7
authored
Nov 11, 2020
by
Subhaditya Nath
Committed by
GitHub
Nov 11, 2020
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat(sudo): support aliases to $EDITOR (#9431)
Co-authored-by:
Marc Cornellà
<
marc.cornella@live.com
>
parent
1beac595
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
31 additions
and
21 deletions
+31
-21
sudo.plugin.zsh
plugins/sudo/sudo.plugin.zsh
+31
-21
No files found.
plugins/sudo/sudo.plugin.zsh
View file @
874d83f7
...
...
@@ -9,40 +9,48 @@
# -------
#
# * Dongweiming <ciici123@gmail.com>
# * Subhaditya Nath <github.com/subnut>
# * Marc Cornellà <github.com/mcornella>
#
# ------------------------------------------------------------------------------
__sudo-replace-buffer
()
{
local
old
=
$1
new
=
$2
space
=
${
2
:+
}
if
[[
${#
LBUFFER
}
-le
${#
old
}
]]
;
then
RBUFFER
=
"
${
space
}${
BUFFER
#
$old
}
"
LBUFFER
=
"
${
new
}
"
else
LBUFFER
=
"
${
new
}${
space
}${
LBUFFER
#
$old
}
"
fi
}
sudo-command-line
()
{
[[
-z
$BUFFER
]]
&&
LBUFFER
=
"
$(
fc
-ln
-1
)
"
# Save beginning space
local
WHITESPACE
=
""
if
[[
${
LBUFFER
:0:1
}
=
=
" "
]]
;
then
if
[[
${
LBUFFER
:0:1
}
=
" "
]]
;
then
WHITESPACE
=
" "
LBUFFER
=
"
${
LBUFFER
:1
}
"
fi
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
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
}
"
# Get the first part of the typed command and check if it's an alias to $EDITOR
# If so, locally change $EDITOR to the alias so that it matches below
if
[[
-n
"
$EDITOR
"
]]
;
then
local
cmd
=
"
${${
(Az)BUFFER
}
[1]
}
"
if
[[
"
${
aliases
[
$cmd
]
}
"
=
(
\$
EDITOR|
$EDITOR
)
\
*
]]
;
then
local
EDITOR
=
"
$cmd
"
fi
fi
if
[[
-n
$EDITOR
&&
$BUFFER
=
$EDITOR
\
*
]]
;
then
__sudo-replace-buffer
"
$EDITOR
"
"sudoedit"
elif
[[
-n
$EDITOR
&&
$BUFFER
=
\$
EDITOR
\
*
]]
;
then
__sudo-replace-buffer
"
\$
EDITOR"
"sudoedit"
elif
[[
$BUFFER
=
sudoedit
\
*
]]
;
then
__sudo-replace-buffer
"sudoedit"
"
$EDITOR
"
elif
[[
$BUFFER
=
sudo
\
*
]]
;
then
__sudo-replace-buffer
"sudo"
""
else
LBUFFER
=
"sudo
$LBUFFER
"
fi
...
...
@@ -50,7 +58,9 @@ sudo-command-line() {
# Preserve beginning space
LBUFFER
=
"
${
WHITESPACE
}${
LBUFFER
}
"
}
zle
-N
sudo-command-line
# Defined shortcut keys: [Esc] [Esc]
bindkey
-M
emacs
'\e\e'
sudo-command-line
bindkey
-M
vicmd
'\e\e'
sudo-command-line
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment