В этом репозитории находится плагин для VS Code, который добавляет поддержку Language Server для формата API Blueprint. Он базируется на протоколе Language Server Protocol и позволяет разработчикам более удобно работать с документацией API Blueprint в редакторах кода и IDE.
Хотя формат API Blueprint и основан на Markdown, их семантика сильно отличается. Там, где в Markdown описаны секции, параграфы и заголовки, в API Blueprint они означают различные структуры данных и кастомные типы.
Ввиду этого легко ошибиться в названии кастомного типа и получить ошибку парсинга или потеряться среди большого числа файлов документации. Чтобы помочь разработчикам с автодополнением названий структур, навигацией между разделами документации и другими полезными штуками, мы разработали эту имплементацию Language Server.
- Подсветка синтаксиса.
- Диагностические сообщения об ошибках парсинга документации.
- Переход к определению структур данных и Resource Prototypes.
- Хлебные крошки.
- Автодополнение.
├── client // Language Client
└── extension.js // Language Client entry point
├── package.json // The extension manifest.
└── server // Language Server
└── server.js // Language Server entry point
- Выполнить
npx @vscode/vsce package
в корневой директории. - Установить запакованное расширение по инструкции.
- Полученный пакет передать для установки другим заинтересованным лицам.
Расширение пока что недоступно в маркетплейсе.
Для работы с LS необходимо установить плагин LSP Support.
Последняя версия плагина (1.6.1) работает крайне не стабильно, а разработка приостановлена на неопределённый срок, поэтому рекомендуется установить версию 1.6.0.
Установка:
- Скачать архив LSP.zip.
- Перейти в раздел с плагинами в настройках IDE (Preferences → Plugins).
- Нажать на иконку шестерёнки и выбрать пункт «Install Plugin from Disk…».
- Указать путь до файла LSP.zip.
После успешной установки файл LSP.zip можно удалить.
Настройка плагина производится по пути Preferences → Languages & Frameworks → Language Server Protocol → Server Definitions.
Необходимо установить следующие настройки:
- В выпадающем меню выбрать
Executable
. - В поле Extension указать
apib
. - В поле Path указать полный путь до исполняемого файла
node
. - В поле Args первым аргументом указать полный путь до файла
server/server.js, а вторым, через пробел,
добавить текст
--stdio
. Пример:/full/path/to/vscode-apib-ls/server/server.js --stdio
.
Так же возможен вариант настройки с глобальной установкой LS в виде исполняемого файла.
Для этого необходимо в директории проекта выполнить команду npm link
, после
чего убедиться в том, что из терминала доступен вызов команды apibserver
.
Затем, в настройках плагина, в поле Path изменить значение на apibserver
,
а в поле Args на --stdio
.
Важно. После любых изменений настроек плагина лучше перезагрузить IDE.
Часто проекты содержат не один файл, а несколько. В этом случае можно определить структуры данных в одном файле, а использовать их в другом. При этом для корректной работы плагину необходимо знать корневой файл от которого собирать документацию. В противном случае плагин не сможет понять какие структуры данных являются корректными, а какие не определены.
По умолчанию, плагин пытается найти файл doc.apib
в корне проекта и
использовать его в качестве корня. Если такой файл не найден, то документация
считается однофайловой.
Если в проекте в качестве корневого используется файл отличный от doc.apib
,
то об этом можно сообщить плагину с помощью настройки:
File → Preferences → Settings → Extensions → API Blueprint → Entry Point
Если по каким-то причинам в файле не подсвечиваются ошибки, то первое, что надо проверить — подключается ли данный файл прямо или опосредованно в корень проекта.
- Выполнить
npm install
в корневой директории. - Открыть VS Code.
- Переключиться в Debug viewlet.
- Запустить
Launch Client
. - Открыть проект с APIB документацией или отдельный APIB-файл.
- Запустить
Attach to Server
.
Вместо отдельных шагов Launch Client
и Attach to Server
можно использовать
команду Client + Server
, но тогда APIB-файл нужно открывать достаточно
быстро, иначе команда Attach to Server
завершится с ошибкой.
Для отладки сервера можно использовать точки останова и отладочный вывод.
Для отладочного вывода можно использовать функцию connection.console.log
. При
этом результаты вывода необходимо искать в окне Extension Development Host
в
панели Output
- API Blueprint Language Server
.
Перед публикацией исходники расширения собираются в бандлы (отдельный бандл для client
, отдельный бандл для server
)
с помощью esbuild.
Чтобы собрать минифицированную версию бандла (аналогично той, которая будет опубликована), нужно выполнить npm run esbuild-min
.
Чтобы собрать читаемую версию бандла (например, для отладки сборки), нужно выполнить npm run esbuild
.
Кроме этого, можно проверить, какие файлы попадут в опубликованную версию. Для этого нужно выполнить команду
npx @vscode/vsce ls
. Если пакет @vscode/vsce
уже установлен глобально, то достаточно выполнить vsce ls
.
Клёвый логотип для проекта нарисовал Игорь Гарибальди.