From 1052200f0c8e848399226b2b0cc918069347b46a Mon Sep 17 00:00:00 2001 From: Hongyi Zhao Date: Fri, 13 Mar 2020 15:00:23 +0800 Subject: [PATCH] Touchup codes for fixing pip completion when running it within/outside of pyenv/virtualenv/venv/conda environment: modified: completion/available/pip.completion.bash modified: completion/available/pip3.completion.bash --- completion/available/pip.completion.bash | 14 +++++++++----- completion/available/pip3.completion.bash | 14 +++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/completion/available/pip.completion.bash b/completion/available/pip.completion.bash index 010307d7..8a11c555 100644 --- a/completion/available/pip.completion.bash +++ b/completion/available/pip.completion.bash @@ -7,6 +7,7 @@ # you should first install pip for the corresponding environment. # Fix pip completion for running it within/outside of pyenv/virtualenv/venv/conda environment. +_regex="(^|[ ]|;)_pip_completion_hook(;|[ ]|$)" _pip_completion_hook() { local _pip @@ -21,13 +22,16 @@ _pip_completion_hook() { fi if [ -n "$_pip" ]; then eval "$($_pip completion --bash)" - fi + fi + unset _pip } -if ! [[ "$PROMPT_COMMAND" =~ _pip_completion_hook ]]; then - PROMPT_COMMAND="_pip_completion_hook;$PROMPT_COMMAND"; + +if [ -z "$PROMPT_COMMAND" ]; then + PROMPT_COMMAND=_pip_completion_hook +elif ! [[ "$PROMPT_COMMAND" =~ $_regex ]]; then + PROMPT_COMMAND="_pip_completion_hook;$PROMPT_COMMAND" fi - - +unset _regex diff --git a/completion/available/pip3.completion.bash b/completion/available/pip3.completion.bash index 26ce4b1d..6bf177f7 100644 --- a/completion/available/pip3.completion.bash +++ b/completion/available/pip3.completion.bash @@ -7,6 +7,7 @@ # you should first install pip for the corresponding environment. # Fix pip completion for running it within/outside of pyenv/virtualenv/venv/conda environment. +_regex="(^|[ ]|;)_pip_completion_hook(;|[ ]|$)" _pip_completion_hook() { local _pip @@ -21,13 +22,16 @@ _pip_completion_hook() { fi if [ -n "$_pip" ]; then eval "$($_pip completion --bash)" - fi + fi + unset _pip } -if ! [[ "$PROMPT_COMMAND" =~ _pip_completion_hook ]]; then - PROMPT_COMMAND="_pip_completion_hook;$PROMPT_COMMAND"; + +if [ -z "$PROMPT_COMMAND" ]; then + PROMPT_COMMAND=_pip_completion_hook +elif ! [[ "$PROMPT_COMMAND" =~ $_regex ]]; then + PROMPT_COMMAND="_pip_completion_hook;$PROMPT_COMMAND" fi - - +unset _regex