Ответ 1
(Обновлено в первую очередь, чтобы включить фактические инструкции по установке для использования с указанным ниже файлом find-file-in-project.el из дистрибутива RINARI. Исходный ответ оставлен нетронутым, новые бит поступают после второго горизонтального правила.)
Посмотрите страницу TextMate в EmacsWiki. Самое многообещающее, о чем они упоминают, вероятно, этот Emacs Lisp script, который обеспечивает рекурсивный поиск в "каталоге проекта", управляемом некоторыми переменными, Этот файл начинается с обширной секции комментариев, описывающей, как ее использовать.
Что особенно важно, это следующий бит:
;; If `ido-mode' is enabled, the menu will use `ido-completing-read'
;; instead of `completing-read'.
Примечание. Я не использовал его сам... Хотя я могу очень хорошо попробовать его сейчас, когда я его нашел!: -)
НТН.
(BTW, что script является частью - для описания описания из GitHub - "Rinari Is Not A Rails IDE (это вспомогательный режим Emacs для Rails)". Если вы выполняете какую-либо Rails-разработку, вы можете проверить все это.)
Прежде чем продолжить, настройте ido.el. Серьезно, это должно быть само по себе, и это улучшит ваш опыт работы с файлом find-file-in-project. См. этот скринкаст Стюарта Хэллоуэй (о котором я уже упоминал в комментарии к этому ответу), чтобы узнать, почему вам нужно его использовать. Кроме того, Стю демонстрирует, насколько гибким является ido, эмулируя средство поиска файлов в TextMate по-своему; если его функция соответствует вашим потребностям, не читайте дальше.
Итак, вот как настроить RINARI find-file-in-project.el
:
-
Получить
find-file-in-project.el
иproject-local-variables.el
из дистрибутива RINARI и помещает куда-нибудь, где Emacs может их найти (что означает в одной из каталогов в переменнойload-path
, вы можете использовать(add-to-list 'load-path "/path/to/some/directory")
для добавления к нему новых каталогов). -
Добавьте
(require 'find-file-in-project)
в ваш.emacs
файл. Также добавьте следующее, чтобы последовательностьC-x C-M-f
отображала приглашение find-file-in-project:(global-set-key (kbd "C-x C-M-f") 'find-file-in-project)
. -
Создайте файл с именем
.emacs-project
в корневом каталоге проектов. Как минимум, он должен содержать что-то вроде этого:(setl ffip-regexp ".*\\.\\(clj\\|py\\)$")
. Это сделает так, что будут искать только файлы, имена которых и вclj
илиpy
; отрегулируйте регулярное выражение в соответствии с вашими потребностями. (Обратите внимание, что это регулярное выражение будет передано утилите Unixfind
и должно использоватьfind
предпочтительный синтаксис регулярных выражений. Вам все равно придется удваивать каждую обратную косую черту в регулярных выражениях, как это обычно бывает в Emacs; вам также нужно поставить обратную косую черту перед parens/pipe (|
), если вы хотите использовать их значение "волшебное" значение regex, зависит от ваших ожиданийfind
. Приведенный выше пример работает для меня в поле Ubuntu. на регулярные выражения в случае сомнений.) (Примечание: этот абзац был изменен в последнем правиле, чтобы исправить некоторую путаницу по правилу регулярных выражений.) -
C-x C-M-f
.
Существует несколько возможных настроек; в частности, вы можете использовать (setl ffip-find-options "...")
для передачи дополнительных параметров в команду Unix find
, которая вызывает find-file-in-project.el
под капотом.
Если что-то не работает, проверьте и дважды проверьте свое правописание - я сделал что-то вроде (setl ffip-regex ...)
один раз (обратите внимание на отсутствие окончательного "p" в имени переменной) и изначально был озадачен, обнаружив, что файлы не найдены.