Ability to define a fzf query prefix which is only used when $BUFFER is not empty.
This commit is contained in:
@@ -47,6 +47,7 @@ Zgenom will automatically clone the plugin repositories for you when you do a `z
|
|||||||
| `ZSH_FZF_HISTORY_SEARCH_BIND` | `'^r'` | Keybind to trigger fzf reverse search |
|
| `ZSH_FZF_HISTORY_SEARCH_BIND` | `'^r'` | Keybind to trigger fzf reverse search |
|
||||||
| `ZSH_FZF_HISTORY_SEARCH_FZF_ARGS` | `'+s +m -x -e --preview-window=hidden'` | Arguments for `fzf` (might be updated, not recommended to override) |
|
| `ZSH_FZF_HISTORY_SEARCH_FZF_ARGS` | `'+s +m -x -e --preview-window=hidden'` | Arguments for `fzf` (might be updated, not recommended to override) |
|
||||||
| `ZSH_FZF_HISTORY_SEARCH_FZF_EXTRA_ARGS` | `''` | Extra arguments for `fzf` |
|
| `ZSH_FZF_HISTORY_SEARCH_FZF_EXTRA_ARGS` | `''` | Extra arguments for `fzf` |
|
||||||
|
| `ZSH_FZF_HISTORY_SEARCH_FZF_QUERY_PREFIX` | `''` | Query prefix for `fzf` when $BUFFER is not empty. Set it to '^' to query history lines begin with $BUFFER |
|
||||||
| `ZSH_FZF_HISTORY_SEARCH_END_OF_LINE` | `''` | Put the cursor on at the end of the line after completion, `empty=false` |
|
| `ZSH_FZF_HISTORY_SEARCH_END_OF_LINE` | `''` | Put the cursor on at the end of the line after completion, `empty=false` |
|
||||||
| `ZSH_FZF_HISTORY_SEARCH_EVENT_NUMBERS` | `1` | Include event numbers in search. Set to 0 to remove event numbers from the search. |
|
| `ZSH_FZF_HISTORY_SEARCH_EVENT_NUMBERS` | `1` | Include event numbers in search. Set to 0 to remove event numbers from the search. |
|
||||||
| `ZSH_FZF_HISTORY_SEARCH_DATES_IN_SEARCH` | `1` | Include ISO8601 timestamps in search. Set to 0 to remove them from the search. |
|
| `ZSH_FZF_HISTORY_SEARCH_DATES_IN_SEARCH` | `1` | Include ISO8601 timestamps in search. Set to 0 to remove them from the search. |
|
||||||
|
|||||||
@@ -29,6 +29,10 @@ typeset -g ZSH_FZF_HISTORY_SEARCH_DATES_IN_SEARCH=1
|
|||||||
(( ! ${+ZSH_FZF_HISTORY_SEARCH_REMOVE_DUPLICATES} )) &&
|
(( ! ${+ZSH_FZF_HISTORY_SEARCH_REMOVE_DUPLICATES} )) &&
|
||||||
typeset -g ZSH_FZF_HISTORY_SEARCH_REMOVE_DUPLICATES=''
|
typeset -g ZSH_FZF_HISTORY_SEARCH_REMOVE_DUPLICATES=''
|
||||||
|
|
||||||
|
# Define fzf query, when $BUFFER is not empty
|
||||||
|
(( ! ${+ZSH_FZF_HISTORY_SEARCH_FZF_QUERY_PREFIX} )) &&
|
||||||
|
typeset -g ZSH_FZF_HISTORY_SEARCH_FZF_QUERY_PREFIX=''
|
||||||
|
|
||||||
fzf_history_search() {
|
fzf_history_search() {
|
||||||
setopt extendedglob
|
setopt extendedglob
|
||||||
|
|
||||||
@@ -56,13 +60,17 @@ fzf_history_search() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
candidates=(${(f)"$(eval $history_cmd | fzf ${=ZSH_FZF_HISTORY_SEARCH_FZF_ARGS} ${=ZSH_FZF_HISTORY_SEARCH_FZF_EXTRA_ARGS} -q "$BUFFER")"})
|
if (( $#BUFFER )); then
|
||||||
|
candidates=(${(f)"$(eval $history_cmd | fzf ${=ZSH_FZF_HISTORY_SEARCH_FZF_ARGS} ${=ZSH_FZF_HISTORY_SEARCH_FZF_EXTRA_ARGS} -q "${=ZSH_FZF_HISTORY_SEARCH_FZF_QUERY_PREFIX}$BUFFER")"})
|
||||||
|
else
|
||||||
|
candidates=(${(f)"$(eval $history_cmd | fzf ${=ZSH_FZF_HISTORY_SEARCH_FZF_ARGS} ${=ZSH_FZF_HISTORY_SEARCH_FZF_EXTRA_ARGS})"})
|
||||||
|
fi
|
||||||
local ret=$?
|
local ret=$?
|
||||||
if [ -n "$candidates" ]; then
|
if [ -n "$candidates" ]; then
|
||||||
if (( ! $CANDIDATE_LEADING_FIELDS == 1 )); then
|
if (( ! $CANDIDATE_LEADING_FIELDS == 1 )); then
|
||||||
BUFFER="${candidates[@]/(#m)[0-9 \-\:]##/${${(As: :)MATCH}[${CANDIDATE_LEADING_FIELDS},-1]}}"
|
BUFFER="${candidates[@]/(#m)[0-9 \-\:]##/${${(As: :)MATCH}[${CANDIDATE_LEADING_FIELDS},-1]}}"
|
||||||
else
|
else
|
||||||
BUFFER="${candidates[@]}"
|
BUFFER="${(j| && |)candidates}"
|
||||||
fi
|
fi
|
||||||
BUFFER=$(printf "${BUFFER[@]//\\\\n/\\\\\\n}")
|
BUFFER=$(printf "${BUFFER[@]//\\\\n/\\\\\\n}")
|
||||||
zle vi-fetch-history -n $BUFFER
|
zle vi-fetch-history -n $BUFFER
|
||||||
|
|||||||
Reference in New Issue
Block a user