Skip to content

Commit

Permalink
decode: change Isolated ESC to U+07FC
Browse files Browse the repository at this point in the history
  • Loading branch information
akinomyoga committed Feb 5, 2024
1 parent 64cdcd0 commit 82bfa66
Show file tree
Hide file tree
Showing 4 changed files with 35 additions and 12 deletions.
1 change: 1 addition & 0 deletions docs/ChangeLog.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@
- global(leakvar): fix variable leak `#D2114` d3e1232d
- util: add `ble/util/{time,timeval,mktime}` `#D2133` xxxxxxxx
- make(scan): apply builtin checks to `contrib` `#D2135` xxxxxxxx
- decode: change Isolated ESC to U+07FC `#D2138` xxxxxxxx

<!---------------------------------------------------------------------------->
# ble-0.4.0-devel3
Expand Down
4 changes: 2 additions & 2 deletions lib/init-bind.sh
Original file line number Diff line number Diff line change
Expand Up @@ -182,8 +182,8 @@ function ble/init:bind/generate-binder {
# ENCODING: UTF-8
ble/init:bind/append-macro '\e' "$altdqs27"
elif ((esc1B==3)); then
# ENCODING: UTF-8 (_ble_decode_IsolatedESC U+07FF)
ble/init:bind/append-macro '\e' '\xDF\xBF' # C-[
# ENCODING: UTF-8 (_ble_decode_IsolatedESC U+07FC)
ble/init:bind/append-macro '\e' '\xDF\xBC' # C-[
fi
else
# Note: Bash-5.0 では \C-\\ で bind すると変な事になる #D1162 #D1078
Expand Down
21 changes: 21 additions & 0 deletions note.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7071,6 +7071,27 @@ bash_tips
Done (実装ログ)
-------------------------------------------------------------------------------

2024-02-05

* decode: Isolated ESC のコードの変更 [#D2138]

今気づいた事に isolated ESC に用いている U+07FF は使われている。2018-06-05
に出た Unicode 11.0 で割り当てられた様だ。一方で isolated ESC を使い始めた
のは 2017-11-12 だったので一応使い始めた時には未だ Unicode では使われていな
かったのである。これは変更する必要がある。

U+05F? や U+07B? に結構長い領域があるがこういう所には再び新しい文字が割り当
てられる可能性が高いので避けたい。特にこういう領域があると末端から順に割り
当てられる傾向がある様に思われるので U+038F 辺りは特に危ない。そう考えると
中途半端に残った U+07FB, U+07FC 辺りが狙い目の気がする。また、IsolatedESC
の表現に依存して hardcode されている部分もある様だからできるだけ U+07FF に
近い所、という意味でも U+07FB U+07FC 辺りは良い気がする。

意外と変更箇所は少なかった。変更する必要がありそうな所はコメントがちゃんと
書かれている様に思うので。コメントが書かれていないが具体的な表現に依存して
いる所がないとは言えないが、雰囲気なさそうな気がする。取り敢えずこれで様子
を見る事にする。

2024-02-04

* contrib: execmark が colorglass に対応していない [#D2136]
Expand Down
21 changes: 11 additions & 10 deletions src/decode.sh
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ _ble_decode_Macr=0x20000000
_ble_decode_Flag3=0x10000000 # unused
_ble_decode_FlagA=0x00200000 # unused

_ble_decode_IsolatedESC=$((0x07FF))
_ble_decode_EscapedNUL=$((0x07FE)) # charlog#encode で用いる
_ble_decode_IsolatedESC=$((0x07FC))
_ble_decode_EscapedNUL=$((0x07FB)) # charlog#encode で用いる
_ble_decode_FunctionKeyBase=0x110000

## @fn ble/decode/mod2flag mod
Expand Down Expand Up @@ -756,10 +756,11 @@ ble/debug/leakvar#check $"leakvar" H0-begin
# その場で標準入力を読み切る
local char=${_ble_decode_input_buffer[buflen-1]}
if ((_ble_bash<40000||char==0xC0||char==0xDF)); then
# Note: これらの文字は bind -s マクロの非終端文字。
# 現在マクロの処理中である可能性があるので標準入力から
# 読み取るとバイトの順序が変わる可能性がある。
# 従って読み取りは行わない。
# Note: これらの文字は bind -s マクロの非終端文字 (0xC0 for two-byte
# representations of C0 characters in the form \xC0\x??, 0xDF for
# Isolated ESC U+07FC represented as \xDF\xBC)。現在マクロの処理中であ
# る可能性があるので標準入力から読み取るとバイトの順序が変わる可能性が
# ある。従って読み取りは行わない。
builtin eval -- "$_ble_decode_show_progress_hook"
else
while ble/util/is-stdin-ready; do
Expand Down Expand Up @@ -4424,7 +4425,7 @@ function ble/encoding:UTF-8/generate-binder { :; }
# ## lib/init-bind.sh の中から呼び出される。
# function ble/encoding:UTF-8/generate-binder {
# ble/init:bind/bind-s '"\C-@":"\xC0\x80"'
# ble/init:bind/bind-s '"\e":"\xDF\xBF"' # isolated ESC (U+07FF)
# ble/init:bind/bind-s '"\e":"\xDF\xBC"' # isolated ESC (U+07FC)
# local i ret
# for i in {0..255}; do
# ble/decode/c2dqs "$i"
Expand Down Expand Up @@ -4481,7 +4482,7 @@ function ble/encoding:UTF-8/c2bc {
## lib/init-bind.sh の中から呼び出される。
function ble/encoding:C/generate-binder {
ble/init:bind/bind-s '"\C-@":"\x9B\x80"'
ble/init:bind/bind-s '"\e":"\x9B\x8B"' # isolated ESC (U+07FF)
ble/init:bind/bind-s '"\e":"\x9B\x8B"' # isolated ESC (U+07FC) に後で変換
local i ret
for i in {0..255}; do
ble/decode/c2dqs "$i"
Expand All @@ -4495,7 +4496,7 @@ function ble/encoding:C/generate-binder {
## 但し、bind の都合 (bashbug の回避) により以下の変換を行う。
##
## \x9B\x80 (155 128) → C-@
## \x9B\x8B (155 139) → isolated ESC \u07FF (2047)
## \x9B\x8B (155 139) → isolated ESC U+07FC (2044)
## \x9B\x9B (155 155) → ESC
##
## 実際にこの組み合わせの入力が来ると誤変換されるが、
Expand All @@ -4518,7 +4519,7 @@ function ble/encoding:C/decode {
case $b in
(155) A[i++]=27 # ESC
continue ;;
(139) A[i++]=2047 # isolated ESC
(139) A[i++]=2044 # isolated ESC U+07FC
continue ;;
(128) A[i++]=0 # C-@
continue ;;
Expand Down

0 comments on commit 82bfa66

Please sign in to comment.