Revert fc usage in calculating suggestion

As far as I know, `fc` makes it impossible to tell whether history items
used an actual newline character or the string "\n". Pulling from the
`$history` array gives a more accurate representation of the actual
command that was run.
This commit is contained in:
Eric Freese 2017-01-24 23:04:07 -07:00
parent 8e06a54b1c
commit 0305908adf
3 changed files with 17 additions and 3 deletions

View file

@ -30,7 +30,7 @@ describe 'default strategy' do
end end
end end
xcontext 'with a multiline hist entry' do context 'with a multiline hist entry' do
before do before do
session.send_string('echo "') session.send_string('echo "')
session.send_keys('enter') session.send_keys('enter')

View file

@ -9,5 +9,12 @@
_zsh_autosuggest_strategy_default() { _zsh_autosuggest_strategy_default() {
setopt localoptions EXTENDED_GLOB setopt localoptions EXTENDED_GLOB
fc -lnrm "${1//(#m)[\\()\[\]|*?~]/\\$MATCH}*" 1 2>/dev/null | head -n 1 local prefix="${1//(#m)[\\()\[\]|*?~]/\\$MATCH}"
# Get the keys of the history items that match
local -a histkeys
histkeys=(${(k)history[(r)$prefix*]})
# Echo the value of the first key
echo -E "${history[$histkeys[1]]}"
} }

View file

@ -421,7 +421,14 @@ zle -N _autosuggest-show-suggestion _zsh_autosuggest_show_suggestion
_zsh_autosuggest_strategy_default() { _zsh_autosuggest_strategy_default() {
setopt localoptions EXTENDED_GLOB setopt localoptions EXTENDED_GLOB
fc -lnrm "${1//(#m)[\\()\[\]|*?~]/\\$MATCH}*" 1 2>/dev/null | head -n 1 local prefix="${1//(#m)[\\()\[\]|*?~]/\\$MATCH}"
# Get the keys of the history items that match
local -a histkeys
histkeys=(${(k)history[(r)$prefix*]})
# Echo the value of the first key
echo -E "${history[$histkeys[1]]}"
} }
#--------------------------------------------------------------------# #--------------------------------------------------------------------#