Skip to content

Commit

Permalink
edit(redo): fix broken common prefix/suffix determination
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed Dec 12, 2023
1 parent 40a625d commit c920ea6
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 3 deletions.
1 change: 1 addition & 0 deletions docs/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
- complete: fix parsing the output of `complete -p` in bash-5.2 (reported by maheis) `#D2088` a7eb5d04
- make: specify bash to search the awk path using `type -p` (reported by rashil2000) `#D2089` 26826354
- keymap/vi: fix the behavior of text-object for quotes in xmap (reported by Darukutsu) `#D2094` 5f9a44ec
- edit(redo): fix broken common prefix/suffix determination (reported by Darukutsu) `#D2098` xxxxxxxx

## Compatibility

Expand Down
14 changes: 14 additions & 0 deletions note.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7092,6 +7092,20 @@ bash_tips

2023-12-13

* edit: undo が正しくできていない (reported by Darukutsu) [#D2098]
https://github.com/akinomyoga/ble.sh/issues/377#issuecomment-1852503847

記録の時点では問題はない。復元の時の読み取りも問題ない。然し、カーソル移動
を決定する為に文字列の変化していない部分を検出する上で、共通部分を除いた後
の文字列の内容がおかしい。と思ったら致命的な間違いをしている。何故今まで動
いている様に見えたのかが謎である。実際にこの処理の結果として使っているのは
共通接頭辞・共通接尾辞の長さだけなので大体問題なく動いていたという事だろう
か。

然し、そうだとしても echo 'fo'' になるのは謎である → 確認してみて分かった。
"echo 'fo" + "''" という結合の仕方をしている。やはりちゃんと今まで大体 undo
できていたのは不思議である。

* decode,syntax: quote `$#` in arguments properly [#D2097]

何故か裸の $# が残っていたのでちゃんと quote する。恐らく ${#...} の形式及
Expand Down
6 changes: 3 additions & 3 deletions src/edit.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7766,17 +7766,17 @@ function ble-edit/undo/.load {
local old=$_ble_edit_str new=$str ret
if [[ $bleopt_undo_point == end ]]; then
ble/string#common-suffix "${old:_ble_edit_ind}" "$new"; local s1=${#ret}
local old=${old::${#old}-s1} new=${new:${#new}-s1}
local old=${old::${#old}-s1} new=${new::${#new}-s1}
ble/string#common-prefix "${old::_ble_edit_ind}" "$new"; local p1=${#ret}
local old=${old:p1} new=${new:p1}
ble/string#common-suffix "$old" "$new"; local s2=${#ret}
local old=${old::${#old}-s2} new=${new:${#new}-s2}
local old=${old::${#old}-s2} new=${new::${#new}-s2}
ble/string#common-prefix "$old" "$new"; local p2=${#ret}
else
ble/string#common-prefix "${old::_ble_edit_ind}" "$new"; local p1=${#ret}
local old=${old:p1} new=${new:p1}
ble/string#common-suffix "${old:_ble_edit_ind-p1}" "$new"; local s1=${#ret}
local old=${old::${#old}-s1} new=${new:${#new}-s1}
local old=${old::${#old}-s1} new=${new::${#new}-s1}
ble/string#common-prefix "$old" "$new"; local p2=${#ret}
local old=${old:p2} new=${new:p2}
ble/string#common-suffix "$old" "$new"; local s2=${#ret}
Expand Down

0 comments on commit c920ea6

Please sign in to comment.