Ignore file system errors when printing bash completion
This commit is contained in:
parent
0f56d25251
commit
eadb261c56
|
@ -1508,16 +1508,16 @@ void ArgumentParser::printBashCompletion(int argc, const char *const *argv, unsi
|
|||
// -> completion for files and dirs
|
||||
#ifdef CPP_UTILITIES_USE_STANDARD_FILESYSTEM
|
||||
if (completionInfo.completeFiles || completionInfo.completeDirs) {
|
||||
using namespace std::filesystem;
|
||||
try {
|
||||
const auto replace = "'"s, with = "'\"'\"'"s;
|
||||
const auto useActualDir = argc && currentWordIndex <= completionInfo.lastSpecifiedArgIndex && opening;
|
||||
const auto dirEntries = [&] {
|
||||
directory_iterator i;
|
||||
filesystem::directory_iterator i;
|
||||
if (useActualDir) {
|
||||
i = directory_iterator(actualDir);
|
||||
i = filesystem::directory_iterator(actualDir);
|
||||
findAndReplace(actualDir, replace, with);
|
||||
} else {
|
||||
i = directory_iterator(".");
|
||||
i = filesystem::directory_iterator(".");
|
||||
}
|
||||
return i;
|
||||
}();
|
||||
|
@ -1547,6 +1547,9 @@ void ArgumentParser::printBashCompletion(int argc, const char *const *argv, unsi
|
|||
cout << dirEntryName << '\'' << ' ';
|
||||
haveFileOrDirCompletions = true;
|
||||
}
|
||||
} catch (const filesystem::filesystem_error &) {
|
||||
// ignore filesystem errors; there's no good way to report errors when printing bash completion
|
||||
}
|
||||
}
|
||||
#endif
|
||||
cout << ')';
|
||||
|
|
Loading…
Reference in New Issue