summaryrefslogtreecommitdiff
path: root/plugins/zsh-navigation-tools
diff options
context:
space:
mode:
authorSebastian Gniazdowski <sgniazdowski@gmail.com>2015-11-30 10:48:30 +0100
committerSebastian Gniazdowski <sgniazdowski@gmail.com>2015-11-30 10:48:30 +0100
commitc2b4d9ff40f2f965a5d9d282081f3f8bf51bb5b5 (patch)
treeb96ce8d323c999bc6cfb62fbdddd4ae8f7ba2b5b /plugins/zsh-navigation-tools
parentafd28bf1fc22f53c4a1af3f5836ca428affb34b3 (diff)
downloadzsh-c2b4d9ff40f2f965a5d9d282081f3f8bf51bb5b5.tar.gz
zsh-c2b4d9ff40f2f965a5d9d282081f3f8bf51bb5b5.tar.bz2
zsh-c2b4d9ff40f2f965a5d9d282081f3f8bf51bb5b5.zip
znt: n-history supports multi-line cmds and starts with current buffer
Diffstat (limited to 'plugins/zsh-navigation-tools')
-rw-r--r--plugins/zsh-navigation-tools/.config/znt/n-cd.conf1
-rw-r--r--plugins/zsh-navigation-tools/.config/znt/n-history.conf5
-rw-r--r--plugins/zsh-navigation-tools/n-history7
-rw-r--r--plugins/zsh-navigation-tools/n-list15
-rw-r--r--plugins/zsh-navigation-tools/znt-history-widget2
5 files changed, 27 insertions, 3 deletions
diff --git a/plugins/zsh-navigation-tools/.config/znt/n-cd.conf b/plugins/zsh-navigation-tools/.config/znt/n-cd.conf
index 5fcfe64fa..f8c49bfac 100644
--- a/plugins/zsh-navigation-tools/.config/znt/n-cd.conf
+++ b/plugins/zsh-navigation-tools/.config/znt/n-cd.conf
@@ -1,6 +1,7 @@
# Hotlist
local hotlist
hotlist=(
+ ~/.config/znt
/usr/share/zsh/site-functions
/usr/share/zsh
/usr/local/share/zsh/site-functions
diff --git a/plugins/zsh-navigation-tools/.config/znt/n-history.conf b/plugins/zsh-navigation-tools/.config/znt/n-history.conf
index f798f7121..5d4bad822 100644
--- a/plugins/zsh-navigation-tools/.config/znt/n-history.conf
+++ b/plugins/zsh-navigation-tools/.config/znt/n-history.conf
@@ -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
diff --git a/plugins/zsh-navigation-tools/n-history b/plugins/zsh-navigation-tools/n-history
index e66f2a50a..c9e53316b 100644
--- a/plugins/zsh-navigation-tools/n-history
+++ b/plugins/zsh-navigation-tools/n-history
@@ -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
diff --git a/plugins/zsh-navigation-tools/n-list b/plugins/zsh-navigation-tools/n-list
index 3b326515e..c7066318e 100644
--- a/plugins/zsh-navigation-tools/n-list
+++ b/plugins/zsh-navigation-tools/n-list
@@ -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
diff --git a/plugins/zsh-navigation-tools/znt-history-widget b/plugins/zsh-navigation-tools/znt-history-widget
index 097de8233..9ddae606d 100644
--- a/plugins/zsh-navigation-tools/znt-history-widget
+++ b/plugins/zsh-navigation-tools/znt-history-widget
@@ -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