[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacsでのバッファ名の文字列による取得について



 南谷です。いつもお世話になっています。
 ちょっと時間に余裕ができたので、昨日からelispの勉強をしています。
それでemacsでのバッファ名の文字列による取得について分からないことが
あるので、どなたかご存じでしたら、教えてください。

 任意のバッファの名前を文字列で参照し、目的のバッファの名前と比較して、
それが目的のバッファであるかを調べたいのですが、うまくいきません。
elisp-manual-ja - Japanese version of Emacs Lisp Reference Manual
によると
> -- Function: buffer-name &optional BUFFER
>     この関数は, BUFFERの名前を文字列で返す.  BUFFERを指定しないと, デフォ
>     ルトはカレントバッファである.
>
>     `buffer-name'が`nil'を返す場合, BUFFERが削除されたことを意味する.
>     *Note Killing Buffers::.
>
>          (buffer-name)
>               => "buffers.texi"
 とのことなので、
(if (string= (buffer-name buffer) "\*Dialogue\*")
  (dtk-speak string))
というようなコードを書いたのですが、
Wrong type argument: bufferp, ("*Dialogue*")
error in process filter: Wrong type argument: bufferp, ("*Dialogue*" "*Others*") [8 times]
というようなエラーがでます。
(たぶんこの時buffer-nameは*Dialogue*を返しているはずです。
何度か呼ばれる中で*Others*も返しているはずです。)
これは(バッファ名の文字列ではなく)バッファそのものを指し示す変数を
参照していると興っているように思うのですが、ちょっと理由が分かりません。

 それとbep(emacspeak)が*Completion*をkillしているのは、やはり
なにか理由のあることなのでしょうか?emacspeak-kill-buffer-carefully
で明示的に行っているようですが、*Completion*を手動で調べたい
ことがしばしばあるので、ちょっと困っています。