Два новых экземпляра протокола языкового сервера

Первый связан с Github Copilot, а второй к PostgreSQL. Они обеспечивают бесшовную интеграцию с любым инструментом, поддерживающим протокол.

Протокол языкового сервера или сокращенно LSP - это то, что позволяет IDE действовать умно: автозавершение, переход к определению, наведение на документацию, выдача подсказок и т. д. LSP - это попытка стандартизации, чтобы любая IDE или инструмент с его поддержкой могли интегрировать функции, подобные вышеупомянутым, для множества языков с минимальными усилиями.

В битве IDE до недавнего времени выбор языка программирования определял и выбор IDE для разработки. Но с появлением LSP, который отделяет язык от редактора, границы размылись, поскольку любая IDE теперь может поддерживать любой язык. Поэтому в наши дни почти все IDE работают с LSP за кулисами по модели клиент-сервер; наиболее популярными из них являются редакторы Jetbrains и VSCode.

Однако поддержка LSP, хотя и связана с языками программирования (например, для Perl существует Perl::LanguageServer), может быть применима и в других случаях. Два из них мы рассмотрим здесь.

Первый - это недавно анонсированный Microsoft Copilot Language Server SDK. Он позволяет любому редактору или IDE интегрироваться с GitHub Copilot через LSP. Это даёт доступ к таким функциям, как предсказание того, что разработчик может набрать следующим, на основе того, что он уже набрал, общение с Copilot, как в ChatGPT, или генерация сообщений коммита с помощью искусственного интеллекта.

Второй экземпляр LSP, более интересный, - это LSP для PostgreSQL от Supabase:

реализация протокола Language Server Protocol (LSP) для Postgres и набор языковых инструментов, ориентированных на надежный SQL-инструментарий и опыт разработчиков.

Этот первоначальный выпуск сервера поддерживает следующее:

  • Автозавершение
  • Выделение синтаксических ошибок
  • Проверка типов (с помощью EXPLAIN-выявления ошибок)
  • Linter, созданный по мотивам Squawk

и доступен для VSCode и Neovim в виде плагинов.

Но LSP не ограничивается IDE; любой инструмент может использовать его преимущества. Так, PostgreSQL LSP доступен из CLI, HTTP API или модулей WebAssembly. За кулисами он использует настоящий парсер Postgres, libpg_query, что гарантирует 100-процентную совместимость с синтаксисом SQL-диалекта PostgreSQL.

Оба могут быть установлены с помощью NPM. Чтобы интегрироваться с Copilot Language Server, загрузите последнюю версию с npm:

npm install @github/copilot-language-server

Для запуска языкового сервера в каталоге native пакета npm доступны бинарные файлы для конкретной платформы. Например, для macOS на arm64:

./node_modules/@github/copilot-language-server/native/darwin-arm64/copilot-language-server --version

Общение с языковым сервером обычно происходит через stdio с параметром --stdio. Дистрибутив language-server.js дополнительно поддерживает Node IPC с помощью --node-ipc.

Что касается PostgreSQL, выполните следующие команды в директории, содержащей файл package.json.

npm add --save-dev --save-exact @postgrestools/postgrestools

Теперь вы можете использовать его через командную строку в виде Postgres Tools или с помощью редактора кода, поддерживающего LSP, используя LSP Proxy, при выполнении которого порождаются два процесса:

демон, выполняющий запрошенные операции;
сервер, который функционирует как прокси между запросами клиента - редактора - и сервера - демона; Если ваш редактор способен взаимодействовать с сервером и отправлять JSON-RPC-запросы, вам нужно только настроить редактор на выполнение этой команды.

Два новых экземпляра протокола языкового сервера
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
03 мая
341
Теги: Copilot , PostgreSQL , Github

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще

Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!

Только свежие новости программирования и технологий каждый день.

Свежие посты