ラベル Emacs の投稿を表示しています。 すべての投稿を表示
ラベル Emacs の投稿を表示しています。 すべての投稿を表示

2026-05-02

GNUSを諦め、Wanderlustに復帰するかもしれない

10年ほど前から、メールを読むのにGNUSを使ってきました。ここ最近になって(それでも今年とか、去年とかではありませんが)、サマリー表示が「[nobody](1970-01-01 09:00)(none)」のようになっているのに気づきました。当初は、これはGNUSのバグだと考えていたので、いずれバグフィックスされるだろうと思っていました。いつまで経っても直らないので、GNUSの利用者が少ないか、開発者が少なくて、問題が発覚しないか修正されないのかと、見当はずれなことを思っていました。いい加減に業を煮やしてGeminiに相談したところ、対策を編み出してくれました。

 

そもそもメールを読むのに、FreeBSDを使っています。プロバイダからfetchmailでローカルに取り込み、procmailで振り分けてから、GNUSで読んでいます。Geminiに相談した結果、fetchmailやprocmailの設定誤りが発覚しました。その対処を済ませたので、もう大丈夫だろうと思っていたのですが、相変わらず、同様の現象が発生します。Geminiに言わせれば、ヘッダが大きすぎるので、GNUSの解析が途中で打ち切られてしまうのが原因だろうと推測しているようです。そうなのかもしれません。試しにヘッダを加工して、大きすぎるエントリを削除してみると、うまく解析できているようです。そうであれば、ヘッダが悪い可能性は高いと思います。

 

しかしメールのファイルをWindows11上のThunderbirdで読ませてみると、別に問題が発生しないので、GNUS側でなんとかならないのだろうかという気になります。Geminiに相談を持ち掛けてみたのですが、いろいろと試してみましたが、どうにも解決に至りそうにありません。

 

GNUSに拘るわけではありません。しかしEmacs上で動くこと、MH形式ファイルを扱えることが必要です。この条件にあうのは、GNUS、Mew、Wanderlustが候補となります。しかし、もともとはWanderlustを使っていたのです。ところが2013年3月頃、emacs24でエラーが多発するようになり、GNUSに移行したのでした。しかしGNUSでのメール送信方法がわからなかったので、メール送信にはMewを利用してきました。

 

GNUSを諦めるとすると、MewかWanderlustが候補です。Wanderlustの使用を止めようと思った頃にもMewにしようかと考えました。しかしMewは、メールの未読管理ができなかったのです。つまりMewの管理外、すなわちprocmailで振分けられてしまうメールを、Mewは未読か既読か認識できなくなってしまうのです。それでGNUSを選択したのでした。

 

2013年3月以降GNUSを使ってきて、サマリー表示が変にならなければ、このままGNUSを使い続けていたところです。しかしそういうわけにもいかなくなってきたので、懐かしのWanderlustに復帰しようかと考え始めました。

 

いきなり移行してしまうのも性急に過ぎると思います。まずは、現状のGNUSを使い続け、その裏ではWanderlustを試行しようと思います。そしてWanderlustでも大丈夫だと確信できたら、その時はGNUSを諦め、Wanderlustに復帰することになります。

2026-04-30

またしてもGNUSでサマリー表示が「[nobody](1970-01-01 09:00)(none)」になった

メールを読む環境はFreeBSD/amd64上に構築しています。プロバイダからfetchmailでローカルに取り込み、procmailで振分け、GNUSで読んでいます。GNUSサマリー表示が「[nobody](1970-01-01 09:00)(none)」になってしまうのは気がついていましたが、最近になってGeminiに相談して、解決に至ったと思っていました。

 

ところが、再び同様の現象になりました。若干違うのは、全く同様の現象のメールと、日付だけは正しく表示されるメールがあることです。再びGeminiに助けを求めました。こちらから情報を提供し、Geminiからは、あれを確認しろとか、これを設定してみろとか指示が飛びます。基本的にはGeminiの指示に従うのですが、方向性が解決から逸れているんじゃないかと思うところもあり、軌道修正を図ります。Gemini(というか生成AI一般に)との向き合い方は、一方的に妄信するのではなく、こちらも相応の技術背景を持ったうえで、対話に臨む必要があると感じます。

 

閑話休題。今回の問題メールは、なんとGoogleが発信元なのです。結論として、Googleが送信時に付加する「X-」で始まるヘッダに問題がありそうだということになりました。ローカルに持ってきた問題メールをエディタで編集し、「X-」のヘッダを全て削除したところ、サマリー表示が正常になるのを確認しました。

 

