Skip to content

Commit

Permalink
auto-complete: insert word only when the cursor is at the end of line
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed May 22, 2024
1 parent 1b16d39 commit b72d78a
Show file tree
Hide file tree
Showing 3 changed files with 35 additions and 27 deletions.
1 change: 1 addition & 0 deletions docs/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
25 changes: 14 additions & 11 deletions lib/core-complete.sh
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
36 changes: 20 additions & 16 deletions note.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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
で普通に前の項目に移動するべきである。
Expand Down Expand 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 の中に含めるには大きいので分ける事にし
Expand Down

0 comments on commit b72d78a

Please sign in to comment.