松尾です。

> > (1) コーディングシステムの扱い
> 
> これについて問題点は理解しているのですが、Emacsのコーディングシステム周
> りの理解が浅くてどうしたらよいのかわかりません。おまけにubuntuをLucidに
> アップグレードしてから、aptでemacs21は入らず野良ビルドも成功せずに
> Emacs21でのテスト環境がないという、、、

(set-terminal-coding-system 'utf-8)をコメントアウトした上で
Debian lennyのEmacs21で
emacs -q --no-site-file --load twittering-mode.el
として試してみました。

結論から書くとset-terminal-coding-systemで端末に合わせた
設定をしていれば正しく表示されるようです。

以下の組み合わせで確認しました。
・euc-jpの端末で(set-terminal-coding-system 'euc-jp)
・sjisの端末で(set-terminal-coding-system 'sjis)
・jisの端末で(set-terminal-coding-system 'iso-2022-jp)
・utf-8の端末で(set-terminal-coding-system 'utf-8)
LANG=ja_JP.UTF-8とLANG=CのどちらでもOKでした。

但しLANG=Cのときは
Coding system for terminal output:
  nil
となるのでset-terminal-coding-systemをするまでは全角文字は
表示できません。

端末の文字コードの設定は各ユーザが選んで、必要であれば
set-terminal-coding-systemを呼んでいるはずなので
twittering-mode.elからは省いて問題ないと思います。


ただ、utf-8に関してひとつよく分からない挙動もありました。
今回試したEmacs21ではLANG=ja_JP.UTF-8としておくと
 (set-terminal-coding-system 'utf-8)をする前の時点で

  Coding system for terminal output:
  u -- mule-utf-8 (alias: utf-8)

となっています。一見utf-8を使ってるように見えるんですが
UTF-8の端末上では全角文字が全て「◇」で置き換えられてる
みたいに見えます。
(twittering-modeに限らない症状です)

改めて(set-terminal-coding-system 'utf-8)すると正しく表示
されるので、何か違う状態になっているみたいです。

Priority order for recognizing coding systems when reading files:
  1. utf-16-le
  2. utf-16-be
  3. utf-8
優先順位が上のようになってるので、ひょっとするとutf-16に
なってたりするのかも。

端末に合わせてset-terminal-coding-systemを呼んでおけば良い
話なので大きな問題にはならないと思います。

---
松尾 直志 <t...@mymail.twin.jp>

------------------------------------------------------------------------------
ThinkGeek and WIRED's GeekDad team up for the Ultimate 
GeekDad Father's Day Giveaway. ONE MASSIVE PRIZE to the 
lucky parental unit.  See the prize list and enter to win: 
http://p.sf.net/sfu/thinkgeek-promo
_______________________________________________
twmode-users mailing list
twmode-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/twmode-users

メールによる返信