mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2024-11-22 05:40:08 +00:00
znt: n-history supports multi-line cmds and starts with current buffer
This commit is contained in:
parent
afd28bf1fc
commit
c2b4d9ff40
5 changed files with 27 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
|||
# Hotlist
|
||||
local hotlist
|
||||
hotlist=(
|
||||
~/.config/znt
|
||||
/usr/share/zsh/site-functions
|
||||
/usr/share/zsh
|
||||
/usr/local/share/zsh/site-functions
|
||||
|
|
|
@ -3,3 +3,8 @@
|
|||
# On Linux virtual terminal this will be enforced to reverse (because of poor
|
||||
# underline support on that terminal)
|
||||
local active_text=underline
|
||||
|
||||
# Highlight a few keywords
|
||||
local NLIST_COLORING_PATTERN="(while|for |sudo|make|(#s)git|vim(#e)|vim |emacs(#e)|emacs )"
|
||||
local NLIST_COLORING_COLOR=$'\x1b[00;33m'
|
||||
local NLIST_COLORING_MATCH_MULTIPLE=1
|
||||
|
|
|
@ -10,6 +10,7 @@ emulate -L zsh
|
|||
|
||||
setopt extendedglob
|
||||
zmodload zsh/curses
|
||||
zmodload zsh/parameter
|
||||
|
||||
local IFS="
|
||||
"
|
||||
|
@ -24,16 +25,16 @@ local selected
|
|||
|
||||
NLIST_REMEMBER_STATE=0
|
||||
|
||||
list=( `builtin history -rn 1` )
|
||||
list=( "$history[@]" )
|
||||
list=( "${(@M)list:#(#i)*$1*}" )
|
||||
|
||||
local NLIST_GREP_STRING="$1"
|
||||
|
||||
if [ "$#list" -eq 0 ]; then
|
||||
echo "No matching history entries"
|
||||
return 1
|
||||
fi
|
||||
|
||||
local NLIST_GREP_STRING="$1"
|
||||
local NLIST_REPLACE_NEWLINES="1"
|
||||
n-list "${list[@]}"
|
||||
|
||||
if [ "$REPLY" -gt 0 ]; then
|
||||
|
|
|
@ -139,6 +139,7 @@ if [ "$#" -lt 1 ]; then
|
|||
fi
|
||||
|
||||
REPLY="-1"
|
||||
typeset -ga reply
|
||||
reply=()
|
||||
|
||||
integer term_height="$LINES"
|
||||
|
@ -188,6 +189,11 @@ if [ "$NLIST_START_IN_SEARCH_MODE" -eq 1 ]; then
|
|||
NLIST_IS_SEARCH_MODE=1
|
||||
fi
|
||||
|
||||
if [ -n "$NLIST_SET_SEARCH_TO" ]; then
|
||||
NLIST_SEARCH_BUFFER="$NLIST_SET_SEARCH_TO"
|
||||
NLIST_SET_SEARCH_TO=""
|
||||
fi
|
||||
|
||||
if [ "$NLIST_START_IN_UNIQ_MODE" -eq 1 ]; then
|
||||
NLIST_START_IN_UNIQ_MODE=0
|
||||
NLIST_IS_UNIQ_MODE=1
|
||||
|
@ -281,6 +287,9 @@ while (( 1 )); do
|
|||
if [ "$prev_start_idx" -ne "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" ]; then
|
||||
prev_start_idx="$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN"
|
||||
disp_list=( "${(@)col_list[NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN, end_idx]}" )
|
||||
|
||||
# We have display list, lets replace newlines with "\n" when needed (1/3)
|
||||
[ "$NLIST_REPLACE_NEWLINES" -eq 1 ] && disp_list=( "${(@)disp_list//$'\n'/\\n}" )
|
||||
fi
|
||||
|
||||
# Output colored list
|
||||
|
@ -333,11 +342,17 @@ while (( 1 )); do
|
|||
if [ "$prev_start_idx" -ne "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" ]; then
|
||||
prev_start_idx="$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN"
|
||||
disp_list=( "${(@)list[NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN, end_idx]}" )
|
||||
|
||||
# We have display list, lets replace newlines with "\n" when needed (2/3)
|
||||
[ "$NLIST_REPLACE_NEWLINES" -eq 1 ] && disp_list=( "${(@)disp_list//$'\n'/\\n}" )
|
||||
fi
|
||||
else
|
||||
if [ "$prev_start_idx" -ne "$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN" ]; then
|
||||
prev_start_idx="$NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN"
|
||||
disp_list=( "${(@)col_list[NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN, end_idx]}" )
|
||||
|
||||
# We have display list, lets replace newlines with "\n" when needed (3/3)
|
||||
[ "$NLIST_REPLACE_NEWLINES" -eq 1 ] && disp_list=( "${(@)disp_list//$'\n'/\\n}" )
|
||||
fi
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,8 +1,10 @@
|
|||
autoload znt-usetty-wrapper n-history
|
||||
local NLIST_START_IN_SEARCH_MODE=1
|
||||
local NLIST_START_IN_UNIQ_MODE=1
|
||||
local NLIST_SET_SEARCH_TO="$BUFFER"
|
||||
|
||||
znt-usetty-wrapper n-history "$@"
|
||||
|
||||
unset NLIST_START_IN_SEARCH_MODE
|
||||
unset NLIST_START_IN_UNIQ_MODE
|
||||
unset NLIST_SET_SEARCH_TO
|
||||
|
|
Loading…
Reference in a new issue