Редакторы
outry lsp — языковой сервер, встроенный в CLI: те же проверки, имена и переменные, что в
outry check и приложении, но в вашем редакторе. Для VS Code (и Cursor, Windsurf, VSCodium) есть расширение
с просмотром ответов; любой другой редактор с LSP-клиентом подключает сервер напрямую, а подсветку даёт
грамматика tree-sitter из
editors/tree-sitter-outry.
Что умеет
Заголовок раздела «Что умеет»- Ошибки по мере набора — всё, что показывает
outry check: синтаксис, неизвестные запросы и формы (с исправлением «did you mean»), аргументы вызовов, циклы. - Предупреждения окружения — то, что показывает
outry check --envдля текущего окружения: неопределённые переменные и вызовы запросов, закрытыхonly. - Расхождения с Go-кодом — в Go-проекте то, что показывает
outry import go --check, на строках запроса и со ссылкой на обработчик. У расхождений, которые исправляет--fix, есть Quick Fix, а «Fix all differences with the code» правит весь файл. Несохранённые правки учитываются. - Автодополнение — поля запроса в начале строки, запросы и сценарии с параметрами, аргументы вызова,
переменные текущего окружения (секреты замаскированы), сохранённые значения,
letфайла, параметры, встроенные функции, методы значений после., формы послеmatches, окружения вonly: [...], частые заголовки. - Подсказка при наведении — значение переменной и откуда оно (
env.toml, хранилище паролей,OUTRY_*,save; секреты замаскированы), метод, путь, описание и параметры вызываемого запроса, поля формы. - Переход к определению — вызов → запрос или сценарий; переменная → её строка в
env.tomlиsave, которые её задают; форма → её объявление, а из объявления → Go-структура;handler:→ роут в Go. - Отправка — code lens «▶ Send · dev» над каждым запросом («▶ Run flow» над сценариями) и то же в
меню действий. Ответ пишется в
~/.cache/outry/responses/<Name>.httpи открывается рядом с запросом, итог — сообщением. Вызовы, кеш прогона, cookies и сохранённые значения работают как в приложении;confirm: trueсначала спрашивает. - Форматирование —
outry fmtкак форматирование документа. - Outline — запросы, сценарии, формы и
letфайла.
VS Code
Заголовок раздела «VS Code»Установите Outry API Client из Visual Studio Marketplace,
а в Cursor, Windsurf и VSCodium — из Open VSX. В пакетах для
Linux, macOS и Windows outry уже внутри, больше ничего не нужно. На других платформах
установите CLI: расширение найдёт его в PATH или в ~/.local/bin, либо укажите
outry.path. В каждом релизе есть и файлы .vsix — для
Extensions → ⋯ → Install from VSIX….
Сверх всего, что выше, расширение добавляет:
- Ответ рядом с файлом. ▶ Send (или Ctrl+Enter на любой строке запроса) открывает
тот же вид, что в приложении: тело с подсветкой и поиском, предпросмотр картинок и HTML, заголовки, проверки
из
expect, trace вызванных запросов, запрос в том виде, как ушёл, и сохранение тела в файл. У сценария — его проверки и trace. - in… — отправить один раз в другом окружении, не переключаясь;
confirm: trueсначала спросит. - Copy as curl — запрос с подставленными переменными, вызовами (
Login().body.token) и cookies прогона. Вызовы отправляются, сам запрос — нет. - Окружение в строке состояния, запоминается для рабочей папки.
- Боковая панель — запросы и сценарии проекта по папкам (щелчок открывает, ▶ отправляет) и переменные текущего окружения с источником каждой; секреты замаскированы.
| Настройка | По умолчанию | |
|---|---|---|
outry.path |
бинарь из пакета, затем PATH |
Путь к outry |
outry.env |
default из env.toml |
С какого окружения начинать |
outry.keyring, outry.import, outry.goDir |
Как keyring, import, goDir в Настройках |
Вывод языкового сервера — в Output → Outry; Outry: Restart Language Server перезапускает его
(например, после outry update).
Neovim 0.11 или новее:
vim.filetype.add({ extension = { outry = "outry" } })
vim.lsp.config("outry", { cmd = { "outry", "lsp" }, filetypes = { "outry" }, root_markers = { "env.toml", ".git" }, -- init_options = { env = "dev" }, handlers = { -- Перечитать файл ответа, если он уже открыт. ["window/showDocument"] = function(err, params, ctx) local result = vim.lsp.handlers["window/showDocument"](err, params, ctx) vim.cmd.checktime() return result end, },})vim.lsp.enable("outry")
-- Code lens: обновлять и отправлять запрос под курсором.vim.api.nvim_create_autocmd({ "LspAttach", "BufEnter", "InsertLeave" }, { pattern = "*.outry", callback = function(ev) vim.lsp.codelens.refresh({ bufnr = ev.buf }) end,})vim.keymap.set("n", "<leader>rs", vim.lsp.codelens.run, { desc = "Outry: send" })Подсветка: соберите парсер и скопируйте запросы (Neovim берёт parser/ и queries/ из runtimepath):
git clone --depth 1 https://github.com/1rowvy/outry /tmp/outrycd /tmp/outry/editors/tree-sitter-outrymkdir -p ~/.local/share/nvim/site/parser ~/.config/nvim/queries/outrycc -shared -fPIC -O2 -I src -o ~/.local/share/nvim/site/parser/outry.so src/parser.ccp queries/highlights.scm ~/.config/nvim/queries/outry/vim.api.nvim_create_autocmd("FileType", { pattern = "outry", callback = function() vim.treesitter.start() end,})В ~/.config/helix/languages.toml:
[language-server.outry]command = "outry"args = ["lsp"]
[[language]]name = "outry"scope = "source.outry"file-types = ["outry"]roots = ["env.toml"]comment-token = "//"block-comment-tokens = { start = "/*", end = "*/" }indent = { tab-width = 2, unit = " " }language-servers = ["outry"]
[[grammar]]name = "outry"# rev: ветка, тег или коммит репозитория outrysource = { git = "https://github.com/1rowvy/outry", rev = "master", subpath = "editors/tree-sitter-outry" }hx --grammar fetch && hx --grammar buildmkdir -p ~/.config/helix/runtime/queries/outrycurl -fsSL https://raw.githubusercontent.com/1rowvy/outry/master/editors/tree-sitter-outry/queries/helix/highlights.scm \ -o ~/.config/helix/runtime/queries/outry/highlights.scmВ Helix нет code lens: Send — в меню действий (Space a) на любой строке
запроса. Если файл ответа уже открыт, новый ответ покажет :reload.
Другие редакторы
Заголовок раздела «Другие редакторы»Подойдёт любой LSP-клиент: команда outry lsp, транспорт stdio (--stdio принимается и ничего не
меняет), язык outry, файлы *.outry.
Грамматику из editors/tree-sitter-outry (queries/highlights.scm — в именах захватов nvim-treesitter и
Zed) можно подключить в любом редакторе, который загружает грамматики tree-sitter.
Настройки
Заголовок раздела «Настройки»Передаются в initializationOptions (init_options в Neovim) или позже через
workspace/didChangeConfiguration как { "outry": { … } }:
| Настройка | По умолчанию | Что делает |
|---|---|---|
env |
default из env.toml |
Окружение для переменных, предупреждений и Send |
keyring |
true |
Брать секреты из системного хранилища паролей |
import |
true |
Сравнивать запросы с Go-кодом |
goDir |
родитель api/, иначе папка проекта |
Папка с Go-кодом относительно корня рабочей папки |
outry lsp --env <ENV> и --no-keyring делают то же из командной строки.
Команды (workspace/executeCommand) — для сочетаний клавиш и расширений редакторов:
| Команда | Аргументы | |
|---|---|---|
outry.run |
[uri, line, env?] |
Отправить запрос или запустить сценарий на строке line (с 1), в окружении env, если оно передано, иначе в текущем. Возвращает итог в JSON |
outry.curl |
[uri, line, env?] |
Запрос на строке line командой curl (строкой). Вызовы в нём отправляются, сам запрос — нет |
outry.selectEnv |
[env] или ничего |
Сменить окружение; без аргумента редактор предложит выбор |
Если окружений несколько, code lens «env: dev» над первым запросом вызывает outry.selectEnv.