[xyzzy:06325] Re: 初めまして and 添削願い
- Subject: [xyzzy:06325] Re: 初めまして and 添削願い
- From: quarto <quarto@xxxxxxxxxxxx>
- X-mailer: Becky! ver. 2.00.03
亀井さん、ご返事ありがとうございます。
> ; とりあえず無限ループ
> (loop
> ; xf-dir の最後に "/" が無いなら付け加える
> (setq xf-dir (append-trail-slash xf-dir))
> ; xf-dir が存在すればループから抜ける
> (if (file-exist-p xf-dir)
> (return))
> (xf-dir-is-not-found))
とりあえず "/" が無いなら付けておいて、xf-dir が存在するなら return で
loop から抜ける。しないなら xf-dir を入力してもらって loop の先頭へ。
ということですか。append-trail-slash なんてあったんですね。
> (while (not (file-exist-p xf-dir))
> (xf-dir-is-not-found))
> (setq xf-dir (append-trail-slash xf-dir))
file-exist-p は末尾の "/" があろうと無かろうと関係ないから、ってことか
な。よく分からない catch,throw を使ったのが間違いでした。単純にかけるん
ですね。こんなところがいっぱいありそう...
> そういう使い方は想定していないので。ウィンドウを分割し
> て、それ用のバッファに表示するようにしてください。
はい、そうします。
> なんとなく合ってるような気もしますが、以下のようにする
> のが普通です。書き方は他にもいろいろありますが。
>
> (let ((a (get-file-attributes x)))
> (concat (if (zerop (logand a 16)) "-" "D")
> (if (zerop (logand a 32)) "-" "A")
> (if (zerop (logand a 2)) "-" "H")
> (if (zerop (logand a 1)) "-" "R"))))
>
> ちなみに、get-file-attributes の戻り値は、R:1 H:2 S:4
> D:16 A:32 を足したものです。
S ってなんだろと思って探したら、ありました。システムファイルですね。表
示しない設定にしてたので見つからないはずです。ってことで、あれは全然違
います。1, 2, 16, 32 しか無いという前提で組み合わせを全部書き出し、それ
を眺めながら書いたので。これをありがたく頂戴いたします。
> (setq xf-table (sort xf-table
> #'(lambda (x y)
> (< (nth 5 x) (nth 5 y)))))
>
> とか。関数の戻り値を使うようにすると、グローバル変数を
> 使う機会が減ると思いますとか。
うへ〜、短いな。sort というのがあるのは知っていたんですが "#'〜" を使っ
てどう書けばよいのか分からなかったのです。こういうところで lambda を使
うんですか。くしゃくしゃやってたのが恥ずかしい。早速試してみると体感で
5 倍ぐらい早くなりました。
元からある関数を使うときは戻り値ばかり気にしているんですが、自分で書く
ときは全然戻り値を意識してないです。色々見直します。
たくさん答えていただいてありがとうございます。これからも精進します。