2012-03-11 2 views
1

Теперь я использую ede для управления моим проектом cpp, и я пытаюсь быстро найти файл в своем проекте, но я потерпел неудачу. Я использовал ede-find-file, чтобы найти «db.h», он находится в «d: /projects/leveldb/include/db.h», к сожалению, он сказал, что не может найти.Emacs: Как быстро найти файл в моем проекте?

Мой конфиг ставится ниже

(setq leveldb_root "d:/projects/leveldb/") 

(ede-cpp-root-project 
    "leveldb" 
    :file (concat leveldb_root ".gitignore") 
    :system-include-path '("C:/Program Files/Microsoft SDKs/Windows/v7.1/Include" 
         "C:/Program Files (x86)/Microsoft Visual Studio 9.0/VC/include") 
    :include-path '("/" 
       "/include")) 

И, есть ли какие-либо предложения для управления проектами и поиска файлов решение? (Я также попробовал find-file-in-project).

Я использую ede, потому что мне нужен ede-cpp-root-project для автоматического набора semanticdb.

+0

[см. Этот вопрос] (http://stackoverflow.com/questions/9396967/emacs-what-are-good-tactics-for-navigating-directories-and-opening-files) для некоторых общих советов для эффективного файла поиск – Tom

+0

проверить [ответ на этот вопрос] (http://stackoverflow.com/questions/7970537/emacs-find-file-in-project-on-a-big-project/) тоже. – Tom

ответ

11

Взгляните на projectile. Projectile - это библиотека взаимодействия проекта для Emacs. Его цель - предоставить хороший набор функций, работающих на уровне проекта, без введения внешних зависимостей. Например, поиск файлов проекта выполняется в чистом elisp без использования GNU find.

Эта библиотека обеспечивает легкое управление проектами и навигацию. Концепция проекта довольно проста - просто папка, содержащая специальный файл. В настоящее время git, mercurial и bazaar repos считаются проектами по умолчанию. Если вы хотите пометить папку вручную в качестве проекта, просто создайте пустой файл .projectile.

+0

Теперь я использую снаряд, спасибо! – jiluo

+1

@Bozhidar вы попробовали что-нибудь в пакете завершения? Мне кажется странным, как так много людей так очарованы идо. Ага. * Enchanted * - лучшее, что я могу придумать для этого. Теперь, когда я привык ко всему. Я просто попробовал ваш проект «projectile», и ido в основном неприменим для больших списков (т. Е. Файлов 3k в моем проекте). –

+0

Да, у меня есть. Я действительно нахожу, что ido менее навязчивый, но с гибким сопоставлением очень легко просеивать, хотя многие опции представлены ido. –

2

Ну, я действительно не знаю, как решить вашу конкретную проблему, но я могу попытаться исправить это. Если вы устанавливаете пакет ido (http://www.emacswiki.org/emacs/InteractivelyDoThings), вы можете обычно находить файлы так быстро. На мой взгляд, это решение для поиска файлов.

+2

Я хочу что-то вроде возвышенного текста 2 «Функция Goto file», это означает, что я могу найти какой-нибудь файл, просто набрав несколько символов, независимо от того, находится ли файл в текущем каталоге или поддиректориях. Ido может показывать только файлы в текущем каталоге. Или есть какой-то способ настроить его так, чтобы Ido мог дать мне предложение для файлов в subdirs? – jiluo

+0

[For anything.el] (http://metasandwich.wordpress.com/2010/07/30/what-can-i-get-for-10-dolla-anything-el/) кто-то создал [поддержку файла проекта] (http://metasandwich.com/2010/08/10/anything-project-files-el/). Вы можете проверить это. – Tom

+0

Теперь я использую снаряд, спасибо! – jiluo

4

Одно из решений, которое я использую для своих проектов на C/C++, использует GNU Global. Вы можете использовать модуль gtags с Emacs, который превосходит встроенную систему тегов. После того, как вы установили GNU Global и настроили параметры Emacs, вы можете запустить gtags с верхнего уровня исходного дерева для генерации тегов. Теперь, если вы запустите файл M-x gtags-find-file, чтобы открыть файл, который был проиндексирован Global. Для удобства использования вы можете связать эту команду с удобным для вас нажатием клавиши.

+0

Я хочу что-то интегрированное с emacs, а не программное обеспечение вне emacs. Поэтому я не предпочитаю что-то вроде «find» или «gtags». В любом случае, благодарю Вас! Если я не смогу найти какое-либо решение, я попробую gtags – jiluo

3

Для оригинальных типов проектов ede, таких как те, которые сгенерированы или , читайте файлы Automake, EDE знает все файлы и где они находятся, если они скомпилированы в вашу программу.

Для ede-cpp-root у него нет списка используемых файлов, поэтому он действительно будет искать только в текущем каталоге или включить путь. Путь включения - это ключ, так как он необходим для умного завершения.

Если вы хотели бы использовать ede-find-file для открытия общего файла, вы можете интегрировать во внешнем инструменте, как GNU Global, или idutils как база данных бэкэнда для обоего файлов. Вы также можете включить использование вашей системы locate.

Настроить ede-locate-setup-options, чтобы включить любой инструмент, который вы бы использовали , а затем он должен работать по желанию.

+0

Спасибо за ваш ответ! – jiluo

+0

@ Эрик - Спасибо! Ваш совет помог мне найти базовый файл, который можно найти в большом проекте. Любой шанс я могу искусить вас взглянуть на следующий вопрос, который я разместил здесь: [Быстрый поиск файлов проекта с использованием emacs EDE] (http://stackoverflow.com/questions/23950534/quickly-finding-project -Files-использующие-Emacs-Эде) – Rob

0

Или вы можете попробовать xcscope.el, это невероятно быстро, чтобы найти нужные вам файлы (+ больше). Вы правильно настроили свою базу данных cscope.

0

Еще одна альтернатива - gpicker. Это на самом деле внешний инструмент, но есть интеграционный плагин для emacs. Он обеспечивает нечеткий поиск файлов проекта относительно его относительных путей и делает его довольно быстрым. Я использую его около трех лет и настоятельно рекомендую попробовать gpicker других пользователей emacs.