まさかGoogleが送ってきたメールなのにと思わないでもありません。Geminiに言わせれば、(本当かどうかわかりませんが)、GNUSはヘッダの解釈が厳密で、Googleが送信するメールも完璧ではないので、こういうこともあり得るとのことでした。少なくともこちらでできることはないので、Google側が何とかしてくれる(そもそも気づいているのか)のを待ちたいと思います。 

2026-04-25

GNUSでサマリーが「[nobody](1970-01-01 09:00)(none)」と表示される

メールをFreeBSD/amd64上で管理しています。プロバイダに届いたメールを、fetchmailで取り込み、procmailで振分け、Emacs上のGNUSで読んでいます。Emacsでメールを扱うのは昔からで、元々はWonderlustを使っていましたが、十数年前にGNUSに変更しました。しかし送信の設定ができていないので、メールを送る時はmew(もしくはWindows11上のThunderbird)を使っています。

 

最近(と言っても数年たっていますが)になって、GNUSのサマリーモードで表示が「[nobody](1970-01-01 09:00)(none)」となるメールがあるのに気付きました。すべてそうなるわけではなく、送信者、送信時刻、サブジェクトが表示されているものもあります。以前はこんなことにならなかったので、てっきりGNUSのバグだと思っていました。そのうち直るだろうと高をくくっていました。それなのに、いつまでたっても直らず、そもそもGNUSを使っている人がいないんじゃないか、だから直らないんじゃないかと、あらぬ疑いをかけていました。

いつまで待っても修正されないならば、自分で対処しようと思いましたが、Emacs Lispは不慣れですので、Geminiにお願いしようと考え、Geminiに相談を持ち掛けました。いきなりEmacs Lispについて相談したわけではなく、GNUSの現象を示して回答を求めたのですが、なんとGNUSの問題ではなく、fetchmailかprocmailが怪しいとの診断が出ました。

Geminiとの対話を繰り返した結果、設定ファイル「~/.fetchmailrc」の中で「mda "/usr/local/bin/procmail -f- -d %T"」とある「-f-」が原因ではないかというのがGeminiの見立てでした。procmailのオプション「-f-」というのは、PROCMAIL(1)によれば、「If fromwhom consists merely of a single `-', then procmail will only update the timestamp on the `From ' line (if present, if not, it will generate a new one).」と書かれています。このオプションが指定されていることで、メールの先頭にある「From」の次に「>From」という行が生成されてしまうようなのです。このような行があると、GNUSがメールヘッダをハンドリングしようとして失敗するので「[nobody](1970-01-01 09:00)(none)」となってしまうようです。

 

若干疑問なのは、届いたメールは全てprocmailを通すので、全メールが「>From」のようになっています。それでもサマリーモードが問題なく表示されるものもあるのです。この点についてGeminiに尋ねたら、何か説明してくれましたが、読み飛ばしてしまいました。

 

ちなみにmewを使った場合、サマリーモードでも全く問題ありませんでした。

2024-02-19

EMACS LISPとシェバン

AWKやSEDのようにEMACS LISPをスクリプト言語的な使い方ができるのかを確認するため、簡単な例で試してみました。以下のようなファイルを作成し、実行ビットを立て、動かしてみます。

#!/usr/bin/emacs --script
(princ "Hello, world.\n")


動かしてみると、次のようになりました。

Loading /etc/emacs/site-start.d/00debian.el (source)...
Loading /etc/emacs/site-start.d/50tcsh.el (source)...
Hello, world.

 

「Hello, world.」という文字列は出たのですが、その前に余計な出力が現れています。これらは標準エラー出力に出ているようなので、パイプで繋いだとしても影響はないのかもしれませんが、パイプ全体として余分なメッセージが出てしまうことになるので、できれば出ないようにしておきたいところです。


オプション「--no-site-file」を指定すればロードされないことが分かりました。しかしシェバンの行には、既に「--script」を指定しているので、「--no-site-file --script」のように複数指定すると、うまく動きません。「execve(2)」では「Linux では、インタプリタ名 interpreter に続く文字列全体がインタプリタに 1個の引き数として渡される。」と記述されており、複数個のオプションとは認識しないようです。

 

そこで、/usr/local/bin/emcsとして、次のような内容のファイルを作成します。その上でシェバンには「#!/usr/local/bin/emacs --script」とすれば、期待した動きをしてくれました。

