mirror of
git://git.code.sf.net/p/cdesktopenv/code
synced 2025-03-09 15:50:02 +00:00
Fix buggy completion of ~/some in vi mode (#41)
This commit fixes the bug reported in: https://github.com/att/ast/issues/682 The following sequence fails in vi mode because ksh looks in the wrong part of the 'virtual' buffer: $ touch ~/testfile $ ls ~/test<tab> The fix is to change 'virtual[i]' to 'virtual[last_virt]' in the bugged section of code. The other changes are to make sure listing files in a directory with something like 'ls /etc/<tab>' calls the code for Ctrl+L to preserve 'ls /etc/' rather than try (and fail) to complete the directory name, producing 'ls /etc\n/'. This bugfix was backported from ksh93v- 2013-10-10-alpha. src/cmd/ksh93/edit/vi.c - Backport the bugfix from ksh93v- 2013-10-10-alpha for this problem. src/cmd/ksh93/tests/pty.sh - Add a regression test for this issue using pty, adjusted slightly for a fake home directory in /tmp.
This commit is contained in:
parent
d41ec674c7
commit
4cecde1dd3
4 changed files with 30 additions and 4 deletions
|
@ -453,4 +453,22 @@ w fg
|
|||
u yes-yes
|
||||
!
|
||||
|
||||
# ======
|
||||
# err_exit #
|
||||
# Test file name completion in vi mode
|
||||
mkdir /tmp/fakehome
|
||||
tst $LINENO <<"!"
|
||||
L vi mode file name completion
|
||||
|
||||
# Completing a file name in vi mode that contains '~' and has a
|
||||
# base name the same length as the home directory's parent directory
|
||||
# shouldn't fail.
|
||||
|
||||
w set -o vi; HOME=/tmp/fakehome; touch ~/testfile
|
||||
w echo ~/tes\t
|
||||
u ^/tmp/fakehome/testfile\r?\n$
|
||||
!
|
||||
rm -r /tmp/fakehome
|
||||
|
||||
# ======
|
||||
exit $((Errors<125?Errors:125))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue