From f0b70b7c8e37299f11b74eef59a009c2aa9ee3a1 Mon Sep 17 00:00:00 2001
From: Harmen Stoppels <harmenstoppels@gmail.com>
Date: Thu, 6 Jan 2022 14:47:03 +0100
Subject: Fix spack install --v[tab] spec (#28278)

---
 share/spack/bash/spack-completion.in |  2 +-
 share/spack/qa/completion-test.sh    | 10 ++++++++++
 share/spack/spack-completion.bash    |  2 +-
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/share/spack/bash/spack-completion.in b/share/spack/bash/spack-completion.in
index 77cd16d076..8c01232f5e 100755
--- a/share/spack/bash/spack-completion.in
+++ b/share/spack/bash/spack-completion.in
@@ -123,7 +123,7 @@ _bash_completion_spack() {
     # If the cursor is in the middle of the line, like:
     #     `spack -d [] install`
     # COMP_WORDS will not contain the empty character, so we have to add it.
-    if [[ "${COMP_LINE:$COMP_POINT:1}" == " " ]]
+    if [[ "${COMP_LINE:$COMP_POINT-1:1}" == " " ]]
     then
         cur=""
     fi
diff --git a/share/spack/qa/completion-test.sh b/share/spack/qa/completion-test.sh
index 0777002f0a..d56a8ba6ef 100755
--- a/share/spack/qa/completion-test.sh
+++ b/share/spack/qa/completion-test.sh
@@ -70,6 +70,16 @@ _test_debug_functions() {
         emulate -L sh
     fi
 
+    # Test whether `spack install --verb[] spec` completes to `spack install --verbose spec`
+    COMP_LINE='spack install --verb spec'
+    COMP_POINT=20
+    COMP_WORDS=(spack install --verb spec)
+    COMP_CWORD=2
+    COMP_KEY=9
+    COMP_TYPE=64
+    _bash_completion_spack
+    contains "--verbose" echo "${COMPREPLY[@]}"
+
     # This is a particularly tricky case that involves the following situation:
     #     `spack -d [] install `
     # Here, [] represents the cursor, which is in the middle of the line.
diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash
index 753767a3de..08ea6751f3 100755
--- a/share/spack/spack-completion.bash
+++ b/share/spack/spack-completion.bash
@@ -123,7 +123,7 @@ _bash_completion_spack() {
     # If the cursor is in the middle of the line, like:
     #     `spack -d [] install`
     # COMP_WORDS will not contain the empty character, so we have to add it.
-    if [[ "${COMP_LINE:$COMP_POINT:1}" == " " ]]
+    if [[ "${COMP_LINE:$COMP_POINT-1:1}" == " " ]]
     then
         cur=""
     fi
-- 
cgit v1.2.3-70-g09d2