Проблемы интеграции с Neovim¶
Симптом: команд нет, они ничего не делают, либо редактор и отладчик расходятся в состоянии.
Команды :DebugStart не существует¶
setup() не отработал. Проверьте путь в dir (lazy.nvim) или в rtp:prepend и
то, что он указывает на корень репозитория — тот, где лежит lua/bugsaur/.
После правки конфига перезапустите Neovim либо выполните :source $MYVIMRC и
вызовите setup заново.
Команда выполняется, но ничего не происходит¶
Проверяйте по порядку.
1. Ошибку, которую запомнил плагин
2. Сокет
3. Бинарник
Это должен быть существующий исполняемый файл. binary в setup() — абсолютный
путь к собранному отладчику, и именно поэтому глобально устанавливать bugsaur
не обязательно.
Адаптер не находится, но только из Neovim¶
Окно, запущенное из Neovim, наследует окружение Neovim, а не вашего шелла.
Адаптер, который command -v находит в терминале, может быть невидим для
отладчика.
Либо экспортируйте PATH там, где его увидит Neovim, либо обойдите PATH
вовсе, назвав бинарник в профиле:
: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 не завершает сессию: бэкенд продолжает работать, а при повторном подключении приезжает актуальное состояние.
Чтобы прицепляться автоматически при следующем старте:
Окно прячется за браузером¶
Частая история с PHP, где остановку вызывает запрос извне редактора. Либо
поднимайте окно вручную через :DebugFocus, либо пусть поднимается само: