端末エミュレータマニアから見たMinEdの実装のヤバさ

とにかく最先端を行ってます。 MinEd: http://towo.net/mined/ 自分の発言を自分でまとめました。 途中tmuxにバグがあるかのような発言がありますが仕様です。バグではありません。
16
saitoha @kefir_

DEC Locator mode(vimでしか見たことがなかった)やTitle stackの操作もやってる。

2012-09-27 19:39:58
saitoha @kefir_

前から気になっていた各端末のタイトルレポートのエンコーディング絡みの挙動の差異も鬼のような判定ルーチンで処理していますね。つまり端末界のsucksをアプリ側で全部引き受けようとする気概がコードから感じられます。

2012-09-27 19:41:17
saitoha @kefir_

Poderosa UTF-8モード専用の判定ルーチンや古いmltermのバグにアドホック対応したものもありますね。端末判定はDA2応答をベースにいろんなものを加味してやっていて、基本的にterminfoの枠組みを信用していない。

2012-09-27 19:50:56
saitoha @kefir_

ピンイン変換とか普通に実装しちゃってるのでSKKパッチとかも出せば入るかもしれない

2012-09-27 19:57:35
saitoha @kefir_

@tadsan ソースから普通に入りました。

2012-09-27 20:01:47
arakiken @arakiken

@kefir_ MinEdのthomaswolffさんは偉大なターミナリアンですね。ちょっと前にthomaswolffさんから要望があって対応したのがmodifyOtherKeysだったのですが、目のつけどころが素敵だと思いました。

2012-09-27 21:34:08
saitoha @kefir_

@arakiken そうでしたか。端末とUnicode、両方において偉大な見識を持った方みたいですね。いまこれの13ページ目をみてるんですが、目からうろこです。 https://t.co/vSBoU0aa

2012-09-27 21:42:07
saitoha @kefir_

@kefir_ @arakiken ちなみに現在の判定の実装はこれよりも相当複雑になってました。

2012-09-27 21:43:26
トビーネット @toby_net

最先端のテキストエディタ情報です http://t.co/fRGVLVMr

2012-09-28 14:20:04
saitoha @kefir_

@toby_net それはたぶん現在のtmuxにあるシフトイン操作(0x0fでGL領域に導入されているキャラクタセットが解除される)のバグだと思います。

2012-09-28 15:44:20
saitoha @kefir_

minedからは出した文字の幅情報はとれてもどんな表示になっているかまでは見えないので、これはtmux側が修正すべき問題… https://t.co/ydvxKsAD

2012-09-28 15:54:45
haru @uobikiemukot

minedのUnicode対応度がヤバイらしい

2012-09-28 15:59:01
saitoha @kefir_

GNU Screen+mined動かない…

2012-09-28 16:03:51
saitoha @kefir_

ScreenはDSR対応してないのに、DA2のバージョン番号4 0 1 0 0とか返すので、rxvtあたりと混同されてバグるんかな…

2012-09-28 16:05:54
saitoha @kefir_

mined、Any Event Trackingもせっかく対応してるけど、これも一部の端末(xterm/PuTTY/mintty/gnome-terminal)の特定のバージョン以外では無効化されている…

2012-09-28 16:21:56
saitoha @kefir_

あれ、ソース見る限りscreen、DSR6に応答してるなー

2012-09-28 22:48:00
saitoha @kefir_

結局のところGNU ScreenのDSR 6L(CPR)の動きは正常だけど、普通の端末よりちょっと反応が送れるっぽい。minedのタイムアウトが0秒なのがいけなかったので、minedの方をこう直す。 https://t.co/yNWUZj7c

2012-09-28 23:48:10
saitoha @kefir_

うわ、起動はしたんだけど、こんどは8bit端末か何かと誤認してひどいことになった http://t.co/aAhn7dIU

2012-09-28 23:58:23
拡大
saitoha @kefir_

mined、tmux/screenのとき端末エンコーディングの判定をミスってるのか

2012-09-29 00:44:54
トデス子'\ @todesking

ターミナリアンという分野があるのか……!

2012-09-29 01:04:44
saitoha @kefir_

わかった。mined、DA2応答見て、screen判定するところまではやってる。で、そのあとコメントで、screen貫通させるパススルーシーケンスでDA2応答をもう一回見る、って書いてあるんだけど(つまり、screenの外の端末に尋ねる)、実際は何もしてない。実装が追いついてない

2012-09-29 01:14:56
saitoha @kefir_

tmuxのとき、TERM=screenなのでscreenのみに通用するハックをやらかしてしまう。DA2応答を見て分岐してると思ったらその後TERMを見てるので分岐しなかった。そこで、こうすることで、tmuxでMinEdが動くと思います。 https://t.co/g5TQRUOf

2012-09-29 09:51:56
にゃんだーすわん @tadsan

MinEd でも僕たちは East Asian Ambiguous Width の呪縛から解き放たれなかった… http://t.co/kmoNn8Ko

2012-09-29 10:40:58
拡大
saitoha @kefir_

minedがサポートしてるTUTコードやってるけど練習で使えるレベルまでもっていける気配がない

2012-09-29 12:54:50
saitoha @kefir_

MinEdでもずれる場合。AppleのTerminal.appは内部的に行志向になっていて、インド系諸語とアラビア系文字ではDSR 6-CPRをつかっても正確なグリッド位置を返しません。しかがって判定が使い物にならず、こうなる。 http://t.co/XqQBlc1H

2012-09-29 13:07:23
拡大