emacs - find-name-dired - как изменить каталог по умолчанию - PullRequest
1 голос
/ 03 декабря 2009

В emacs, когда вы набираете M-x find-name-dired, он выдаст вам два запроса. Во-первых, какой путь к каталогу вы хотите найти, а во-вторых, какой шаблон файла вы хотите найти.

Как мне изменить его (в моем .emacs), чтобы первое приглашение всегда было определенным каталогом проекта?

Кроме того, как мне сделать так, чтобы поиск имени файла был без учета регистра?

Ответы [ 3 ]

7 голосов
/ 03 декабря 2009

Чтобы получить другой начальный каталог, вы можете посоветовать функции читать аргументы, используя другой начальный каталог, например:

(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")
1 голос
/ 03 декабря 2009

Я подозреваю, что ответ Трея, вероятно, изящен и предпочтителен по некоторым причинам, которые причиняют боль моему мозгу всякий раз, когда я пытаюсь вздрогнуть (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))

Я предполагаю, что с этим подходом я теряю историю, поэтому, если это важно для вас, подход Трея лучше.

На днях я должен обернуть голову (defadvice)

0 голосов
/ 04 декабря 2009

После публикации я обнаружил другой способ решения этой проблемы:

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

Это оставило по умолчанию каталог, в котором я запустил emacs (что полезно, так что вам не нужно постоянно менять каталог вашего проекта в emacs).

В действительности, я думаю, что это говорит о том, что каждый раз, когда вы запускаете поиск файла, меняйте каталог по умолчанию на ваш начальный каталог командной строки.

Другая вещь может быть для установки некоторого каталога по умолчанию: (setq my-default-directory "/ home / rob / what")

и замените каталог командной строки-default-на my-default-directory /

...