Die noch fehlenden Funktionen waren:
- Die Autovervollständigung von Verzeichnisnamen
- Die Autovervollständigung von csv-Dateien in anderen Verzeichnissen als dem aktuellen.
_csv2qif_possible_csvFiles()
{
local curWord csvs optfiles
curWord=${1}
optfiles=""
csvs=$( compgen -f -X "!*.csv" -- "${curWord}" )
for file in ${csvs}; do
if [ ! -f ${file/\.csv/.qif} ]; then
optfiles="${optfiles} ${file}"
fi
done
echo $optfiles
}
_csv2qif()
{
local cur opts
cur="${COMP_WORDS[COMP_CWORD]}"
opts=$(_csv2qif_possible_csvFiles ${cur})
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
return 0
}
complete -o plusdirs -F _csv2qif csv2qif.py
In Zeile 25 wird die Funktion Nr. 2 (Autovervollständigung von Verzeichnisnamen) realisiert. Durch den Parameter -o plusdirs wird die Liste der Autovervollständigung um die möglichen Verzeichnisse erweitert.
In Zeile 6 wird die Funktion Nr. 1 (andere Verzeichnisse als das aktuelle) realisiert. Die bash „hat da schon etwas vorbereitet“: compgen -f -X "!*.csv" -- "${curWord}" Stellt eine Liste für die Autovervollständigung zusammen. Und zwar werden hier für den Parameter ${curWord} alle passenden Dateien (-f) mit der Endung .csv (-X "!*.csv") Aufgelistet. Dabei wird schon bedacht, dass der Parameter auf ein anderes Verzeichnis zeigen könnte...
Finde ich super.
Dieses Mal habe ich meine Inspiration in der bash-Referenz gefunden, unter Programmable-Completion.
Keine Kommentare:
Kommentar veröffentlichen