Сделать семантический поиск в 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 - хороший источник идей, если вам нужно больше.