From 0b9571e4c1ff981a8e064189ffa5e674acb79b09 Mon Sep 17 00:00:00 2001 From: Arthur Williams Date: Sun, 5 Sep 2021 16:26:14 -0500 Subject: [PATCH] bash completion: Allow completions to work without external functions If bash_completion wasn't installed, _filedir wouldn't be defined which led to all filename-based completions to error out. Specifically autocompletion would fail when a filename was expected and when bash_completion wasn't installed. Now we fall back to compgen -f if _filedir fails. According to _filedir's comments, compgen doesn't handle files with spaces well, but it is still better to complete most files than none. --- data/bash-completion.in | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data/bash-completion.in b/data/bash-completion.in index b8fe365..cff8fa7 100644 --- a/data/bash-completion.in +++ b/data/bash-completion.in @@ -1,5 +1,6 @@ +#!/bin/bash _zathura() { - _init_completion || return + _init_completion 2>/dev/null || true local EXTS="" for PLUGIN in @PLUGINDIR@/lib*.so; do @@ -22,6 +23,6 @@ _zathura() { esac done - _filedir "${EXTS#|}" + _filedir "${EXTS#|}" 2>/dev/null || COMPREPLY=($(shopt -s extglob; compgen -f -X "!*.@($EXTS)")) } complete -F _zathura zathura