Skip to content

Commit

Permalink
fix(_comp_delimited): prepend prefix to all compreply args
Browse files Browse the repository at this point in the history
Fixes #552.

Previously prefix was only prepended if COMPREPLY only contained one
argument - this commit fixes it so prefix is prepended to all arguments.
  • Loading branch information
Rogach committed Mar 30, 2023
1 parent df8cdda commit 9314a42
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 1 deletion.
3 changes: 2 additions & 1 deletion bash_completion
Original file line number Diff line number Diff line change
Expand Up @@ -833,7 +833,8 @@ _comp_delimited()
COMPREPLY=($(compgen "$@" -- "${cur##*"$delimiter"}"))
fi

((${#COMPREPLY[@]} == 1)) && COMPREPLY=(${COMPREPLY/#/$prefix})
COMPREPLY=("${COMPREPLY[@]/#/"$prefix"}")

[[ $delimiter != : ]] || __ltrim_colon_completions "$cur"
}

Expand Down
38 changes: 38 additions & 0 deletions test/t/unit/test_unit_delimited.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import pytest

from conftest import assert_bash_exec


@pytest.mark.bashcomp(cmd=None)
class TestUnitDelimited:
@pytest.fixture(scope="class")
def functions(self, request, bash):
assert_bash_exec(
bash,
"_comp_cmd_test_delim() {"
" local cur prev words cword comp_args;"
" _comp_get_words cur;"
" _comp_delimited , -W 'alpha beta bravo';"
"};"
"complete -F _comp_cmd_test_delim test_delim",
)

@pytest.mark.complete("test_delim --opt=a")
def test_1(self, functions, completion):
assert completion == ["lpha"]

@pytest.mark.complete("test_delim --opt=b")
def test_2(self, functions, completion):
assert completion == ["beta", "bravo"]

@pytest.mark.complete("test_delim --opt=alpha,b")
def test_3(self, functions, completion):
assert completion == ["alpha,beta", "alpha,bravo"]

@pytest.mark.complete("test_delim --opt=alpha,be")
def test_4(self, functions, completion):
assert completion == ["ta"]

@pytest.mark.complete("test_delim --opt=beta,a")
def test_5(self, functions, completion):
assert completion == ["lpha"]

0 comments on commit 9314a42

Please sign in to comment.