Ilya Danilkin
Senior Backend Engineer @ Avito. Scrum master. Android enthusiast. EN-RU translator.
Илья Данилкин
@nezorflame
GopherCon Russia 2020
09.08.2020
Language Server Protocol
LSP и Go
GoLand vs VSCode
Демонстрация работы
gopls
01
02
03
04
05
Итоги
06
Секция 01
Language Server Index Format
Подробности в блоге и на https://lsif.dev/
LSP-протокол - интерфейс
Language Server - его реализация
Секция 02
Секция 03
GopherCon Russia 2019:
Go, pls stop breaking my editor
Небольшой бинарник...
...и большая библиотека
| Пакет | Описание |
|---|---|
| gopls | исполняемый файл, плагины и тесты |
| internal/lsp | основной пакет для обработки сообщений |
| internal/lsp/cache | кэш |
| internal/lsp/cmd | обработка командной строки |
| internal/lsp/debug | вспомогательные функции для дебага |
| internal/lsp/protocol | обработка функций протокола |
| internal/lsp/source | реализация фич сервера |
| internal/span | управление адресацией файлов в пакете |
| internal/memoize | кэш вызова функций |
| internal/jsonrpc2 | реализация JSON RPC2 |
Cache
Session
View
Текущий статус, v1.0 milestone (61 issue)
Секция 04
vscode-go - расширение от Microsoft
| Feature | GoLand | VSCode |
|---|---|---|
| Автокомплит | ✅ | ✅ |
| Быстрые фиксы | ✅ | ⚠️ |
| Рефакторинг | ✅ | ⚠️ |
| Документация по наведению | ✅ | ✅ |
| Кодогенерация | ✅ | ✅ |
| Определение рекурсий | ✅ | ❌ |
| Поиск использования | ✅ | ✅ |
| Поиск имплементации | ✅ | ⚠️ |
| Работа с go.mod-файлом | ⚠️ | ✅ |
Секция 05
Секция 06
Илья Данилкин
@nezorflame
GopherCon Russia 2020
09.08.2020
By Ilya Danilkin
“Go, please”: language server под микроскопом. GopherCon Russia 2020, 09.08.2020.
Senior Backend Engineer @ Avito. Scrum master. Android enthusiast. EN-RU translator.