カテゴリー:emacs・mew

検索



Please click now!!

emacs-canna の ports。

ports CURRENT の editors/emacs が emacs-22.3 から emacs-23.1 になったようだけど、japanese/ の下の emacs は相変わらず emacs-22.3 ぽいので、以前このブログに掲載した emacs-canna の ports を作ってみました。

基本的には editors/emacs を japanese/ にコピーして Canna for GNU Emacs23 からパッチを取って来て make している感じです。なので、ベースは emacs-23.1 で、インストールされるものも editors/emacs とまるっきり一緒のはずです。

以下の URL に転がしておいたのでもしよろしければ使ってみてください。

http://www.icmpv6.org/Prog/FreeBSD_ports/ports-emacs-canna-20091221.tgz

この ports について、その筋の人に色々お聞きしてみたのですが、一番多い意見が send-pr すればぁ。ってヤツでしたが、正しくその通りだとは思います。が、まぁ、自分で使っている分にはどーでもよいかぁ。みたいな感じで(^^;;。

後、ports の editors/emacs に吸収してもらえばぁ。って意見も頂いて、これは確かに「なるほどー。」とか思いましたね。 options に WITH_CANNA=yes とか指定できれば、 Canna for GNU Emacs23 からパッチをダウンロードして来て適用する。ってので済むのでこれは確かにラクチンだし、emacs の ports があちこちにできなくて済むのでそれはそれで嬉しいのだけどねぇ・・。

とまぁ、そんなそんなことは思っても結局はどっかそのへんに転がしておいて終ってしまいそうな予感なんですけどね(^^;;。

Emacs-23.1 + Canna = emcws ではない;-)。

ちょっと前に Emacs-23.1。 と、言うタイトルで一個書いたんだけど、その時はフォントの設定がメインで「日本語入力どうすんべな。」って感じで終わっていた。

その後、emacs-23 で Canna が使えると言う japanese/uim-canna を ports から試してみたのだけど、uim-canna と言うか、 uim-el と言うかは emacs-23 が起動した時だけ利用できるので scim-bridge-qt4 と同居できるのが良かったのだけど・・。

uim-canna って、ただ単に「cannaserver と通信ができる。」ってだけで、canna.el のキーバインドを踏襲してくれないということに愕然として、emacs-23 はすっかり利用するのを諦めていた・・。

後、アンチエイリアスが有効になった emacs-23 を利用するとむちゃくちゃ遅い。と言うのも「使わない」と言う一因ではあったのだけどね。

そんな感じでちょっと放置していたんだけど、ヤボ用で compface.tar.gz をダウンロードできるサイトを探していた(compface は x-face を表示するために利用します)ときにバッタリと遭遇。

Canna for GNU Emacs23

僕は emacs-22.3 までは emcws パッチを利用していたのだけど emacs-23 からはいよいよ利用できなくなっていたので途方にくれていたのでありました。

しかしっ!! ありがとうございました。これで emacs-23.1 で Canna のカナ入力が引き続きできそうです。嬉しいことです。

早速パッチを適用して make して試してみましたが、emcws と動作が一緒です。Canna のカナ入力に重要な C-n キーもちゃんと使えます。嬉しいことです\(^^)/。

本当にありがとうございました。感動して、ツイツイこうやってプログに書いてしまいました;-)。

Emacs-23.1。

Emacs-23.1 が出ました。実は結構前にインストールしていて ~/.emacs を書いている最中だったのだけど、フォントの設定でつまづいていてホーリ投げていた部分もあるのですが、その問題が解消されたのでこうして書いてみることにしました;-)。

僕は MacOSX 使いでもあるのですが、普段は FreeBSD で KDE を使っています。KDE3,4 を利用しているとアンチエイリアスの効いていないアプリケーションと言うのは emacs-22.3 のみだったので、 emacs-23.1 が出ると利用している全てのアプリケーションがアンチエイリアス対応になる。それはそれは楽しみにしていたのでした。

が・・。インストールしていきなりフォントの設定でつまづいて・・。全角日本語文字と半角英数字が同じ比率で表示してくれない。等幅フォントを利用しても全角と半角ではズレが生じてしまうのでどうしようも無い状態なのでありました。

