Skip to content

Commit

Permalink
complete: resolve collision of flag chars with "shopt -s nocaseglob"
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed Jan 5, 2020
1 parent c5211af commit bf96250
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 13 deletions.
15 changes: 6 additions & 9 deletions lib/core-complete.sh
Expand Up @@ -114,7 +114,7 @@ function ble/complete/check-cancel {
## D クォート "" の中にいる事を表します。
## I クォート $"" の中にいる事を表します。
## B クォート \ の直後にいる事を表します。
## b ブレース展開の中にいる事を表します。
## x ブレース展開の中にいる事を表します。
##
## Note: shopt -s nocaseglob のため、フラグ文字は
## 大文字・小文字でも重複しないように定義する必要がある。
Expand Down Expand Up @@ -247,7 +247,7 @@ function ble/complete/action:word/initialize {
}
function ble/complete/action:word/complete {
ble/complete/action/util/complete.close-quotation
if [[ $comps_flags == *b* ]]; then
if [[ $comps_flags == *x* ]]; then
ble/complete/action/util/complete.addtail ','
else
ble/complete/action/util/complete.addtail ' '
Expand Down Expand Up @@ -1573,17 +1573,14 @@ function ble/complete/util/construct-ambiguous-regex {
## 部分一致に使うグロブを生成します。
function ble/complete/util/construct-glob-pattern {
local text=$1
if [[ $comps_flags == *i* ]]; then
local opt_icase=; [[ :$comp_type: == *:i:* ]] && opt_icase=1
if [[ :$comp_type: == *:i:* ]]; then
local i n=${#text} c
local -a buff=()
for ((i=0;i<n;i++)); do
c=${text:i:1}
if [[ $c == [a-zA-Z] ]]; then
if [[ $opt_icase ]]; then
ble/string#toggle-case "$c"
c=[$c$ret]
fi
ble/string#toggle-case "$c"
c=[$c$ret]
else
ble/string#escape-for-bash-glob "$c"; c=$ret
fi
Expand Down Expand Up @@ -1667,7 +1664,7 @@ function ble/complete/candidates/.pick-nearest-sources {
if ((${simple_ibrace%:*})); then
ble/syntax:bash/simple-word/eval "${reconstructed::${simple_ibrace#*:}}"
comps_fixed=${simple_ibrace%:*}:$ret
comps_flags=${comps_flags}b
comps_flags=${comps_flags}x
fi
fi
[[ $COMPS =~ $rex_raw_paramx ]] && comps_flags=${comps_flags}p
Expand Down
9 changes: 5 additions & 4 deletions lib/core-syntax.sh
Expand Up @@ -1140,10 +1140,11 @@ function ble/syntax:bash/simple-word/evaluate-last-brace-expansion {
## word に対して不完全なブレース展開と引用符を閉じ、ブレース展開した結果を返します。
##
## @var[out] simple_flags
## 引用符 $"..." を閉じた時に simple_flags='$"' を設定します。
## 引用符 "..." を閉じた時に simple_flags='"' を設定します。
## 引用符 '...' を閉じた時に simple_flags=\' を設定します。
## 引用符 $'...' を閉じた時に simple_flags=\$\' を設定します。
## 引用符 $"..." を閉じた時に simple_flags=I を設定します。
## 引用符 "..." を閉じた時に simple_flags=D を設定します。
## 引用符 $'...' を閉じた時に simple_flags=E を設定します。
## 引用符 '...' を閉じた時に simple_flags=S を設定します。
## 不完全な末端 \ があった時に simple_flags=B を設定します。
##
## @var[out] simple_ibrace=ibrace:jbrace
## ブレース展開の構造を破壊せずに変更できる最初の位置を返します。
Expand Down

0 comments on commit bf96250

Please sign in to comment.