Сделать семантический поиск в emacs cedet для включения каталогов

Cedet - хороший набор инструментов, но в конфигурации по умолчанию ему трудно найти включенные файлы.

Я хотел бы заставить его искать каталог с именем include/ в каждом родительском каталоге и получать оттуда файл.

например, файл /home/fakedrake/my-project/some-thing/something-else/file.c имеет #include "file.h"file.h находится в some-thing/file.h, но cedet не может его найти

Что было бы замечательно, так это заставить cedet искать файл file.h для создания дополнений в каталогах.

/home/fakedrake/my-project/some-thing/include/
/home/fakedrake/my-project/include/

(и я мог бы жить с этим, если бы он попытался найти

/include/
/home/include/
/home/fakedrake/include/ 

)

1 ответ

Решение

Вы можете использовать EDE для этого. Более того, он позволяет указывать разные пути включения для конкретных проектов. EDE является частью Cedet, поэтому вам не нужно ничего устанавливать.

Базовая настройка:

(global-ede-mode t)

Тогда для каждого проекта у вас должно быть что-то подобное:

(if (file-exists-p "~/dev/chanconf/Makefile")
    (ede-cpp-root-project "chanconf"
                          :name "Channel Config"
                          :file "~/dev/chanconf/Makefile"
                          :system-include-path '("/usr/include"
                                                 "/usr/include/boost")
                          :include-path '("/src"
                                          "/test/gtest/include")
                          :spp-table '(("BOOST_PROGRAM_OPTIONS_DECL" . ""))))

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

Статья Алекса Отта о Cedet - хороший источник идей, если вам нужно больше.

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