summaryrefslogtreecommitdiffstats
path: root/completions/pylint
diff options
context:
space:
mode:
Diffstat (limited to 'completions/pylint')
-rw-r--r--completions/pylint116
1 files changed, 74 insertions, 42 deletions
diff --git a/completions/pylint b/completions/pylint
index 8726f8b..84976d9 100644
--- a/completions/pylint
+++ b/completions/pylint
@@ -1,87 +1,119 @@
# pylint(1) completion -*- shell-script -*-
-_pylint()
+_comp_cmd_pylint__message_ids()
{
- local cur prev words cword split
- _init_completion -s || return
+ local filter=p
+ [[ ${2-} ]] && filter="/^$2 messages/,/^$/p"
+ # 6: arbitrary, assumed no ids shorter than that
+ # TODO(scop): The fallback here is slow, maybe memoize whether
+ # --list-msgs-enabled worked (>= 2.4.0) and avoid unnecessary tries
+ # again later?
+ local msgs="$(
+ set -o pipefail
+ "$1" --list-msgs-enabled 2>/dev/null |
+ command sed -ne "$filter" |
+ command sed -ne 's/^[[:space:]]\{1,\}\([a-z-]\{6,\}\).*/\1/p' ||
+ "$1" --list-msgs 2>/dev/null |
+ command sed -ne 's/^:\([a-z-]\{6,\}\).*/\1/p'
+ )"
+ _comp_delimited , -W "$msgs"
+}
+
+_comp_cmd_pylint()
+{
+ local cur prev words cword was_split comp_args
+ _comp_initialize -s -- "$@" || return
local python=python
[[ ${1##*/} == *3* ]] && python=python3
+ local noargopts='!(-*|*[edisrjf]*)'
+ # shellcheck disable=SC2254
case $prev in
- --version | --help | --long-help | --help-msg | --init-hook | --ignore | --enable | \
- --evaluation | --max-line-length | --max-module-lines | \
- --indent-string | --min-similarity-lines | --max-args | \
- --ignored-argument-names | --max-locals | --max-returns | --max-branchs | \
- --max-statements | --max-parents | --max-attributes | --min-public-methods | \
- --max-public-methods | --required-attributes | --bad-functions | \
- --module-rgx | --const-rgx | --class-rgx | --function-rgx | --method-rgx | \
- --attr-rgx | --argument-rgx | --variable-rgx | --inlinevar-rgx | --good-names | \
- --bad-names | --no-docstring-rgx | --dummy-variables-rgx | \
- --additional-builtins | --notes | --ignored-classes | --generated-members | \
+ --version | --help | --long-help | --init-hook | \
+ --ignore | --evaluation | --max-line-length | \
+ --max-module-lines | --indent-string | --min-similarity-lines | \
+ --max-args | --ignored-argument-names | --max-locals | \
+ --max-returns | --max-branches | --max-statements | --max-parents | \
+ --max-attributes | --min-public-methods | --max-public-methods | \
+ --required-attributes | --bad-functions | --module-rgx | \
+ --const-rgx | --class-rgx | --function-rgx | --method-rgx | \
+ --attr-rgx | --argument-rgx | --variable-rgx | --inlinevar-rgx | \
+ --good-names | --bad-names | --no-docstring-rgx | \
+ --dummy-variables-rgx | --additional-builtins | --notes | \
+ --ignored-classes | --generated-members | \
--overgeneral-exceptions | --ignore-iface-methods | \
--defining-attr-methods | --valid-classmethod-first-arg | \
- --valid-metaclass-classmethod-first-arg | -!(-*)[he])
+ --valid-metaclass-classmethod-first-arg | -${noargopts}[h])
+ return
+ ;;
+ --fail-on | --help-msg)
+ _comp_cmd_pylint__message_ids "$1"
return
;;
- --disable | -!(-*)d)
- COMPREPLY=($(compgen -W 'all' -- "$cur"))
+ --enable | -${noargopts}e)
+ _comp_cmd_pylint__message_ids "$1" Disabled
+ return
+ ;;
+ --disable | -${noargopts}d)
+ _comp_cmd_pylint__message_ids "$1" Enabled
+ _comp_compgen -a -- -W 'all'
return
;;
--rcfile)
- _filedir
+ _comp_compgen_filedir
return
;;
- --persistent | --include-ids | --symbols | --files-output | --reports | \
- --comment | --ignore-comments | --ignore-docstrings | --ignore-imports | \
- --init-import | --ignore-mixin-members | --zope | --suggestion-mode | \
- -!(-*)[isr])
- COMPREPLY=($(compgen -W 'yes no' -- "$cur"))
+ --persistent | --include-ids | --symbols | --files-output | \
+ --reports | --comment | --ignore-comments | --ignore-docstrings | \
+ --ignore-imports | --init-import | --ignore-mixin-members | \
+ --zope | --suggestion-mode | -${noargopts}[isr])
+ _comp_compgen -- -W 'yes no'
return
;;
--load-plugins | --deprecated-modules)
- local prefix=
- [[ $cur == *,* ]] && prefix="${cur%,*},"
- cur="${cur##*,}"
- _xfunc python _python_modules $python
- ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prefix})
+ _comp_compgen -c "${cur##*,}" -x python modules $python
+ ((${#COMPREPLY[@]})) &&
+ _comp_delimited , -W '"${COMPREPLY[@]}"'
return
;;
- --jobs | -!(-*)j)
- COMPREPLY=($(compgen -W "{1..$(_ncpus)}" -- "$cur"))
+ --jobs | -${noargopts}j)
+ local REPLY
+ _comp_get_ncpus
+ _comp_compgen -- -W "{1..$REPLY}"
return
;;
--confidence)
local prefix=
[[ $cur == *,* ]] && prefix="${cur%,*},"
- COMPREPLY=($(compgen -W "HIGH INFERENCE INFERENCE_FAILURE
- UNDEFINED" -- "${cur##*,}"))
- ((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prefix})
+ _comp_compgen -c "${cur##*,}" -- -W "HIGH INFERENCE
+ INFERENCE_FAILURE UNDEFINED"
+ ((${#COMPREPLY[@]} == 1)) &&
+ _comp_compgen -Rv COMPREPLY -- -P "$prefix" -W '"$COMPREPLY"'
return
;;
- --format | -!(-*)f)
- COMPREPLY=($(compgen -W 'text parseable colorized json msvs' \
- -- "$cur"))
+ --format | -${noargopts}f)
+ _comp_compgen -- -W 'text parseable colorized json msvs'
return
;;
--import-graph | --ext-import-graph | --int-import-graph)
- _filedir dot
+ _comp_compgen_filedir dot
return
;;
esac
- $split && return
+ [[ $was_split ]] && return
if [[ $cur == -* ]]; then
- COMPREPLY=($(compgen -W \
- '$(_parse_help "$1" --long-help)' -- "$cur"))
+ _comp_compgen_help -- --long-help
[[ ${COMPREPLY-} == *= ]] && compopt -o nospace
return
fi
- [[ $cur == @(.|*/)* ]] || _xfunc python _python_modules $python
- _filedir py
+ _comp_compgen_set
+ _comp_looks_like_path "$cur" || _comp_compgen -x python modules $python
+ _comp_compgen -a filedir py
} &&
- complete -F _pylint pylint pylint-2 pylint-3
+ complete -F _comp_cmd_pylint pylint pylint-2 pylint-3
# ex: filetype=sh