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

Re: [bep] ファイルを結合するマクロ(learning lisp)



井上です。
だんだん高度になってきた・・・

Reiko TAKAHASHI <HFC03614@...> (高橋玲子) writes:

> } (and (file-writable-p filename)
> }      (or (not (file-exists-p filename))
> }          (file-regular-p filename)))
> } 
> } かなあ。
> 
....
>  ↑は、ファイルが書き込み可能であることが必須条件になって、かつ、ディス
> ク上に存在しないこと(だからディレクトリと重なってしまう心配はない)、あ
> るいはファイル名であること(ディレクトリ名ではないこと?)を確かめている
> んですよね?
> あっ、でも……、どうして (not (file-exists-p filename)) を確かめなければ
> ならないんでしたっけ……?(ええん、まだわかってない(^^;))

なんか自分でも「あれ?いらないのか?」とか思ってしまいました。
これは、存在しないファイルに対してはfile-regular-pがnilになるためです。
だから、ファイルが存在するときだけfile-regular-pを試しています。

>  append-buffer-to-file で指定したファイル名のバッファがすでに開かれてい
> たら、その時点で警告を出すように書き直すことは可能ですか?
> その場合、ディスク上のファイルを更新することをユーザが選択したら、バッフ
> ァはkillするか、更新結果を読み込むか……ですよね。自動的に読み込めたほう
> がおもしろいかな。

これ私には1時間くらい調べないと分かりません。(^^;)

> バッファの名前って、どこかの変数(???)に記憶されていますか?

(get-buffer バッファ名)でnil以外が帰ってきたらそういうバッファが存在す
ることは分かると思うのですが、たぶん存在するバッファの名前のリストを得
る関数もあると思います。
後、バッファの名前とそのバッファが関連づけられているファイルの名前は必
ずしも一致しないので、
(buffer-file-name)関数を使って調べる必要とかあるかも知れません。

>  あと、もう一つ、書き込めないファイル名を指定したら「書き込めません」の
> ようなメッセージを出してからループ(?)するようにしたいのですが……、これは、
> (print ...)を使えばいいですか?

(message)関数と必要なら(format)関数でしょうか。

>  「こういうことができる関数ってないのかな?」と思った場合、どうやって探
> したらいいですか? たぶん、今の私だと、説明を読んでもほとんどわからない
> とは思うのですが。

関数や変数の名前にはlispを書く人だとそれと分かるような名前が付いてい
ます。
M-x apropos
で関数や変数の名前を正規表現で検索してリストすることができます。
後はelispのinfoをsコマンドで検索するとか、そういうことしてます。
同じようなことをしていると思われるelファイルをひもとくというのもよくや
りますね。

-- 
                    Koichi Inoue, ARGV
                    E-Mail: inoue@...
                    ICQ UIN: 74900690