Bugfix: use proper built-in file completion with support for subfolders

This commit is contained in:
Jakob Schöttl 2019-01-12 19:58:43 +01:00 committed by Simon Michael
parent 65ec51c3d9
commit 43b3fb3cae

View File

@ -9,6 +9,14 @@ set -o pipefail
# contains regex special chars. But it might be no problem because of
# COMP_WORDBREAKS.
# TODO compgen and compopt is pretty complicated. Piping to
# grep "^$wordToComplete"
# seems like a hack - I'd rather use
# compgen ... -- "$wordToComplete"
# But what options to use? I don't want to use -W because it may exceed the
# maximum command line length. -C "cat file" is not working either. It would be
# best if compgen can read from stdin but it does not.
# Working with bash arrays is nasty compared to editing a text file. Consider
# for example grepping an array or mapping a substitution on it.
# Therefore, we create temp files in RAM for completion suggestions (see below).
@ -49,7 +57,9 @@ _hledger_completion_function() {
# This does not work because assignment to 'files' in the "pipe
# subshell" has no effect!
#compgen -df | grep "^$filenameSoFar" | readarray -t files
readarray -t files < <(compgen -df | grep "^$filenameSoFar")
compopt -o filenames -o dirnames
readarray -t files < <(compgen -f -- "$filenameSoFar")
COMPREPLY=( "${files[@]}" )
else