Быстрый поиск файлов проекта с помощью Emacs EDE

Недавно я начал использовать EDE (через CEDET через ECB), пытаясь настроить Emacs в качестве разумной IDE для разработки в длинном проекте C/C++/Python.

Что-то, что было немного неудобно в настройке (так как я новичок в Emacs и Lisp), это быстрый поиск файлов. Решение, которое у меня есть на данный момент, состоит в том, чтобы создать исходный / пустой проект (для одного EDE не нужно знать, как управлять сборочными файлами или сборками), как в моем .emacs файл:

;; Enable EDE mode
(global-ede-mode 1)
;; EDE knows nothing of my project type, so use CSCope to inform it of the project
;; and its files
(setq ede-locate-setup-options
    '(ede-locate-cscope
      ede-locate-base))
;; This is probably a dubious shortcut allocation, 
;; but it's what I'm using at the mo.
(global-set-key (kbd "C-f") 'ede-find-file)
;; Set up the project for EDE
(ede-cpp-root-project "LargeApp" :file "/workspace/me/LargeApp/SConstruct")

M-x ede-find-file раньше вообще не работал, потому что EDE ничего не знал о файлах в каталоге проекта и его подкаталогах. Настройка файлов в проекте EDE заняла бы много времени (более 10000 файлов), но, к счастью, EDE понимает вывод CSCope, так что это было делом этого в корневом каталоге моего проекта с использованием небольшого сценария bash (на основе информации, связанной с главная страница проекта CScope):

   #! /usr/bin/env bash

   cd /workspace/me/LargeApp
   find /workspace/me/LargeApp \
        -type d -name '.git*' -prune -o \
        -type d -name '.svn*' -prune -o \
        -type d -name 'build' -prune -o \
        -type d -name 'bin' -prune -o \
        -type d -name 'lib' -prune -o \
        -name '*.h' -print -o \
        -name '*.hpp' -print -o \
        -name '*.c' -print -o \
        -name '*.cpp' -print -o \
        -name '*.cc' -print -o \
        -name '*.py' -print -o \
        -name '*.lua' -print -o \
        -name '*.xml' -print >./cscope.files
    cscope -b -q -k

EDE затем поднимает cscope.out в корневой папке проекта и казам!, M-x ede-find-file работает.

Тем не менее, есть одна главная проблема, с которой я пытаюсь разобраться:

Мне нужно ввести полное, чувствительное к регистру имя файла.

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

1 ответ

Я прибег к использованию M-x cscope-find-this-file вместо. Это вынуждает меня выбирать из возможных опций filepath в буфере, но делает разумную работу по быстрому получению нужного файла и не мешает чувствительности к регистру. Если я смогу подключить это к IDO, то оно должно делать именно то, что я хочу.

Для Python CScope/xcscope.el хорош, но не идеален для навигации по тегам Python. Итак, я начал использовать Elpy. M-x elpy-goto-definition работает очень хорошо для файлов Python, а для остальных (C/C++) я использую M-x cscope-find-this-symbol,

Другие вопросы по тегам