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
Oh My Zsh
Commits
89205f90
Commit
89205f90
authored
Dec 03, 2015
by
Sebastian Gniazdowski
Browse files
znt: faster startup of tools using colorifying (e.g. n-history)
parent
d427ac1e
Changes
2
Show whitespace changes
Inline
Side-by-side
plugins/zsh-navigation-tools/README.md
View file @
89205f90
...
...
@@ -105,8 +105,7 @@ colorize output of the tools, via their config files (check out e.g. n-cd.conf,
it uses this).
## Performance
ZNT are fastest with Zsh before 5.0.8 and starting from 5.2 (the version yet to
be released).
ZNT are fastest with Zsh before 5.0.8 and starting from 5.2
vim:filetype=conf
plugins/zsh-navigation-tools/n-list
View file @
89205f90
...
...
@@ -116,15 +116,15 @@ _nlist_setup_user_vars() {
fi
}
_nlist_colori
ng_list_into_col
_list
()
{
_nlist_colori
fy_disp
_list
()
{
local
col
=
$'
\x
1b[00;34m'
reset
=
$'
\x
1b[0m'
[
-n
"
$NLIST_COLORING_COLOR
"
]
&&
col
=
"
$NLIST_COLORING_COLOR
"
[
-n
"
$NLIST_COLORING_END_COLOR
"
]
&&
reset
=
"
$NLIST_COLORING_END_COLOR
"
if
[
"
$NLIST_COLORING_MATCH_MULTIPLE
"
-eq
1
]
;
then
col
_list
=(
"
${
(@)list//(#mi)
$~NLIST_COLORING_PATTERN
/
$col
${
MATCH
}
$reset
}
"
)
disp
_list
=(
"
${
(@)
disp_
list//(#mi)
$~NLIST_COLORING_PATTERN
/
$col
${
MATCH
}
$reset
}
"
)
else
col
_list
=(
"
${
(@)list/(#mi)
$~NLIST_COLORING_PATTERN
/
$col
${
MATCH
}
$reset
}
"
)
disp
_list
=(
"
${
(@)
disp_
list/(#mi)
$~NLIST_COLORING_PATTERN
/
$col
${
MATCH
}
$reset
}
"
)
fi
}
...
...
@@ -154,7 +154,7 @@ integer inner_width=term_width-3
integer
page_height
=
inner_height
integer
page_width
=
inner_width
typeset
-a
list
col_list
disp_list
typeset
-a
list disp_list
integer
last_element
=
$#
local
action
local
final_key
...
...
@@ -227,16 +227,10 @@ keypad=""
list
=(
"
$@
"
)
last_element
=
"
$#list
"
integer
is_colored
=
0
if
[[
-z
"
$NLIST_SEARCH_BUFFER
"
&&
-n
"
$NLIST_COLORING_PATTERN
"
]]
;
then
is_colored
=
1
_nlist_coloring_list_into_col_list
fi
while
((
1
))
;
do
# Do searching (filtering with string)
if
[
-n
"
$NLIST_SEARCH_BUFFER
"
]
;
then
# Compute new list
, col_list
?
# Compute new list?
if
[[
"
$NLIST_SEARCH_BUFFER
"
!=
"
$prev_search_buffer
"
||
"
$NLIST_IS_UNIQ_MODE
"
-ne
"
$prev_uniq_mode
"
]]
;
then
prev_search_buffer
=
"
$NLIST_SEARCH_BUFFER
"
prev_uniq_mode
=
"
$NLIST_IS_UNIQ_MODE
"
...
...
@@ -290,7 +284,7 @@ while (( 1 )); do
disp_list
=(
"
${
(@)disp_list//(#mi)(
$~colsearch_pattern
)/
$red
${
MATCH
}
$reset
}
"
)
fi
# We have display list, lets replace newlines with "\n" when needed (1/
3
)
# We have display list, lets replace newlines with "\n" when needed (1/
2
)
[
"
$NLIST_REPLACE_NEWLINES
"
-eq
1
]
&&
disp_list
=(
"
${
(@)disp_list//
$'
\n
'
/\\n
}
"
)
fi
...
...
@@ -302,7 +296,7 @@ while (( 1 )); do
# There is no search, but there was in previous loop
# OR
# Uniq mode was entered or left out
# -> compute new list
(maybe also col_list)
# -> compute new list
if
[[
-n
"
$prev_search_buffer
"
||
"
$NLIST_IS_UNIQ_MODE
"
-ne
"
$prev_uniq_mode
"
]]
;
then
prev_search_buffer
=
""
prev_uniq_mode
=
"
$NLIST_IS_UNIQ_MODE
"
...
...
@@ -322,13 +316,6 @@ while (( 1 )); do
# Remove duplicates when in uniq mode
[
"
$NLIST_IS_UNIQ_MODE
"
-eq
1
]
&&
typeset
-U
list
# Apply coloring pattern (when not with search query)
is_colored
=
0
if
[
-n
"
$NLIST_COLORING_PATTERN
"
]
;
then
is_colored
=
1
_nlist_coloring_list_into_col_list
fi
last_element
=
"
$#list
"
# Called after processing list
_nlist_verify_vars
...
...
@@ -340,23 +327,15 @@ while (( 1 )); do
integer
end_idx
=
$((
NLIST_FROM_WHAT_IDX_LIST_IS_SHOWN
+
page_height
-
1
))
[
"
$end_idx
"
-gt
"
$last_element
"
]
&&
end_idx
=
last_element
if
[
"
$is_colored
"
-eq
0
]
;
then
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]
}
"
)
[
-n
"
$NLIST_COLORING_PATTERN
"
]
&&
_nlist_colorify_disp_list
# We have display list, lets replace newlines with "\n" when needed (
3/3
)
# We have display list, lets replace newlines with "\n" when needed (
2/2
)
[
"
$NLIST_REPLACE_NEWLINES
"
-eq
1
]
&&
disp_list
=(
"
${
(@)disp_list//
$'
\n
'
/\\n
}
"
)
fi
fi
# Output the list
n-list-draw
"
$((
(
NLIST_CURRENT_IDX-1
)
%
page_height
+
1
))
"
\
...
...
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