From ebb8358b0e4beeea2cde5a79049bdab44f67176b Mon Sep 17 00:00:00 2001 From: Bert Gijsbers Date: Thu, 16 May 2024 20:09:25 +0200 Subject: [PATCH] Also do tilde expansion in file arguments. --- src/upath.cc | 1 + src/yinputline.cc | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/upath.cc b/src/upath.cc index bc55be7ca..7d8c8bd61 100644 --- a/src/upath.cc +++ b/src/upath.cc @@ -261,6 +261,7 @@ bool upath::glob(mstring pattern, YStringArray& list, const char* flags) { case 'C': flagbits |= GLOB_NOCHECK; break; case 'E': flagbits |= GLOB_NOESCAPE; break; case 'S': flagbits |= GLOB_NOSORT; break; + case 'T': flagbits |= GLOB_TILDE; break; default: break; } } diff --git a/src/yinputline.cc b/src/yinputline.cc index 243bd40ee..106f9a9c4 100644 --- a/src/yinputline.cc +++ b/src/yinputline.cc @@ -718,7 +718,12 @@ void YInputLine::complete() { if (i > 0 && size_t(i + 1) < mstr.length()) { mstring sub(mstr.substring(i + 1)); YStringArray list; - if (upath::glob(sub + "*", list, "/S") && list.nonempty()) { + if (sub[0] == '~' && upath::glob(sub, list, "/ST") && + list.getCount() == 1) { + mstring found(mstr.substring(0, i + 1) + list[0]); + setText(found, true); + } + else if (upath::glob(sub + "*", list, "/S") && list.nonempty()) { if (list.getCount() == 1) { mstring found(mstr.substring(0, i + 1) + list[0]); setText(found, true);