Emacs: Как я могу быстро найти файл в моем проекте? - PullRequest
1 голос
/ 11 марта 2012

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

Моя конфигурация указана ниже

(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"))

И есть ли какие-либо предложения по управлению проектами и поиску файлов?(Я также пытался найти файл-в-проекте).

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

Ответы [ 6 ]

11 голосов
/ 12 марта 2012

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

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

4 голосов
/ 12 марта 2012

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

3 голосов
/ 12 марта 2012

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

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

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

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

2 голосов
/ 12 марта 2012

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

0 голосов
/ 02 сентября 2013

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

0 голосов
/ 10 июля 2013

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

...