Использование Emacs для больших больших проектов - PullRequest
15 голосов
/ 02 апреля 2010

Возможно, это часто повторяемый вопрос, но я не могу найти ничего похожего с поиском. Дело в том, что мне нравится использовать Emacs для моих личных проектов, обычно очень маленьких приложений, использующих C или python, но мне было интересно, как использовать его и для моей работы, в которой у нас есть проект с примерно 10k файлами исходного кода, очень большой (на самом деле я использую источник понимания, это очень хороший инструмент, но только для окон), вопросы:

  • Поиск: Какой самый удобный способ поиска строки во всем проекте?
  • Навигация по функции: я имею в виду что-то вроде наведения курсора на функцию, define, var и перехода к определению
  • Рефакторинг

Также, если у вас есть какой-то опыт с этим и вы хотите поделиться своими мыслями, я буду считать это очень интересным.

Br

Ответы [ 8 ]

10 голосов
/ 02 апреля 2010

«Традиционный» способ навигации по исходным файлам на C - это использовать «etags» для создания файла с именем TAGS, а затем использовать ALT-. чтобы перейти к функциям в файлах.

Для поиска строк в файлах я обычно использую "grep". Вы можете создать сценарий оболочки со всеми каталогами, которые хотите найти, или что-то в этом роде, если вам надоело каждый раз набирать их.

9 голосов
/ 02 апреля 2010

Мои проекты обычно живут в git, поэтому я собрал их для быстрого поиска:

;; There's something similar (but fancier) in vc-git.el: vc-git-grep
;; -I means don't search through binary files
(defcustom git-grep-switches "--extended-regexp -I -n --ignore-case"
  "Switches to pass to `git grep'."
  :type 'string)

(defun git-grep (command-args)
  (interactive
   (list (read-shell-command "Run git-grep (like this): "
                             (format "git grep %s -e "
                                     git-grep-switches)
                             'git-grep-history)))
  (let ((grep-use-null-device nil))
    (grep command-args)))
6 голосов
/ 02 апреля 2010

Существует также Emacs Code Browser. Это делает исследование проектов намного проще. См. здесь и здесь для получения дополнительной информации.

4 голосов
/ 02 апреля 2010

Что касается поисков по всему проекту, я считаю чрезвычайно полезной команду rgrep .

Кроме того, имя очень удобно для перехода к определению функции в том же файле.

Это мои 2р.

3 голосов
/ 03 апреля 2010

ЕЦБ слишком тяжелый на мой вкус. У меня были хорошие результаты с xcscope. Само собой разумеется, это не слишком помогает с Python.

http://www.emacswiki.org/emacs/CScopeAndEmacs

3 голосов
/ 02 апреля 2010

посмотрите на EDE из CEDET - он обеспечивает базовую поддержку для проектов ...

2 голосов
/ 21 августа 2011

Существует множество способов, которыми Сосульки могут помочь с проектами . Аналогично, Закладка + и даже Dired + .

Эти библиотеки могут помочь вам создавать, организовывать и управлять проектами, где бы ни находились их файлы и каталоги. И они могут помочь вам перемещаться и искать различными способами.

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

2 голосов
/ 02 апреля 2010

В дополнение к использованию тегов, как уже упоминалось, я считаю igrep и igrep-find очень полезными. Также есть встроенные Emacs grep и grep-find, но я считаю их интерфейс более неуклюжим.

Мой стандартный поиск:

M-x igrep-find some_regexp RET ~/work_area/*.cxx

, который будет искать все *.cxx файлы в ~/work/area и показывать результаты, соответствующие some_regexp. Как и все утилиты поиска, он заполняет буфер, подобный компиляции, по которому вы можете перемещаться, используя C-x ` (он же M-x next-error ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...