1
0
Fork 0
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:
Johnothan King 2022-01-07 07:44:05 -08:00 committed by Martijn Dekker
parent ca5803419b
commit 1a9af9db40
4 changed files with 19 additions and 3 deletions

View file

@ -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);
}