Перейти к содержанию

Проблемы интеграции с Neovim

Симптом: команд нет, они ничего не делают, либо редактор и отладчик расходятся в состоянии.

Команды :DebugStart не существует

setup() не отработал. Проверьте путь в dir (lazy.nvim) или в rtp:prepend и то, что он указывает на корень репозитория — тот, где лежит lua/bugsaur/.

После правки конфига перезапустите Neovim либо выполните :source $MYVIMRC и вызовите setup заново.

Команда выполняется, но ничего не происходит

Проверяйте по порядку.

1. Ошибку, которую запомнил плагин

:lua print(vim.inspect(require("bugsaur").state.last_error))

2. Сокет

ls -l /tmp/rust-debugger-nvim-*.sock

3. Бинарник

:lua print(require("bugsaur").state.binary)

Это должен быть существующий исполняемый файл. binary в setup() — абсолютный путь к собранному отладчику, и именно поэтому глобально устанавливать bugsaur не обязательно.

Адаптер не находится, но только из Neovim

Окно, запущенное из Neovim, наследует окружение Neovim, а не вашего шелла. Адаптер, который command -v находит в терминале, может быть невидим для отладчика.

Либо экспортируйте PATH там, где его увидит Neovim, либо обойдите PATH вовсе, назвав бинарник в профиле:

adapter_command = "${root}/vendor/codelldb"

:DebugTest отказывается запускаться

Три правила, и все три намеренные:

  • Курсор должен быть внутри тестовой функции. В Rust годится и строка #[test]. На строке тестовой группы — mod tests — запускается вся группа.
  • Буфер должен быть сохранён. Бэкенд читает файл с диска.
  • Сохранённые точки останова не используются. Только точки текущего запроса.

Опции окна словно игнорируются

Три из четырёх читаются при запуске процесса GUI: gui_focus_on_stop, gui_theme, gui_layout. Правка init.lua и повторный :source ничего не сделают с уже открытым окном — закройте его и начните новую сессию.

auto_attach устроен иначе: он читается при каждом вызове setup().

А gui_theme и gui_layout применяются, только если проект промолчал. Секция [ui] в .bugsaur/config.toml выигрывает всегда, потому что она общая для всех, кто открывает проект. См. Настройка → Интерфейс.

Клавиши работают в редакторе, но не в окне

Это две отдельные системы привязок, и так и должно быть. Mappings Neovim до окна отладчика не дотягиваются: это отдельный процесс со своей обработкой клавиатуры.

Привязки окна приходят из gui_keymaps в setup(), а проект может перебить их по действиям через [ui.keymaps]. Нажмите F1 в окне, чтобы увидеть действующие. Полное объяснение: Клавиши.

Точки останова расходятся между редактором и отладчиком

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

Файл вне любого проекта. Файлу не под корнем .bugsaur/ сохраняться некуда; его точки живут до конца сессии редактора.

Использовался явный --break. Он заменяет сохранённый набор целиком, а не дополняет его.

См. Синхронизация точек останова.

Сессия пережила редактор

Так и задумано, это не ошибка. Закрытие Neovim не завершает сессию: бэкенд продолжает работать, а при повторном подключении приезжает актуальное состояние.

Чтобы прицепляться автоматически при следующем старте:

require("bugsaur").setup({ auto_attach = true })

Окно прячется за браузером

Частая история с PHP, где остановку вызывает запрос извне редактора. Либо поднимайте окно вручную через :DebugFocus, либо пусть поднимается само:

require("bugsaur").setup({ gui_focus_on_stop = true })