Files
nvim-modular/lua/custom/autocommands/quarto.lua
2025-08-24 19:39:28 +02:00

69 lines
2.4 KiB
Lua

-- Quarto autocommands file
--
local status_wk, wk = pcall(require, 'which-key')
if not status_wk then
return
end
local runner = require 'quarto.runner'
local group = vim.api.nvim_create_augroup('quarto_autocommands', { clear = true })
vim.api.nvim_create_autocmd('FileType', {
group = group,
desc = '',
pattern = 'quarto',
callback = function()
local init = function()
local quarto_cfg = require('quarto.config').config
quarto_cfg.codeRunner.default_method = 'molten'
vim.cmd [[MoltenInit]]
end
local deinit = function()
local quarto_cfg = require('quarto.config').config
quarto_cfg.codeRunner.default_method = 'slime'
vim.cmd [[MoltenInterrupt]]
vim.cmd [[MoltenDeinit]]
end
wk.add {
{ mode = { 'n', 'v', 'i' } },
{ -- Runner
{ '<leader>r', group = '[r]un', buffer = true },
{ '<leader>rc', runner.run_cell, desc = 'run [c]ell', buffer = true },
{ '<leader>ra', runner.run_above, desc = 'run [a]bove', buffer = true },
{ '<leader>rA', runner.run_all, desc = 'run [A]ll', buffer = true },
{ '<leader>rl', runner.run_line, desc = 'run [l]ine', buffer = true },
{ '<leader>rr', runner.run_range, desc = 'run [r]ange', buffer = true },
{ '<c-CR>', runner.run_cell, desc = 'run [c]ell', buffer = true, hidden = true },
},
{ -- Quarto
{ '<leader>Q', group = '[Q]uarto', buffer = true },
{ '<leader>Qp', '<CMD>QuartoPreview<CR>', desc = '[p]review Quarto', buffer = true },
{ '<leader>Qs', '<CMD>QuartoSend<CR>', desc = '[s]end to Quarto', buffer = true },
},
{ -- Molten
{ '<leader>M', group = '[M]olten', buffer = true },
{ '<leader>Mi', init, desc = '[i]nitialize Molten', buffer = true },
{ '<leader>Ms', deinit, desc = '[s]top Molten', buffer = true },
{ '<leader>Mp', '<CMD>MoltenPause<CR>', desc = '[p]ause Molten', buffer = true },
{ '<leader>Mr', '<CMD>MoltenRestart<CR>', desc = '[r]eset Molten', buffer = true },
},
{ -- Vim-slime
{ '<leader>S', group = '[S]lime', buffer = true },
{ '<leader>Ss', '<CMD>SlimeSend<CR>', desc = '[s]end to Slime', buffer = true },
{ '<leader>Sr', '<CMD>SlimeRestart<CR>', desc = '[r]estart Slime', buffer = true },
},
}
end,
})
vim.api.nvim_create_autocmd('VimResized', {
callback = function()
vim.g.molten_output_win_max_width = math.floor(vim.o.columns)
end,
})