Agda は π やら ∀ やらの記号を容赦なく使うので、iTerm2 では agda-mode 時に emacs の表示がおかしくなることがありました。
iTerm2 の問題かと思って Terminal に戻ってきたは良いものの、今度は ∀ とかが一文字幅になってしまって表示がおかしい。
Terminal の
Preferences -> Advanced -> Unicode East Asian Ambiguous character are wideのチェックを入れると解決はするんだけれど、iTerm2と同じ状況になる。
どうやら Unicode East Asian Ambiguous とやらが問題らしい。
調べてみると、∀ とかが全角なのは国によるっぽい。
特に日本は全角だけれど、アメリカだと半角らしい。
国によるので幅が曖昧な文字がUnicodeにあるとか。
それが Unicode East Asian Ambiguous みたい。
なので、Inconsolata とかの英字フォントにすると問題の記号が全部半角になって表示が正しくなる。
が、そうすると日本語がヤバそう。
私が使っているフォントは Ricty なので、日本語や記号は Migu に依存してる。
Migu は日本語フォントなので、とりあえず全てを全角に統一することにしました。
環境
- Mac OSX Mountain Lion
- Terminal : Version 2.3 (309)
- iTerm2 : Build 1.0.0.20140112
- Vim 7.4.192
- Emacs 22.1.1 / 24.3
- Font : Ricty
対策
iTerm2 / Terminal
East Asian Ambiguous を wide にする。Terminal だと
Preferences -> Advanced -> Unicode East Asian Ambiguous character are wideをチェック。
iTerm2 だと
Preferences -> Profiles -> Text -> Double-width Characters -> Treat ambiguous-width character as double widthにチェック。
Vim
set ambiwidth=doubleする。というか既にしてた。
Emacs
なんか22と23で違うらしい。emacs 22 では utf-translate-cjk-set-unicode-range を使う と良いっぽい。
23 以降では cjk が消えたらしく、別の方法があるっぽい。
んで、問題はこれら2つは完全に互換が無いこと。
22 の設定方法を 23 以降に適用すると cjk が消えちゃってる。
23 以降の設定を 22 に適用すると、 char-width-table が無いとか言われる。
加えて Mountain Lion とか Marvericks とかの emacs が 22 なのと、brew で入れられる emacs が 24 だったりでちょっとアレしたので両方に対応できる設定にしてみるなど。
設定はこんな感じ。単に emacs-major-version で場合分けしているだけだけれど。
下にコピペで使える状態な gist を置いておきます。
とりあえず 22.1.1 と 24.3 で表示の問題が無いことは確認できた。
elisp 書いたこと無いのでどこか変かもしれない。
とりあえずはこれで良いかなー、とか。
英語フォントにするなら width を single に統一すればたぶん問題無いはず。
ただ、iTerm2 に乗り換えた後に勘違いで Terminal に返ってきて、ちゃんと設定した結果どっちでも良いことが確認できたんだけれど、これどっち使おうかなー、ってなってたりもする。どーするかな。
んで設定コピペ用 gist は以下。
0 件のコメント:
コメントを投稿