2015-07-30 3 views
0

Я ищу способ всегда запускать мой grep-find из определенного места, если установлена ​​переменная. Я имею в виду что-то вроде:Emacs использует переменную, если она установлена ​​в grep-find

  1. Launch Emacs из/дома/пользователя/mycode/
  2. Открыть файл (ы) в, например,/Главная/пользователь/mycode/A/B/C/
  3. Run Grep-найти из/дома/пользователя/mycode/

Я знаю, что это работает, если я первый открыть/дом/пользователь/mycode /, а затем запускает grep-find, но я хочу, чтобы это было сохранено как переменная. (Если переменная не установлена, было бы хорошо, чтобы просто сделать поиск от текущего местоположения)

Моя Grep-находка выглядит следующим образом:

(setq grep-find-command "find . '(' -type f ')' -print0 | xargs -0 -e grep -n -e ") 

ответ

1

Мне кажется, что вы выиграли бы от снаряда ,

Он делает то, что вам нужно. Он имеет рекурсивную команду grep, которая запускается из родительского каталога (он может также использовать git-grep или ag, намного быстрее grep), и он предлагает намного больше. Вы можете работать с несколькими проектами сразу (снаряд так умен).

Вы можете посмотреть на снаряде здесь: https://github.com/bbatsov/projectile

Он доступен через MELPA

Если вы не хотите использовать его (или аналогичные варианты), я бы посоветовал оборачивать ваш рекурсивную команду Grep в обычае функция, как это:

(defun rgrep-at-repo-base (...) 
    (interactive) 
    (with-temp-buffer 
    (while (and (not (file-exists-p ".git/")) 
       (not (equal "/" default-directory))) 
     (cd "..")) 
    (rgrep ...))) 

Где вы должны изменить логику для нахождения вашего кода базы из текущего каталога (пример работает для Git РЕПО) и установить аргументы нужно (если таковой имеется)

+0

Спасибо! Я думаю, что снарядом является то, что я хочу. Я пытался добавить файл .projectile в свой корневой каталог проекта, включая следующий контент: «- *. Txt» (игнорировать все .txt-файлы в поисках), но он, похоже, не распознает его. Должен ли я указывать где-нибудь, что должен использоваться .projectfile? – cfrost

Смежные вопросы