mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
Fix vi mode tab completion with spaces (#413)
Attempting to complete file names in vi mode using tab completion can fail if the last character on the command line is a space. Reproducer (note that this bug doesn't occur in emacs mode): $ set -o vi $ mkdir '/tmp/foo bar' $ test -d /tmp/foo\ <Tab> src/cmd/ksh93/edit/vi.c: - Don't disable tab completion or reset the tab count just because the last character on the command line is a space. This bugfix was backported from ksh93v- 2014-06-06. src/cmd/ksh93/tests/pty.sh: - Add a regression test for the tab completion bug.
This commit is contained in:
parent
ca5803419b
commit
1a9af9db40
4 changed files with 19 additions and 3 deletions
|
|
@ -1528,7 +1528,6 @@ static void getline(register Vi_t* vp,register int mode)
|
|||
if(sh_isoption(SH_VI) &&
|
||||
mode != SEARCH &&
|
||||
last_virt >= 0 &&
|
||||
(vp->ed->e_tabcount || !isblank(cur_virt)) &&
|
||||
sh.nextprompt)
|
||||
{
|
||||
if(virtual[cur_virt]=='\\')
|
||||
|
|
@ -2479,7 +2478,7 @@ addin:
|
|||
--cur_virt;
|
||||
--last_virt;
|
||||
vp->ocur_virt = MAXCHAR;
|
||||
if(c=='=' || (mode<cur_virt && (virtual[cur_virt]==' ' || virtual[cur_virt]=='/')))
|
||||
if(c=='=' || (mode<cur_virt && virtual[cur_virt]=='/'))
|
||||
vp->ed->e_tabcount = 0;
|
||||
return(APPEND);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue