[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]

Re: Meadow3: build-mail命令が動かない:mailaliases.el と flyspell-mode のせい?



On 8/28/06, Masahiro MIYAKAWA <mamiyaka@xxxxxxxxxxxxxxxxxxxxxxx> wrote:
> ところで,現在の設定では,M-x locate-library で調べると,mailalias.el がロードされているので,

上の書き方を見てちょっと心配になったので念のため書きます。
理解が違ってると話がかみ合わないので。
locate-library は shell での which のように、load-pathにしたがって、
与えられたライブラリをロードする際に、どのディレクトリにあるものを
ロードするかを返すものであり、すでにロード済みであるかどうかを
知るためのものではありません。
言い方を変えると、mailalias.elが未ロードであっても、
M-x locate-library<RET>mailalias.el<RET> は値を返します。

ちなみにロード済みかどうかを調べるには (featurep 'xxxx) で調べるのが
よいでしょう。 xxxx はそのファイルで (provide 'xxxx) として与えられた
シンボルです。

> ;;alias補完時にmail-aliases 変数の値が t (デフォルト値)ならば
> ;;build-mail-aliasesが呼び出される。
>
> はわかります。蒸し返しかもしれませんが,別に設定を変えないの
> に,mailalias.el がロード されたのは,何時どのようにしてだっ
> たのでしょうか。わからなくなりました(前回のnetinstallerや
> auto-loadに関するご説明はこれを調べろ,とのことだったでしょ
> うか)。

えと、質問の意味がよくわかりませんが、そこは追求すべきでは無いでしょう。

繰返しになりますが、(require 'mailalias) 等でロードを行わずに
build-mail-aliases<f> を呼び出していたこと自体がそもそも間違いです。
その間違った呼び方でも以前は他のパッケージにて (require 'mailalias)されて
いたなどに理由で、build-mail-aliases<f>の呼び出しは成功していたのでしょうが、
今回はそれらのパッケージを使っていないのか、設定を変えたのかわかりませんが、
エラーとなったわけです。これは本来の正しい挙動なのです。で、以前どこに
 (require )が潜んでいたのか、を追求することにはあまり意味がありません。
なぜなら、素の状態であれば以前も失敗するはずだからです(未確認ですが)。
なので、上に書いたようにbuild-mail-aliases<f>を呼び出す前にrequireするという、
正しい呼び出し方をすべきだとしか言いようが無いかと思います。

また設定を変えてないのに挙動が違うのはおかしい、というのは同じ環境で
通用するハナシであって、meadow2のときに使えた設定がmeadow3で
そのまま使える保障はありませんので、その点でも追求は薦めません。


> > > > compose-mailを置き換える(adviceする)というアプローチを
> > しているのが普通じゃないわけです。
> > >
> > ただ、compose-mailにadviceがかかっているのはたしかですので、
> > そのadvice処理でやっていることが必要なことかどうかはご確認
>       ---------------------------------------
> > を。
>  > > わかりました。(難しいです)。ありがとうございました。
> ちょっと,力が足りません(コードが追えませんでした)。せっか
> くのご忠告ですが,今回は,ここのところまでで,いいということ
>  にさせてくださいますようお願いします。

標準以外の、例えば自分の .emacsやそこからloadされているelisp ファイルで
defadvice という文字列を探せばよいでしょう。
おおまか、以下のようになってるだろうと思います。

(defadvice compose-mail (around activate)
   ;; some code
   ad-do-it
   ;; some code
  )

そしてそれに心当たりがあるかどうか、です。
自分が意図したものなのか、他の人の設定を持ってきたものなのか、
はたまた探してもdefadviceが見当たらないか。

-- Shun-ichi GOTO