Какой лучший способ передать несохраненный буфер в плагин vim? - PullRequest
1 голос
/ 27 декабря 2011

Я пишу плагин vim на основе clang для автоматического завершения; Я понимаю, что есть другие плагины, которые делают аналогичные вещи, но ни один из них не отвечает моим конкретным потребностям (расширение макросов).

Так или иначе, clang api для анализа файла принимает кучу переменных, включая несохраненный буфер для текущего открытого файла.

есть. Вы передаете как сохраненную копию файла, так и текущий несохраненный буфер, так что вы можете (например) выполнять автозаполнение при вводе, а не только после операции сохранения.

Итак, мой вопрос:

Как лучше всего получить необработанный несохраненный буфер в плагине vim и передать его во внешний исполняемый файл?

На ум приходят различные решения, например.

  1. Записать текущий буфер во временный файл и передать ссылку на временный файл во внешний exec.

  2. Плагин Python и модуль posix_ipc для создания сегмента общей памяти.

  3. Открыть поток для исполняемого файла и передать текущий буфер в него по одной строке за раз.

  4. Поток буфера в исполняемый файл через стиль сокета eclim.

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

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

1 Ответ

2 голосов
/ 27 декабря 2011

Предлагаемый способ передачи буфера во внешнюю программу: :w, например:

%w !cat -v

Убедитесь, что между w и ! есть пробел: w! имеет другое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...