Я пишу плагин vim на основе clang для автоматического завершения; Я понимаю, что есть другие плагины, которые делают аналогичные вещи, но ни один из них не отвечает моим конкретным потребностям (расширение макросов).
Так или иначе, clang api для анализа файла принимает кучу переменных, включая несохраненный буфер для текущего открытого файла.
есть. Вы передаете как сохраненную копию файла, так и текущий несохраненный буфер, так что вы можете (например) выполнять автозаполнение при вводе, а не только после операции сохранения.
Итак, мой вопрос:
Как лучше всего получить необработанный несохраненный буфер в плагине vim и передать его во внешний исполняемый файл?
На ум приходят различные решения, например.
Записать текущий буфер во временный файл и передать ссылку на временный файл во внешний exec.
Плагин Python и модуль posix_ipc для создания сегмента общей памяти.
Открыть поток для исполняемого файла и передать текущий буфер в него по одной строке за раз.
Поток буфера в исполняемый файл через стиль сокета eclim.
Я понятия не имею, какой из них является лучшим выбором, или есть ли другой способ сделать это лучше.
Мне нравится идея использования сегмента общей памяти, просто потому, что это сделает плагин невероятно быстрым, но я не вижу никакого способа сделать это в переносном режиме.