aboutsummaryrefslogtreecommitdiff
path: root/bash/bash_completion.d/man.bash
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2018-12-01 02:48:02 +1300
committerTom Ryder <tom@sanctum.geek.nz>2018-12-01 02:48:02 +1300
commit32ca9ad0fa8d7691022a44989c1832672fb51548 (patch)
tree9ef3779f21a9f2c500d62ca3a31ec37aec930af8 /bash/bash_completion.d/man.bash
parentMerge branch 'release/v2.5.0' (diff)
parentBump VERSION (diff)
downloaddotfiles-32ca9ad0fa8d7691022a44989c1832672fb51548.tar.gz
dotfiles-32ca9ad0fa8d7691022a44989c1832672fb51548.zip
Merge branch 'release/v2.6.0'v2.6.0
* release/v2.6.0: (26 commits) Bump VERSION Overhaul and expand abook address Bash completion Restore correct completion function for mutt(1) Use simpler keyword complete for `path` subcommand Break up a couple of long lines Remove unneeded local array declaration Remove unneeded empty result short circuit Remove redundant error code in short circuits Adjust loop short circuits and pattern matches Remove unneeded quoting in case statement Remove needless line breaks from git completion Use inverting exclam mark outside conditional Remove stray comment no longer applicable Use array+=() syntax in two Bash completion files Remove null-result guard from completion gens Use simpler method of no case completion check Overhaul `keep` completion Simplify an array operation in `bd` completion Overhaul text filename generation Use full `if` condition for SSH hostname comp src ...
Diffstat (limited to 'bash/bash_completion.d/man.bash')
-rw-r--r--bash/bash_completion.d/man.bash43
1 files changed, 19 insertions, 24 deletions
diff --git a/bash/bash_completion.d/man.bash b/bash/bash_completion.d/man.bash
index 1efa7c52..ffef48ec 100644
--- a/bash/bash_completion.d/man.bash
+++ b/bash/bash_completion.d/man.bash
@@ -2,7 +2,7 @@
_man() {
# Don't even bother if we don't have manpath(1)
- hash manpath 2>/dev/null || return 1
+ hash manpath 2>/dev/null || return
# Snarf the word
local word
@@ -17,9 +17,13 @@ _man() {
# If this is the second word, and the previous word started with a number,
# we'll assume that's the section to search
local section subdir
- if ((COMP_CWORD > 1)) && [[ ${COMP_WORDS[COMP_CWORD-1]} == [0-9]* ]] ; then
- section=${COMP_WORDS[COMP_CWORD-1]}
- subdir=man${section%%[^0-9]*}
+ if ((COMP_CWORD > 1)) ; then
+ case ${COMP_WORDS[COMP_CWORD-1]} in
+ [0-9]*)
+ section=${COMP_WORDS[COMP_CWORD-1]}
+ subdir=man${section%%[^0-9]*}
+ ;;
+ esac
fi
# Read completion results from a subshell and add them to the COMPREPLY
@@ -35,17 +39,12 @@ _man() {
shopt -u dotglob
shopt -s extglob nullglob
- # Make globbing case-insensitive if appropriate; is there a cleaner way
- # to find this value?
- while read -r _ option value ; do
- case $option in
- (completion-ignore-case)
- case $value in
- (on)
- shopt -s nocaseglob
- break
- ;;
- esac
+ # Make globbing case-insensitive if appropriate
+ while read -r _ setting ; do
+ case $setting in
+ ('completion-ignore-case on')
+ shopt -s nocaseglob
+ break
;;
esac
done < <(bind -v)
@@ -59,7 +58,9 @@ _man() {
for manpath in "${manpaths[@]}" ; do
[[ -n $manpath ]] || continue
if [[ -n $section ]] ; then
- for page in "$manpath"/"$subdir"/"$word"*."$section"?(.[glx]z|.bz2|.lzma|.Z) ; do
+ for page in \
+ "$manpath"/"$subdir"/"$word"*."$section"?(.[glx]z|.bz2|.lzma|.Z)
+ do
pages[${#pages[@]}]=$page
done
else
@@ -74,14 +75,8 @@ _man() {
pages=("${pages[@]%.@([glx]z|bz2|lzma|Z)}")
pages=("${pages[@]%.[0-9]*}")
- # Print quoted entries, null-delimited, if there was at least one;
- # otherwise, just print a null character to stop this hanging in Bash
- # 4.4
- if ((${#pages[@]})) ; then
- printf '%q\0' "${pages[@]}"
- else
- printf '\0'
- fi
+ # Print quoted entries, null-delimited
+ printf '%q\0' "${pages[@]}"
)
}
complete -F _man -o bashdefault -o default man