From 2c7cca2fef2d53afe6dcc5142057d4f6ba942f31 Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Fri, 5 Jan 2024 16:27:21 +0900 Subject: [PATCH] progcomp: conditionally suffix space for git completion --- docs/ChangeLog.md | 1 + lib/core-complete.sh | 3 ++- note.txt | 13 +++++++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index 09f9535d..d2720925 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -74,6 +74,7 @@ - nsearch: set `immediate-accept` for `empty=emulate-readline` (reported by blackteahamburger) `#D2104` 870ecef7 - decode(bind): support the colonless form of `bind -x` of bash-5.3 `#D2106` 78d7d2e3 - decode, vi_digraph: trim CR of text resources in MSYS `#D2105` 6f4badf4 +- progcomp: conditionally suffix space for git completion (reported by bkerin) `#D2110` xxxxxxxx ## Contrib diff --git a/lib/core-complete.sh b/lib/core-complete.sh index e51d2e28..9e8b39d1 100644 --- a/lib/core-complete.sh +++ b/lib/core-complete.sh @@ -3844,7 +3844,8 @@ function ble/complete/progcomp/.compgen { local use_workaround_for_git= if [[ $comp_func == __git* && $comp_opts == *:nospace:* ]]; then use_workaround_for_git=1 - comp_opts=${comp_opts//:nospace:/:} + ble/string#match "$compgen" $'(^|\n|[^[:space:]])(\n|$)' || + comp_opts=${comp_opts//:nospace:/:} fi local cands flag_mandb= diff --git a/note.txt b/note.txt index 78693f36..048ed855 100644 --- a/note.txt +++ b/note.txt @@ -7055,6 +7055,19 @@ bash_tips 2024-01-05 + * progcomp: git の補完するオプションで --option= の後に空白が挿入される (reported by bkerin) [#D2110] + https://github.com/akinomyoga/ble.sh/issues/387 + + 調べてみるとそもそも git の補完に関してはどの程度 quote したら良いかも不明 + という事なので、末尾の空白を消してその後に空白を付加するという実装になって + いる。特に git の補完が付加した compopt -o nospace を除去している。これを生 + 成された候補に応じて nospace を保持する様にするべきなのでは? + + 一つでも末尾空白がない物があれば nospace を保持するのか、或いは全ての生成候 + 補について末尾空白がない場合に nospace を保持するのか、どちらが良いか? 曖昧 + である場合には付加しないという観点から言えば一つでも末尾空白がない物があれ + ば nospace を保持するべきである。 + * mandb: git の説明の抽出が変 (reported by bkerin) [#D2109] https://github.com/akinomyoga/ble.sh/issues/386