Skip to content

Commit

Permalink
complete: generate options by empty-word copmletion after filenames
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed Jul 12, 2022
1 parent f66e0c1 commit 6954b13
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 5 deletions.
1 change: 1 addition & 0 deletions docs/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@
- edit (`ble-detach`): prepend a space to `stty sane` for `HISTIGNORE=' *'` `#D1796` 26b532e
- decode (`bind`): do not treat non-beginning `#` as comments `#D1820` 65c4138
- history: disable the history file when `HISTFILE` is empty `#D1836` 9549e83
- complete: generate options by empty-word copmletion after filenames (reported by geekscrapy) `#D1846` XXXXXXX

## Fixes

Expand Down
27 changes: 22 additions & 5 deletions lib/core-complete.sh
Original file line number Diff line number Diff line change
Expand Up @@ -4862,9 +4862,15 @@ function ble/complete/source:option/.is-option-context {
}

function ble/complete/source:option {
# 空文字列もしくは /^[-+].*/ の時にだけ候補生成 (曖昧補完で最初の /^[-+]/ は補わない)
local rex='^-[-+'$_ble_complete_option_chars']*$|^\+[_'$_ble_complete_option_chars']*$'
[[ ! $COMPV || $COMPV =~ $rex ]] || return 0
local opts=$1
if [[ :$opts: == *:empty:* ]]; then
# 空文字列に対する補完を明示的に実行
[[ ! $COMPV ]] || return 0
else
# /^[-+].*/ の時にだけ候補生成 (曖昧補完で最初の /^[-+]/ は補わない)
local rex='^-[-+'$_ble_complete_option_chars']*$|^\+[_'$_ble_complete_option_chars']*$'
[[ $COMPV =~ $rex ]] || return 0
fi

local COMPS=$COMPS COMPV=$COMPV
ble/complete/source/reduce-compv-for-ambiguous-match
Expand Down Expand Up @@ -5001,14 +5007,18 @@ function ble/complete/source:argument {

local old_cand_count=$cand_count

# try complete&compgen
#----------------------------------------------------------------------------
# 1. Attempt user-defined completion
ble/complete/source:argument/.generate-user-defined-completion; local ext=$?
((ext==148||cand_count>old_cand_count)) && return "$ext"
[[ $comp_opts == *:ble/no-default:* ]] && return "$ext"

#----------------------------------------------------------------------------
# 2. Attempt built-in argument completion

# "-option" の時は complete options based on mandb
ble/complete/source:option; local ext=$?
((ext==148||cand_count>old_cand_count&&${#COMPV})) && return "$ext"
((ext==148)) && return "$ext"

# 候補が見付からない場合 (または曖昧補完で COMPV に / が含まれる場合)
if [[ $comp_opts == *:dirnames:* ]]; then
Expand All @@ -5017,8 +5027,15 @@ function ble/complete/source:argument {
# filenames, default, bashdefault
ble/complete/source:file
fi; local ext=$?
((ext==148)) && return "$ext"

# 空文字列に対するオプション生成はファイル名よりも後で試みる
ble/complete/source:option empty; local ext=$?
((ext==148||cand_count>old_cand_count)) && return "$ext"

#----------------------------------------------------------------------------
# 3. Attempt rhs completion

if local rex='^/?[-_a-zA-Z0-9.]+[:=]|^-[^-/=:]'; [[ $COMPV =~ $rex ]]; then
# var=filename --option=filename /I:filename など。
local prefix=$BASH_REMATCH value=${COMPV:${#BASH_REMATCH}}
Expand Down
14 changes: 14 additions & 0 deletions note.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6463,6 +6463,20 @@ bash_tips

2022-07-12

* ble.sh built-in completion で既定でオプションを補完するが他の候補よりも前に来るので邪魔 (reported by geekscrapy) [#D1846]
https://github.com/rsteube/carapace-bin/issues/1219
https://github.com/akinomyoga/ble.sh/issues/204

% と思ったが、よく考えるとそもそも空文字列でオプションも含める様にしたのは
% ちゃんと絞り込みで候補を絞った時にオプションも表示する様にする為だった。
% 空文字列での補完に対してオプションを生成しなかった時に何が起こるのか改め
% て確認する必要がある。

改めて確認したが別にオプション名はソートによってファイル名よりも先に来てい
るのではなく、単に生成する順序に従って先に来ているだけだった。"-" で始まる
補完の時にはオプションを先に表示して、空文字列に対する補完の時にはファイル
名よりも後にオプションを生成する様に変更した。

* kitty の keyboard protocol を terminal multiplexer 越しに有効化する (motivated by ferdinandyb) [#D1845]
https://github.com/akinomyoga/ble.sh/issues/209#issuecomment-1179994203

Expand Down

0 comments on commit 6954b13

Please sign in to comment.