#!/bin/sh
/usr/bin/emacs --no-site-file $*
#[EOF]


2024-02-18

EMACS LISPでコマンドライン用スクリプトを作れるのだろうか

UNIXでは初期の頃からSEDやAWKを用いて、コマンドラインで使えるスクリプトを作ることができていました。その後にはPERLが登場し、最近ではPYTHONもあり、それ以外にもRUBYなどもあり、それぞれに一長一短はありますが、ちょっとした加工をするためのスクリプトを簡単に作ることができます。

 

同じような事はEMACS LISPで作ることは出来るのでしょうか?Webを検索してみたところ「Emacs Lispでスクリプト処理」という記事を見つけました。やってやれない事は無さそうです。


AWKを使えば、CSV形式ファイルを入力として集計することができますが、EMACS LISPでも同様の事ができるでしょうか。できるような気はするのですが、あまり簡単にはなりそうな予感がしません。AWKなら簡単にできることを、わざわざ苦労してEMACS LISPでやるのは、馬鹿げているとも思いますが、どのくらい出来るのかを確認するために、ちょっと挑戦してみようかと思っています。

2023-06-09

SICPのEmacs Infoファイル

Webで「SICP and Emacs」という記事を見かけました。計算機科学の教科書として著名な「Structure and Interpretation of Computer Programs」(略称:SICP、日本語訳:計算機プログラムの構造と解釈)が、EmacsのInfoファイルで読めるのだそうです。ただし、日本語訳が読めるわけではなく、読めるのは原文(英文)です。

 

実際にファイルが置いてあるのは「SICP in Texinfo Format」です。ここには既にInfoファイルとしてコンパイル済のファイルが置いてあるので、ダウンロードするだけでした。

 

ホームディレクトリに「~/info」を作って、そこにダウンロードしたファイルと「dir」を置きました。またemacsの初期化ファイルに、以下の行を追加しました。

(setq Info-default-directory-list
      (append Info-default-directory-list (list (expand-file-name "~/info"))))


2022-08-15

GNUSの日本語マニュアル

ふだんのメールを読むのにはFreeBSD上のemacsGNUSを利用しています。以前はWanderlustを利用していましたが、数年前にGNUSに変更しました。GNUS自体は、かなり前にネットニュースを読んでいた頃に利用したことがあります。しかし新しいバージョンのGNUSになってからは利用していなかったので、使いこなすには難がありました。

 

GNUSの公式サイトには詳細なマニュアルが置いてあるのですが、英文しかないので、読んだ方が良いと思いつつも、二の足を踏んでいました。ところが日本語訳されたマニュアルが存在していることが、ひょんなことから気づきました。GNUSのマニュアルは500頁弱ほどもある大部なものなので、英語で読むのは辛く、日本語訳があると助かります。

 

実は、メール送信は、GNUSでも出来るはずなのですが、設定がうまくいかず、Mewを使っています。日本語訳のマニュアルを熟読して、なんとかGNUSでメール送信ができる環境を作りたいと思っています。


2020-03-19

Emacsのorg-modeを学んでみる?

Emacsは単なるエディタではない、という主張があります。その通りだと思います。Emacsの中で全てのオペレーションが出来る、という人もいるようです。そういう人もいるだろうと思います。エディタの好みはEmacs派とVi派にわかれるようですが、僕自身は一方に偏るわけではなく、どちらも使っています。使っていますが、それほど極めているというわけではありません。

最新のEmacs関連情報が「Emacs news」で得られるので、参考として見ています。情報がカテゴリ別にまとめられており、そのひとつに「Org Mode」があります。何時頃のEmacsから登場したのかわかりませんが、org-modeというものがあり、(使いこなせないほどの)数多くの機能があるようです。

元々は文章作成のために使われる「アウトライン・モード」から始まったようです。しかし現在のorg-modeは、「アウトライン・モード」とは関係なさそうな機能まで盛り込まれているように見えます。文章作成のためのモードではなくなっているように思えます。

個人的にはEmacsだけで全ての環境を完結させるつもりはないのですが、org-modeが自分自身として使えそうであれば、学んでおいても良いかと思っています。まずは最初の一歩から知りたいのですが、Webを検索すると大量の情報が得られる割には、既に知っている人達に役立つであろう情報が多いように思います。org-modeを全く知らない人のための入門情報は、あまり見つかりません。もしかするとorg-modeに関する大量の情報の中に埋もれてしまっているのかもしれません。