On 11/18/18 10:21 AM, Cole Robinson wrote:
On 11/14/2018 03:12 AM, Lin Ma wrote:
The most of content of this file comes from the output of the command '
register-python-argcomplete $MY-SCRIPT', plus some changes.
For the details about argcomplete, Please refer to
https://pypi.org/project/argcomplete/ or
https://github.com/kislyuk/argcomplete
With this patchset, Users can use completion in bash.
ex:
$ virt-xml --<TAB><TAB>
$ virt-install --disk <TAB><TAB>
$ virt-install --panic model=isa,<TAB><TAB>
$ virt-install --controller model=virtio-scsi,ty<TAB><TAB>
Signed-off-by: Lin Ma <lma@xxxxxxxx>
---
bash-completion/virtmanager | 40 +++++++++++++++++++++++++++++++++++++
1 file changed, 40 insertions(+)
create mode 100644 bash-completion/virtmanager
Please move this to data/bash-completion, not a top level dir in the
git tree
ok, will do.
diff --git a/bash-completion/virtmanager b/bash-completion/virtmanager
new file mode 100644
index 00000000..c0ad0b84
--- /dev/null
+++ b/bash-completion/virtmanager
@@ -0,0 +1,40 @@
+#!/bin/bash
+
+# Run something, muting output or redirecting it to the debug stream
+# depending on the value of _ARC_DEBUG.
+__python_argcomplete_run() {
+ if [[ -z "$_ARC_DEBUG" ]]; then
+ "$@" 8>&1 9>&2 1>/dev/null 2>&1
+ else
+ "$@" 8>&1 9>&2 1>&9 2>&1
+ fi
+}
+
+_python_argcomplete() {
+ if [[ "$COMP_WORDBREAKS" != *,* ]]; then
+ COMP_WORDBREAKS="${COMP_WORDBREAKS},"
+ fi
+ local IFS=$'\013'
+ local SUPPRESS_SPACE=0
+ if compopt +o nospace 2> /dev/null; then
+ SUPPRESS_SPACE=1
+ fi
+ COMP_WORDS[4]=""
+ COMPREPLY=( $(IFS="$IFS" \
+ COMP_LINE="$COMP_LINE" \
+ COMP_POINT="$COMP_POINT" \
+ COMP_TYPE="$COMP_TYPE" \
+ _ARGCOMPLETE_COMP_WORDBREAKS="\"'><;|&(:" \
+ _ARGCOMPLETE=1 \
+ _ARGCOMPLETE_SUPPRESS_SPACE=$SUPPRESS_SPACE \
+ __python_argcomplete_run "$1") )
+ if [[ $? != 0 ]]; then
+ unset COMPREPLY
+ elif [[ $SUPPRESS_SPACE == 1 ]] && [[ "$COMPREPLY" =~ [=/:]$ ]];
then
+ compopt -o nospace
+ fi
+}
+complete -o nospace -o default -F _python_argcomplete virt-install &&
+complete -o nospace -o default -F _python_argcomplete virt-clone &&
+complete -o nospace -o default -F _python_argcomplete virt-xml &&
+complete -o nospace -o default -F _python_argcomplete virt-convert
Okay I haven't looked to deeply into this format here, kinda looks
like black magic :)
But does this launch each tool for each completion attempt? Might
explain why the completion is pretty slow in my testing. I don't want
to maintain 4 files but maybe we could use sed to splice in the tool
name at setup.py build time. Would also allow simplifying the setup.py
process a bit. I'd be happy to fix these bits after the initial series
though
OK, I'll do it in next version, let's see if it makes sense.
_______________________________________________
virt-tools-list mailing list
virt-tools-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/virt-tools-list