1

emacs で Mx find-name-dired と入力すると、2 つのプロンプトが表示されます。1 つ目は検索するディレクトリ パスで、2 つ目は検索するファイル パターンです。

最初のプロンプトが常に特定のプロジェクト ディレクトリになるように (.emacs で) どのように変更すればよいですか?

また、ファイル名の検索で大文字と小文字が区別されないようにするにはどうすればよいですか?

4

3 に答える 3

7

別の開始ディレクトリを取得するには、次のように別の開始ディレクトリを使用して引数を読み取るように関数にアドバイスできます。

(defadvice find-name-dired (before find-name-dired-with-default-directory activate)
  "change the argument reading"
  (interactive
   (let ((default-directory "/some/path"))
     (call-interactively 'get-args-for-my-find-name-dired))))

(defun get-args-for-my-find-name-dired (dir pattern)
  (interactive "DFind-name (directory): \nsFind-name (filename wildcard): ")
  (list dir pattern))

そして、あなたはただ呼び出すだけmy-find-name-diredです。

大文字と小文字を区別しない場合は、変数をカスタマイズしfind-name-argて大文字と小文字を区別しないバージョンにすることができます。

(setq find-name-arg "-iname")
于 2009-12-03T00:56:42.700 に答える
1

Treyの答えはおそらくエレガントであり、私がgrok(defadvice)しようとするたびに私の脳を傷つけるいくつかの理由で好まれていると思いますが、私はブルートフォースの単純なアプローチを取り、次を使用します:

(setq my-dired-default-dir "/home/fred/lib")

(defun my-find-name-dired (pattern)
  "My version of find-name-dired that always starts in my chosen folder"
  (interactive "Find Name (file name wildcard): ")
  (find-name-dired my-dired-default-dir pattern))

私はこのアプローチで歴史を失うと推測しているので、それがあなたにとって重要であるならば、Treyのアプローチはより良いです。

ある日、頭を包み込まなければならない(defadvice)

于 2009-12-03T13:04:50.483 に答える
0

これを投稿した後、この問題を解決する別の方法を発見しました。

(add-hook 'find file-hook
 (lambda ()
  (setq default-directory command-line-default-directory)))

これは、私がemacsを開始したディレクトリをデフォルトとして残しました(これは、emacsのプロジェクトディレクトリを常に変更する必要がないので便利です)。

実際には、find fileを実行するたびに、デフォルトのディレクトリを開始コマンドラインディレクトリに変更すると言っていると思います。

もう1つは、デフォルトのディレクトリを設定することです。(setq my-default-directory "/ home / rob / whatever")

command-line-default-directoryをmy-default-directory/に置き換えます

于 2009-12-03T21:55:56.553 に答える