ただ、12 ポイントのフォントサイズにするとズレは無くなるんだけど 12 ポイントと言うのはむちゃくちゃでかく感じるので 10 ポイントで利用したいのだけど、 10 ポイントにするとズレが生じる・・。トホホ。

で、今回ようやっと設定ができたのでありました。こんな感じ。goolge とかで探すとフツーにある設定です。

(eval-and-compile
  (cond
   ((< emacs-major-version 23)  ; emacs-22
    (cond (window-system
            --- emacs-22 のフォント設定 (略) ---
    )
   ((= emacs-major-version 23)  ; emacs-23
    (cond (window-system
;; 標準フォント
;       (set-default-font "MS ゴシック-10")
;       (set-default-font "美杉ゴシックL-10")
        (set-default-font "さざなみゴシック-10")
(set-fontset-font (frame-parameter nil 'font) 'japanese-jisx0208 '("MS ゴシック" . "unicode-bmp") ) (set-fontset-font (frame-parameter nil 'font) 'katakana-jisx0201 '("MS ゴシック" . "unicode-bmp") )
(setq face-font-rescale-alist '((".*メイリオ.*" . 0.9) (".*MS ゴシック.*" . 1.1) (".*さざなみゴシック.*" . 1.0) (".*美杉ゴシックL.*" . 1.0) ("-cdac$" . 1.3))) )) ) ))

僕はアンチエイリアスなフォントを使いたいので MS ゴシックを全角のフォントとして、半角のフォントとしてさざなみゴシックを利用します。どっちも 10 ポイントで。10 ポイントで利用した場合、全角と半角フォントにズレが発生するので face-font-rescale-alist で横幅を調節します。

・全角フォントのMS ゴシックは横幅比率を 1.1 にする。
・半角フォントのさざなみゴシックは横幅比率を 1.0 にする。

こうすることによりフォントがきっちりと揃うのでありました。

が、この設定と言うのはずっと前から入れているのにどうしてちゃんと動かないのだ?おかしく思って ~/.emacs を一行づつチェックしましたよー。そしたら問題を発見しました・・。orz。

emacs-23.1 と言うのは以下の lisp は正しく評価してくれないんですね。

(eval-and-compile
  (cond
   ((< emacs-major-version 23)  ; emacs-22
       (if (eq window-system 'x)
       )
   )
   ((= emacs-major-version 23)  ; emacs-23
       (if (eq window-system 'x)
       )
   )
)

(if (eq window-system 'x) がダメみたいです。emacs-23.1 を利用する場合、window-system をチェックする時は以下のように書かないとダメみたいです。

(eval-and-compile
  (cond
    ((< emacs-major-version 23)  ; emacs-22
        (if (eq window-system 'x)
        )
    )
    ((= emacs-major-version 23)  ; emacs-23
        (cond (window-system
        ))
    )
)

(cond (window-system を利用するみたいです。

今回の僕のフォントの設定自体は正しかったみたいなのですが、その前に window-system をチェックする lisp が書かれていて、それが問題となってフォントの設定部分が正しく評価されなかったみたいです。"(" や ")" の数はちゃんと合っていたんですけどねぇ・・。


と、言うことでこれにてフォントの設定は完了です。が、この後、日本語入力が控えています。emacs-22 の頃は emcws のバッチがあったのですが、いよいよ 23 では無くなってしまいました。

僕は Canna のカナ入力の人なのですが、 scim-bridge とかで日本語入力ができたとしても emacs の制御キーが SCIM に食われてしまうのでお話になりません。やはりネーテブなインプットメソッドが欲しい所です。これからこれについて調査を行う感じになりそうです。

scim-canna を捨てて uim-canna にして、uim.el にすれば良いのかなぁ?とも思っていますが・・。

あ。yc.el を試して作者さんとちょっとメールでやり取りしたのですが、CannaServer との通信が EUC で emacs-23 が UTF-8 を利用しているため、変換後に表示される漢字が文字化けしてしまい実際に利用することができませんでした。どこかでコード変換して上げる必要があるのですが、僕は lisp がイマイチ解らないので・・。

と、言うことでフォントの設定はここまで。次回書くとしたら日本語入力についてになるかと思います;-)。


以下余談ですが、最近 WINE 経由で ATOK2009 を利用できるかな?とか思って格闘している最中なんですよ;-)。

これは KDE4 のメニューエディタのキャプチャ。メニューに ATOK9 が現れます。ただ、インストールが成功してないので動かないんですけどね;-)。

kdeandatok.png

後、ports/textproc/wime(http://www.venus.sannet.ne.jp/thomas/wime/) なんて ports を作っている最中ですが、これがまた手ごわい・・。

と、言うことでこの件についてはまだまだ続くことでしょう;-)。

mew と SSL と stunnel と /etc/hosts.allow。

さてと。話せば長いのであります。mew では IMAP4 や POP3 に対して SSL で接続できます。 ~/.mew の設定や ~/.certs/ に必要なファイルをほーりこむ設定については他のウェブページに譲りたいと思います;-)。

ここでは、他のウェブページを見て設定しても接続できない人がきっと参照してくれることでしょう。と、言う感じでまとめます。特に FreeBSD の ports から stunnel をインストールした人向けです。

最初に答えを言いましょうっ!!。 /etc/hosts.allow で localhost の stunnel のポートを許可しないと接続できませんっ!! /etc/hosts.allow に以下の設定をしている人は mew での SSL 接続がきっとできないことでしょうっ!!

#ALL : ALL : allow

さてと。それでは順番に見ていくことにしましょう。 FreeBSD を利用している人は大体 ports から必要なものをインストールするかと思います。emacs+mew で SSL な POP3 もしくは IMAP4 なサーバに接続しようとした時は /usr/ports/security/stunnel が必要なので、サクッと make install しておしまい。で、早速テスト。って感じかと思います。

mew が SSL するときは stunnel 用の設定ファイルを /tmp/takachan88831JOY/mew88831rod みたいな感じで作成します。このファイルが stunnel のオプションになるわけですが、中身は以下のようになっています。


client=yes
pid=
verify=0
foreground=yes
debug=debug
syslog=no
CApath=/home/takachan/.certs
[10841]
accept=127.0.0.1:10841
connect=mail.running-dog.net:993

mail.running-dog.net のポート 993 番に接続するための SSL トンネルは localhost の ポート 10841 に telnet して確認できます。まぁ、mew が IMAP4 を叩くポートが 10841 と言うことですね。これは解りやすい。

で、実際に telnet 127.0.0.1 10841 しても SSL トンネルをまるで抜けていきません。おかしいなぁ。と思って色々調べてみると、原因は stunnel が libwrap をリンクしていると言うことなんですね。これが解るまでに四時間位かかりました。orz。

mew 側の設定で localhost のポート番号を設定できるのか?もし設定できるのであれば、そのポートだけを /etc/hosts.allow で設定すれば良いと思いソースを見て調べてみましたが、どうやらできないみたいです。mew-6.2.50 の mew-ssl.el では 130 行目辺りで localport を mew-random を利用して生成しているみたいです。と、言うことで、mew 側ではどうやら設定不能みたいです。

続いて、/etc/hosts.allow に stunnel: ALL : allow とか stunnel4: ALL : allow など色々試しに設定してみたのですが、inetd 経由や デーモンモードで動作する stunnel では有効になるのですが、コマンドベースで利用した場合の /etc/hosts.allow の記述方法が解りませんでした・・。トホホ。

それならば、と言うことで stunnel の Changelog やらソースを眺めますが、おぉっっ!! configure オプションに --disable-libwrap と言うのがあるではないですかっ!! すんばらしい。とは言いつつ、FreeBSD の ports では --disable-libwrap を選択できるオプションが無いのでありました。無条件で libwrap はリンクされてしまう。トホホ。

と、言うことで --disable-libwrap を選択できる ports を作成しました。使いたい方は利用してください。

ports-stunnel-disable-libwrap-20090123.tgz

まぁ、Makefile をチロッと直しただけなんですけどね。

これで安心して mew で SSL が利用できることでしょう。まずは良かった。良かった。

けど、解決策はそんなんで良いのかなぁ? mew 側で吸収すべきか stunnel 側で吸収すべきか。どっちが良いのかなぁ・・。kazu さん 的にはきっと、libwrap を off にしましょう。って言うような気が、しないでもないこともないと、僕は思うのですけどねぇ・・。

Thunderbird と mew でメールを読む。

僕は FreeBSD をデスクトップ環境にしているのでメールの読み書きは emacs+mew と言う環境です。でもって、メールサーバには imap4 も持っているのだけど POP3 もあるので、メールは一台のマシン上に保存するために POP して mew で保存している。

mew で POP してクライアント側で保存することのどこが良いか?と言われれば、一つのメールが一つのファイルになる点かな。まぁ、imap4 に courier-imap を利用すれば 一つのメールが一つのファイルとして imap4 上に保存できるのだけどね。

今日はクライアントのお話。imap4 及び POP3 サーバのことは出てきません。

さて、mew を使い初めてもう 10 年以上経つのだけど、最近は spam が多すぎて困っていた。 今までは自分でシコシコ mew-refile-guess-alist を書いて M-o で振り分けていたのだけど、もう限界に来た。メールサーバ上で spam フィルタを入れるのは大変だし、自分の管理していないメールサーバだともっと無理だし。

と、言うことでクライアント側でなんとかしなければならないのだけど・・。

で、考えたのが Thunderbird の「迷惑メールフィルタ」。サーバに対して imap4 を利用し Thunderbird で接続し、「迷惑メールフィルタ」を実行します。迷惑メールは Spam フォルダに振り分けられるので、その後 mew で POP すれば必要なメールだけが POP できると考えたのだけど・・。

Thunderbird って imap4 を利用すると、自分で管理している場合は順調なのだけど、その状態をサーバには送らないので、Thunderbird 上では綺麗にフォルダを振り分けられているのだけど、他の MUA から imap4 で覗くともうぼろぼろなのね。でもって mew で POP しても、せっかく迷惑メールフォルダに振り分けたメールもぜーーーんぶっ!! POP してきてしまう。というとんでもない仕様なのでうんざり・・。

僕は MocOSX ユーザでもあるので AppleMail も使うのだけど、こいつには「同期」と言うメニューがあるのでそれを選択すると、そのタイミングでサーバとクライアントソフトが同期してくれるのでまだましかな。

Thunderbird の動作、こんなんじゃ全然ダメじゃん。とか思うのだけど、修了時にはサーバ同期してくれるみたい。つまり、「迷惑メールフィルタ」を実行した後、一旦 Thunderbird を終了させるわけですね。うがーーっ!! やっぱりタメダメじゃん。about:config できっと設定できるのだろうな。とは思うのだけど、あんな、説明がなぁんも無い MIB をいちいち見ることなんて絶対やんないし・・。

と、言うことで早速調査開始。そしたら、有りましたよ。僕みたいに Thunderbird に不便を感じていた人が。

http://blog.asura.co.jp/takehara/9bddb51daaea4de89db475fabfb576b0/entry.aspx

ここを見ると、mail.imap.expunge_after_delete と言う MIB の値を変更すると良いみたいです。

早速変更して試してみましたがっ!!

おぉーっ!! 僕が思ったとおりに動くっ!!感動っ!! と、言うことで動作的には、届いたメールに対して Thunderbird でアクセスします。 imap4 を使って。でもって「迷惑メールフィルタ」が実行され、迷惑メールは「迷惑メール」フォルダにどんどん溜まっていきます。「受信トレイ」が随分とすっきりします。

その後、mew から POP3 でメールサーバにアクセスします。でもってメールを取り込んでみると、おーー。「受信トレイ」の中のメールしか POP してこないじゃないですかー。これがやりたかったのよ。

迷惑メールの振り分けは Thunderbird で。必要なメールの管理と送信は mew で。って感じで利用することにしましょー。

ただ、Thunderbird は本来の使い方がされないのでちと悲しいのだろうなぁ;-)。


2008/09/26 追記
やはり、Thunderbird は mozilla 系のアプリケーションだけあって、KDE3 上ではメニューフォントとか、フォルダのフレーム、メールの一覧はどでかいフォントで表示されてしまいますなぁ。

でもって[設定]からフォントのサイズが指定できるのはメールの本文に対してだけだしぃ・・。これじゃダサダサだぁ・・。about:config でもフォントの設定が沢山あるみたいだけど、どれがどれやら解らない・・。

と、言うことで Firefox と同じフォントの設定を書いてみた。と、言うかもっとラクチンに symlink 張ってみたら、あぁら。無事に小さくなったわ;-)。

以前、firefox でフォントの設定をした のだけど、その設定がそのまま Thunderbird でも使えます。

$ cd ~/.thunderbird/乱数ディレクトリ/
$ ln -s ~/.mozilla/firefox/乱数ディレクトリ/chrome

これで OK です。後は Thunderbird を再起動すればフォントが小さくなることでしょう。めでたしめでたし。

それにしても、未読メールがボールドフォントってのが気にくわないなぁ。Apple Mail みたいに色で指定できないのかしら・・。

mew が Punycode に対応した。

emacs22+mew と言うのがぼくのメールを読む環境なんだけど、 Mew version 5.2.50 で Punycode に対応したみたいです。試してみるとこれがまた・・。

メール本文(mew では message バッファと呼んでいます)にある http://xn--w8j2bze0962a.jp/ が、ちゃんと http://もつ焼き.jp/ と表示されるようになった。すごいなぁ。その URL をクリックするとちゃんとブラウザも起動する所が偉い;-)。

ただ、From:・To:・Cc: などの takachan@xn--w8j2bze0962a.jp は変換してくれないみたい・・。ちょっと ML で かずさん に聞いてみよう。

で、話は自然と「国際化ドメイン名」に行くんだけど、firefox ってすごいなぁ。と再確認。

「もつ焼き。JP」とか、「もつ焼き.JP」って言うのをちゃんと変換して表示してくれるのね。これには驚き。技術的には NAMEPREP による正規化をしてから、Punycode による変換を行い ASCII コードで DNS に問い合わせられる。でもってちゃんと表示してくれる。すごいなぁ。

もつ焼き。JP (firefox でクリックしてみてください)

↓ NAMEPREP による正規化

もつ焼き.jp

↓ Punycode による変換

xn--w8j2bze0962a.jp

Punycode ってのは知っていたけど、 NAMEPREP ってのは今回初めて知りました。すごいぞ。これ。

ちなみに konqueror は Punycode に対応しているけど、NAMEPREP には対応していないみたいで、「もつ焼き。JP」は不正な URL として扱われるみたい。しくしく。

「さくらのレンタルサーバ」に emacs をインストール。

なんか、「さくらのレンタルサーバ」には emacs が入ってないので自力で make してインストールしてしまおう。みたいな感じです。そもそも、ssh でログインして、ちろっと html を直したい場合、vi じゃ日本語表示してくれないしきついでしょう。

一応、SAKURA のサポートにはメール投げたけど、いつ pkg_add してくれるのか解らないし・・。と、言うことで emacs-current をインストール;-)。作業内容は以下のような感じで非常に簡単です。「さくらのレンタルサーバ」を利用している方、是非試してみてください;-P。

あ、emacs-current をソースからインストールすると大体 300MByte 位必要になります。自分のディレクトリでは du -sk して空き容量を確認してくださいね。

と、言うことでインストール開始;-)。

> cd ~/
> mkdir -p src/Emacs
> mkdir usr
> cd src/Emacs
> cvs -d:pserver:anonymous@cvs.sv.gnu.org:/sources/emacs login
> CVS password: (単に RETURN)
> cvs -d:pserver:anonymous@cvs.sv.gnu.org:/sources/emacs co emacs
> setenv LANG C
> setenv L_ALL C
> cd emacs
> ./configure --without-carbon --without-x --prefix=/home/USERNAME/usr
> make bootstrap
> make install
>

こんな感じでインストール完了。/home/USERNAME/usr/bin/ に emacs がインストールされます。まぁ、一応 strip * とかしてサイズ小さくしておきましょう。後、~/src/Emacs はもう必要ないのでサクっと消してしまってもいいでしょう;-)。

これで ssh でログインした後にファイルを編集するすることができるようになった。めでたしめでたし。

 
Copyright (c) 1997-2010 takachan@running-dog.net All Rights Reserved.