- База
- Открыть склоненный проект на гитлабе
- Автоматически открывать markdown preview при открытии проекта
- Автоматически переключатся/создавать deveop ветку
- SQL Bootcamp
- Автоматический менеджмент postgres
- Шорткаты для переключения между упражнениями
- Запуск тестов если test.sql лежит в папке с упражнением
- Выполнение sql из буффера по шорткату
- Встроенный markdown preview
- SQL Bootcamp
Lazy
return {
's21toolkit/s21.nvim',
event = 'VeryLazy', -- Грузим сразу если cond удовлетворяет что бы превью сразу открывалось
cond = function() return vim.fn.getcwd():match('/s21/') ~= nil end,
dependencies = {
-- Нужен для менеджмента докером и дефолтным превью таски
-- 'stevearc/overseer.nvim',
-- Нужен для встроенного поведения sql.format а конкретно sql-formatter из его репозитория
-- 'williamboman/mason.nvim',
},
keys = {
{ '<leader>;', '<cmd>S21GitlabOpen<cr>', mode = { 'n', }, },
},
opts = {
switch = true, -- Автоматически переключатбся на develop или создавать его если ещё нету такой ветки
task = {
-- preview = false,
-- Можно определить кастомный раннер прямо тут. get_window_titles по дефолту работает на jq и hyprctl
preview = function ()
local api = require('s21.api')
if not api.window_title_contains(api:project_dir_name()--[[, { plain = true, get_window_titles = function() return 'title\ntitle' end }--]]) then
vim.system({ 'sh', '-c', 'chromium --new-window file://$(find "' .. vim.fs.joinpath(api:project_dir_name(), '" -type f -name "README*.md" -print -quit)'), })
end
end
},
sql = {
-- Угадывать ли количество упражнений в дне создавая структуру ex0X/day0Y_ex0X.sql
init = true,
-- Использовать sql-formatter из mason репозитория если mason
-- не установлен форматирования не будет
format = false,
encoding = "ascii",
-- Настройки контейнера постгреса
postgres = {
password = 'somepassword',
user = 'someuser',
db = 'school21'
port = 5432,
},
keymap = {
-- Все exec требуют установленный psql cli
-- проверки на его наличие нету как и встроенной установки
-- так что готовьтесь к ошибкам если его нету в PATH
psqlexec = '<leader>p', -- выполняет sql из текущего буффера
testexec = '<leader>\'', -- запускает тест если есть
nextexec = '\'', -- переходит к следующему упражнению выполняя его и прогоняя тесты если есть
prevex = ',', -- предыдущее упражнение
nextex = '.', -- следующее упражнение
}
},
},
}