Есть несколько проблем. Большинство из них уже решены независимыми и универсальными плагинами.
Относительно определения того, что такое проект.
Учитывая набор файлов в одном и том же каталоге, каждый файл может быть уникальным файлом проекта — у меня всегда есть каталог test/, в котором я размещаю домашние проекты или тестирую поведение компилятора. Напротив, файлы из набора каталогов могут быть частью одного и того же очень большого проекта.
В конце концов, что действительно определяет проект, так это (конечный) «makefile». И зачем ограничивать себя make-файлами, как насчет scons, autotools, ant, (b)jam, aap? Кстати, Sun-Makefiles или GNU-Makefiles?
Более того, я не вижу смысла в том, чтобы vim знал точные файлы в текущем проекте. И даже в этом случае хорошо известный плагин project.vim уже делает работа. Лично я использую плагин local_vimrc (я поддерживаю один, и я видел два других на SF ). С помощью этого плагина мне просто нужно поместить файл _vimrc_local.vim в каталог, и то, что в нем определено (:mappings, :functions, variable, :commands, :settings, ...) будет применяться к каждому файлу в каталог -- я работаю над большим проектом, имеющим дюжину подкомпонентов, каждый компонент живет в своем собственном каталоге, имеет свой собственный make-файл (даже без имени Makefile и без имени каталога)
Относительно понимания кода C++
Каждый раз, когда мы хотим сделать что-то сложное (рефакторинг, например, переименовать-функцию, переименовать-переменную, сгенерировать-переключение-из-текущей-переменной-которая-перечисление,...), нам нужно, чтобы vim понимал С++. Большинство существующих плагинов полагаются на ctags. К сожалению, понимание C++ ctags довольно ограничено — я уже написал несколько продвинутых вещей, но меня часто останавливает плохая информация, предоставляемая ctags. cscope не лучше. В конце концов, я думаю, нам придется интегрировать расширенный инструмент, такой как elsa/pork/ionk/deshydrata/....
NB: Вот на чем сейчас я концентрирую большую часть своих усилий.
Что касается Доксигена
Я не знаю, насколько сложно перейти к определению doxygen, связанному с текущим токеном. Первая трудность — понять, на чем стоит курсор (думаю, omnicppcomplete уже проделал большую работу в этом направлении). Вторая трудность будет заключаться в том, чтобы понять, как doxygen генерирует имя страницы для каждого символа из кода.
Открытие vim в нужной строке кода со страницы doxygen должно быть простым с помощью плагина Greasemonkey.
Что касается отладчика
Существует проект pyclewn для тех, кто запускает vim под Linux и с gdb в качестве отладчика. К сожалению, он не поддерживает другие отладчики, такие как dbx.
Ответы на другие требования:
- Когда я запускаю или отлаживаю свою скомпилированную программу, я бы хотел, чтобы всплывающее диалоговое окно запрашивало у меня параметры командной строки. Он должен помнить последние 20 или около того параметров, которые я использовал для проекта. Я не хочу редактировать свойства проекта для этого.
Мой плагин BuildToolsWrapper имеет параметр g:BTW_run_parameters (легко переопределяется решениями project/local_vimrc) . Добавить сопоставление для запроса используемых аргументов очень просто. (см. :h inputdialog())
- работа с системой контроля версий
Уже существует несколько плагинов, решающих эту проблему. Это не имеет ничего общего с C++ и не должно решаться пакетом C++.
person
Community
schedule
09.03.2009