Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
adam.huang
Ohmyzsh
Commits
d8888719
Unverified
Commit
d8888719
authored
Nov 25, 2020
by
Marc Cornellà
Committed by
GitHub
Nov 25, 2020
Browse files
fix(magic-enter): fix various bugs in the plugin (#9466)
parent
7a76afd6
Changes
1
Hide whitespace changes
Inline
Side-by-side
plugins/magic-enter/magic-enter.plugin.zsh
View file @
d8888719
# Bind quick stuff to enter!
# Default commands
#
:
${
MAGIC_ENTER_GIT_COMMAND
:
=
"git status -u ."
}
# run when in a git repository
# Pressing enter in a git directory runs `git status`
:
${
MAGIC_ENTER_OTHER_COMMAND
:
=
"ls -lh ."
}
# run anywhere else
# in other directories `ls`
magic-enter
()
{
# If commands are not already set, use the defaults
[
-z
"
$MAGIC_ENTER_GIT_COMMAND
"
]
&&
MAGIC_ENTER_GIT_COMMAND
=
"git status -u ."
[
-z
"
$MAGIC_ENTER_OTHER_COMMAND
"
]
&&
MAGIC_ENTER_OTHER_COMMAND
=
"ls -lh ."
if
[[
-z
$BUFFER
]]
;
then
magic-enter
()
{
echo
""
# Only run MAGIC_ENTER commands when in PS1 and command line is empty
if
git rev-parse
--is-inside-work-tree
&>/dev/null
;
then
# http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#User_002dDefined-Widgets
eval
"
$MAGIC_ENTER_GIT_COMMAND
"
if
[[
-n
"
$BUFFER
"
||
"
$CONTEXT
"
!=
start
]]
;
then
else
return
eval
"
$MAGIC_ENTER_OTHER_COMMAND
"
fi
fi
zle redisplay
if
command
git rev-parse
--is-inside-work-tree
&>/dev/null
;
then
BUFFER
=
"
$MAGIC_ENTER_GIT_COMMAND
"
else
else
zle accept-line
BUFFER
=
"
$MAGIC_ENTER_OTHER_COMMAND
"
fi
fi
}
}
zle
-N
magic-enter
# Wrapper for the accept-line zle widget (run when pressing Enter)
# If the wrapper already exists don't redefine it
((
!
${
+functions[_magic-enter_accept-line]
}
))
||
return
0
case
"
$widgets
[accept-line]"
in
# Override the current accept-line widget, calling the old one
user:
*
)
zle
-N
_magic-enter_orig_accept-line
"
${
widgets
[accept-line]#user
:
}
"
function
_magic-enter_accept-line
()
{
magic-enter
zle _magic-enter_orig_accept-line
--
"
$@
"
}
;;
# If no user widget defined, call the original accept-line widget
builtin
)
function
_magic-enter_accept-line
()
{
magic-enter
zle .accept-line
}
;;
esac
bindkey
-M
emacs
"^M"
magic-enter
zle
-N
accept-line _magic-enter_accept-line
bindkey
-M
vicmd
"^M"
magic-enter
bindkey
-M
viins
"^M"
magic-enter
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