kickstart.nvim/lua/kickstart/plugins/vim-slime.lua

35 lines
1.3 KiB
Lua

return {
{
'jpalardy/vim-slime',
init = function()
vim.g.slime_target = 'tmux'
local tmux_socket_name = vim.fn.split(vim.env.TMUX, ',')[1]
vim.g.slime_default_config = { socket_name = tmux_socket_name, target_pane = ':.2' }
vim.g.slime_python_ipython = 1
vim.g.slime_dispatch_ipython_pause = 100
vim.g.slime_cell_delimiter = '#\\s\\=%%'
vim.cmd [[
function! _EscapeText_quarto(text)
if slime#config#resolve("python_ipython") && len(split(a:text,"\n")) > 1
return ["%cpaste -q\n", slime#config#resolve("dispatch_ipython_pause"), a:text, "--\n"]
else
let empty_lines_pat = '\(^\|\n\)\zs\(\s*\n\+\)\+'
let no_empty_lines = substitute(a:text, empty_lines_pat, "", "g")
let dedent_pat = '\(^\|\n\)\zs'.matchstr(no_empty_lines, '^\s*')
let dedented_lines = substitute(no_empty_lines, dedent_pat, "", "g")
let except_pat = '\(elif\|else\|except\|finally\)\@!'
let add_eol_pat = '\n\s[^\n]\+\n\zs\ze\('.except_pat.'\S\|$\)'
return substitute(dedented_lines, add_eol_pat, "\n", "g")
end
endfunction
]]
end,
config = function()
vim.keymap.set({ 'n', 'i' }, '<C-e>', function()
vim.cmd [[ call slime#send_cell() ]]
end, { desc = 'send code cell to terminal' })
end,
}
}