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

Re: [bep] dired-do-shell-command (learning lisp)



井上です。

まず、今調べたら、Emacs-21では
dired-recursive-deletes
を設定することで、
xのときになにも聞かずに消す
毎回質問する
現在いるディレクトリから見えているトップのディレクトリだけ質問する
とか選べるようです。Emacs-20.7のdiredではこれはありません。

さて、

Reiko TAKAHASHI <HFC03614@...> writes:

> で、逃避している場合ではないのですが、もう、とても我慢できません……。

お疲れさまです。

> call-process という関数がすでにあって、そこに六つの引数("rm" nil nil ni
> l "-rf" dir)を入れている?
> もしかして、dir というシンボルには、対象になっているディレクトリの名前が
> 入っている?

そういうことですね。
call-processは子プロセスを起動して作業させる時に使う関数です。
引数の意味はC-h f call-process
# めんどうなだけ

> delete-directory 関数では、今作ったばかりの delete-directory-recursive 関
> 数を使っているんですよね?
> これを、.emacs(???)に書き込んでディレクトリの削除をしたい場合、M-x delet
> e-directory とすることになるんでしょうか?

ここですが、diredでDマークをつけてxを押したとき、diredはそれぞれのファイ
ルに対して、
ディレクトリだったらdelete-directoryを
普通のファイルだったら delete-fileを
みたいなことをします。
(本当はもうちょっと複雑ですが)
そして、本来delete-directoryはEmacsに元々ある関数で、引数が一つあり、
「引数で指定したディレクトリの中身が空だったらそのディレクトリを削除する」
というものです。
これを、坂本さんの例ではdeltreeコマンドやrmコマンドを起動してなにがなん
でもばさっと消す関数に定義し直しているのです。
このように、最初からある関数でも.emacsで動作を変更できてしまうところがお
もしろいと思いませんか?

> なぜ、わざわざdelete-directory-recursive を作って、それを delete-directo
> ry で使う形にしているんでしょう?

さあ・・・
この場合特に理由はなさげに見えます。
これを教えてくれた人は今は達人ですが、もっと未熟な頃に人に教わって.emacs
に書いた(のを実は忘れてた)みたいなので、あんまり深い意味はないのでしょ
う。

>  ああ、でも書いてすっきりしました(^_^;)。

逃避状態だと実技より
learning lisp
に走る不思議な人みたいですね。
# サーチで引っかかってね

そのうち検索でlearning lispを検索すると、おもしろいlispの入門書ができて
いることを期待して・・・

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