From b72d78a97e6867bbf43de6a645dd6e387525443f Mon Sep 17 00:00:00 2001 From: Koichi Murase Date: Wed, 22 May 2024 20:51:28 +0900 Subject: [PATCH] auto-complete: insert word only when the cursor is at the end of line --- docs/ChangeLog.md | 1 + lib/core-complete.sh | 25 ++++++++++++++----------- note.txt | 36 ++++++++++++++++++++---------------- 3 files changed, 35 insertions(+), 27 deletions(-) diff --git a/docs/ChangeLog.md b/docs/ChangeLog.md index 3f946d91..dcedbd83 100644 --- a/docs/ChangeLog.md +++ b/docs/ChangeLog.md @@ -20,6 +20,7 @@ - mandb: look for git subcommands (motivated by bkerin) `#D2112` 9641c3b8 - edit (`display-shell-version`): show the `atuin` version `#D2124` 9045fb87 - complete: add widgets `auto_complete/insert-?word` (requested by Tommimon) `#D2127` 0c4b6772 + - auto-complete: insert word only when the cursor is at the end of line `#D2212` xxxxxxxx - edit: add widgets `execute-named-command` and `history-goto` `#D2144` aa92b42a - keymap/vi_nmap: support `shell-expand-line` `#D2145` aa92b42a - decode: fix quoting of `WIDGET` and `LASTWIDGET` (reported by 3ximus) `#D2205` xxxxxxxx diff --git a/lib/core-complete.sh b/lib/core-complete.sh index 94502645..843bc4e9 100644 --- a/lib/core-complete.sh +++ b/lib/core-complete.sh @@ -8992,13 +8992,16 @@ function ble/widget/auto_complete/self-insert { fi } -function ble/widget/auto_complete/insert-on-end { - if ((_ble_edit_mark==${#_ble_edit_str})); then - ble/widget/auto_complete/insert - else +function ble/widget/auto_complete/@end { + if ((_ble_edit_mark!=${#_ble_edit_str})); then ble/widget/auto_complete/cancel-default + else + ble/widget/auto_complete/"$@" fi } +function ble/widget/auto_complete/insert-on-end { + ble/widget/auto_complete/@end insert +} function ble/widget/auto_complete/.insert-prefix { local ins @@ -9105,13 +9108,13 @@ function ble-decode/keymap:auto_complete/define { ble-bind -f 'C-M-g' auto_complete/cancel ble-bind -f S-RET auto_complete/insert ble-bind -f S-C-m auto_complete/insert - ble-bind -f C-f auto_complete/insert-on-end - ble-bind -f right auto_complete/insert-on-end - ble-bind -f C-e auto_complete/insert-on-end - ble-bind -f end auto_complete/insert-on-end - ble-bind -f M-f auto_complete/insert-cword - ble-bind -f C-right auto_complete/insert-cword - ble-bind -f M-right auto_complete/insert-word + ble-bind -f C-f 'auto_complete/@end insert' + ble-bind -f right 'auto_complete/@end insert' + ble-bind -f C-e 'auto_complete/@end insert' + ble-bind -f end 'auto_complete/@end insert' + ble-bind -f M-f 'auto_complete/@end insert-cword' + ble-bind -f C-right 'auto_complete/@end insert-cword' + ble-bind -f M-right 'auto_complete/@end insert-word' ble-bind -f C-j auto_complete/accept-line ble-bind -f C-RET auto_complete/accept-line ble-bind -f auto_complete_enter auto_complete/notify-enter diff --git a/note.txt b/note.txt index f814f27b..1188eead 100644 --- a/note.txt +++ b/note.txt @@ -1934,22 +1934,6 @@ bash_tips 2024-03-19 - * auto-complete 中の C-right は自分の操作体系と干渉する。一番右にいる時にだけ - 有効にするべきの気がする。現在の振る舞いは [1] で導入した物である。 - - [1] https://github.com/akinomyoga/ble.sh/issues/397 - - そもそも C-e だとか C-f に関しても行末以外での振る舞いが非直感的である。うー - ん。というか元の設計の方針を思い出すと、C-e 及び C-f などの移動コマンドは - auto_complete が急に popup したとしても振る舞いを変更しないという事だった。 - 現在もそうなっている。然し、今新しく C-right 等で単語挿入を行う様にした為、 - C-e 及び C-f でも auto_complete の挿入ができるような錯覚を受けて変な操作を - して失敗している様な気がする。 - - 今改めて C-right などの移動コマンドで挿入をしない様に変更し、別の方法で単語 - 挿入を行う仕組みにできないだろうか。或いは、行の途中にいる時は C-right 等は - 通常の動作をする様に変更する。うーん。これが自然の気がする。 - * isearch してから up をした時に選択解除してから上に行くという振る舞いに変わっ ている。これも何だか不自然な気がする。元々 set-mark でなかったのであれば up で普通に前の項目に移動するべきである。 @@ -7388,6 +7372,26 @@ bash_tips 2024-05-22 + * 2024-03-19 auto-complete 中の C-right は自分の操作体系と干渉する [#D2212] + Refs: #D2127 (0c4b6772) + https://github.com/akinomyoga/ble.sh/issues/397 + + 一番右にいる時にだけ有効にするべきの気がする。現在の振る舞いは [1] #D2127 + で導入した物である。 + + [1] https://github.com/akinomyoga/ble.sh/issues/397 + + そもそも C-e だとか C-f に関しても行末以外での振る舞いが非直感的である。うー + ん。というか元の設計の方針を思い出すと、C-e 及び C-f などの移動コマンドは + auto_complete が急に popup したとしても振る舞いを変更しないという事だった。 + 現在もそうなっている。然し、今新しく C-right 等で単語挿入を行う様にした為、 + C-e 及び C-f でも auto_complete の挿入ができるような錯覚を受けて変な操作を + して失敗している様な気がする。 + + 今改めて C-right などの移動コマンドで挿入をしない様に変更し、別の方法で単語 + 挿入を行う仕組みにできないだろうか。或いは、行の途中にいる時は C-right 等は + 通常の動作をする様に変更する。うーん。これが自然の気がする。 + * decode(ble-bind): combined options 対応 [#D2211] #D2210 の対応中に気になったが #D2210 の中に含めるには大きいので分ける事にし