Vim: загрузить файл синтаксиса из локального каталога - PullRequest
0 голосов
/ 09 мая 2018

Я хотел бы иметь возможность создать файл синтаксиса vim для конкретного проекта, чтобы выделить идентификаторы, уникальные для этого проекта. Конечно, я мог бы установить файл синтаксиса в $HOME/.vim/after/syntax/*.vim, но я хочу настроить его как конфигурацию для каждой папки. Файл синтаксиса проекта должен добавить к существующему файлу синтаксиса, а не заменять его. Я также хочу общее решение, которое автоматически загружает локальный файл, если он существует, и его не нужно настраивать для конкретных каталогов в .vimrc или в плагине.

Редактировать: Это похоже на вопрос Vim: применить настройки к файлам в каталоге , но это касается настроек в .vimrc, который загружается перед файлами синтаксиса. Файлы синтаксиса обычно стирают предопределенную информацию о синтаксисе, поэтому не рекомендуется устанавливать эту информацию в .vimrc, и поэтому методы загрузки альтернативных файлов .vimrc бесполезны. Я не знаю, как вызвать дополнительные «после» файлы для загрузки. Я видел этот вопрос ранее, но ответов не было, кроме тех, которые относятся к .vimrc.

Я настроил локальные файлы .vimrc с помощью :set exrc и убедился, что эти файлы загружаются, но определения синтаксиса в .vimrc перезаписываются файлами синтаксиса, которые загружаются позже. (И я хочу, чтобы синтаксис проекта добавлялся к стандартному синтаксису, а не заменял его.)

Является ли похожая функциональность, будь то функция vim или плагин, которая может использоваться для локальных файлов "после" синтаксиса?

1 Ответ

0 голосов
/ 11 мая 2018

Я адаптировал решение на основе этого ответа: https://stackoverflow.com/a/13192721/2150289. Хотя я все еще хотел бы изучить другие варианты, если они существуют, это работает. Оставляя это как отдельный вопрос и ответ, поскольку ответы .vimrc не применяются, и не очевидно, что это возможно для файла синтаксиса.

В моем каталоге проектов у меня есть локальный .vimrc, который устанавливает вкладки и так далее. Это загружается set exrc или любым другим методом, который загружает локальный .vimrc.

Чтобы загрузить файлы «после», вы можете последовательно соединить их с файлом «после», который загружается в ваш каталог .vim / after. Например, у меня есть файл .vim_syntax_cpp.vim с синтаксисом C ++, специфичным для проекта. Я размещаю это каталог проекта:

PROJECT/
  .vimrc           # gets loaded by set exrc
  .vim_syntax_cpp  # daisy chained from .vim/after/syntax/cpp.vim
  Makefile
  foo.cpp
  bar.cpp

В ~ / .vim / after / syntax / cpp.vim я размещаю этот код:

" load syntax file if it exists in the
" current directory or parent directory
if filereadable(".vim_syntax_cpp.vim")
    source .vim_syntax_cpp.vim
elseif filereadable("../.vim_syntax_cpp.vim")
    source ../.vim_syntax_cpp.vim
endif

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

Этот метод имеет ограничения; см. комментарии в связанном ответе .

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