nvim: Add quarto filetype setup
This commit is contained in:
parent
c75b7636e0
commit
7128edc57c
3 changed files with 108 additions and 28 deletions
94
nvim/.config/nvim/after/ftplugin/quarto.lua
Normal file
94
nvim/.config/nvim/after/ftplugin/quarto.lua
Normal file
|
@ -0,0 +1,94 @@
|
|||
-- Start quarto session
|
||||
local startsession = function(file, args)
|
||||
file = file or "/tmp/jupyter-magma-session.json"
|
||||
if args then file = args[0] end
|
||||
vim.fn.jobstart({ "jupyter", "console", "-f", file }, {
|
||||
on_stdout = function(_)
|
||||
vim.cmd("MagmaInit " .. file)
|
||||
vim.cmd("JupyterAttach " .. file)
|
||||
end,
|
||||
on_exit = function(_)
|
||||
vim.notify(string.format("jupyter kernel stopped: %s", file), vim.log.levels.INFO)
|
||||
end,
|
||||
stdin = nil
|
||||
})
|
||||
end
|
||||
vim.api.nvim_create_user_command("JupyterStart", function() startsession() end,
|
||||
{})
|
||||
|
||||
local map = vim.keymap.set
|
||||
-- filetype mappings
|
||||
-- PLUGIN: magma-nvim
|
||||
-- Operate jupyter notebooks from within vim
|
||||
map('n', '<localleader>cc', ':MagmaEvaluateLine<cr>', { silent = true })
|
||||
map('n', '<localleader>C', '?^```{<cr>jV/```<cr>k:<C-u>MagmaEvaluateVisual<cr>',
|
||||
{ silent = true, desc = 'Evaluate current code cell' })
|
||||
map('x', '<localleader>c', ':<C-u>MagmaEvaluateVisual<cr>', { silent = true })
|
||||
map('n', '<localleader>c', "nvim_exec('MagmaEvaluateOperator', v:true)",
|
||||
{ expr = true, silent = true, desc = '+code-evaluation' })
|
||||
map('n', '<localleader>cr', ':MagmaReevaluateCell<cr>', { silent = true })
|
||||
map('n', '<localleader>cu', ':MagmaShowOutput<cr>', { silent = true })
|
||||
map('n', '<localleader>cU', ':noautocmd :MagmaEnterOutput<cr>',
|
||||
{ silent = true, desc = 'MagmaEnterOutput' })
|
||||
map('n', '<localleader>cd', ':MagmaDelete<cr>', { silent = true })
|
||||
map('n', '<localleader>cs', ':MagmaInterrupt<cr>')
|
||||
map('n', '<localleader>ci', ':MagmaInit ')
|
||||
map('n', '<localleader>cD', ':MagmaDeinit<cr>')
|
||||
map('n', '<localleader>cR', ':MagmaRestart<cr>')
|
||||
|
||||
-- jump to beginning of previous/ next cell code
|
||||
map('n', ']c', '/^```{<cr>}:nohl<cr>', { desc = 'Next quarto cell' })
|
||||
map('n', '[c', '?^```<cr>n}:nohl<cr>', { desc = 'Previous quarto cell' })
|
||||
-- insert cell header above/below
|
||||
map('n', '<localleader>co', 'o```{python}<cr><cr>```<esc>k',
|
||||
{ desc = 'Insert quarto cell below' })
|
||||
map('n', '<localleader>cO', 'O```{python}<cr><cr>```<esc>k',
|
||||
{ desc = 'Insert quarto cell above' })
|
||||
|
||||
local bufnr = 0
|
||||
map('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<cr>',
|
||||
{ buffer = bufnr, desc = 'Previous diagnostic' })
|
||||
map('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<cr>',
|
||||
{ buffer = bufnr, desc = 'Next diagnostic' })
|
||||
map('n', '[e',
|
||||
'<cmd>lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})<cr>',
|
||||
{ buffer = bufnr, desc = 'Previous error' })
|
||||
map('n', ']e',
|
||||
'<cmd>lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})<cr>',
|
||||
{ buffer = bufnr, desc = 'Next error' })
|
||||
|
||||
-- TODO find better way to enable lsp key mappings for quarto buffers
|
||||
local prefix = require('which-key').register
|
||||
prefix({ ['<localleader>l'] = { name = "+lsp" } })
|
||||
map('n', '<localleader>li', '<cmd>LspInfo<cr>',
|
||||
{ buffer = bufnr, desc = 'Lsp Info' })
|
||||
map('n', '<localleader>ld', '<cmd>lua vim.diagnostic.open_float()<cr>',
|
||||
{ buffer = bufnr, desc = 'Line diagnostics' })
|
||||
map('n', '<localleader>la', '<cmd>lua vim.lsp.buf.code_action()<cr>',
|
||||
{ buffer = bufnr, desc = 'Codeactions' })
|
||||
map('n', '<localleader>ln', '<cmd>lua vim.lsp.buf.rename()<cr>',
|
||||
{ buffer = bufnr, desc = 'Rename element' })
|
||||
map('n', '<localleader>lr', '<cmd>lua vim.lsp.buf.references()<cr>',
|
||||
{ buffer = bufnr, desc = 'References' })
|
||||
if client and client.server_capabilities.document_formatting then
|
||||
map('n', '<localleader>lf', "<cmd>lua vim.lsp.buf.formatting()<CR>",
|
||||
{ buffer = bufnr, desc = 'Format document' })
|
||||
end
|
||||
|
||||
map('n', 'K', '<cmd>lua vim.lsp.buf.hover()<cr>',
|
||||
{ buffer = bufnr, desc = 'Hover definition' })
|
||||
map('n', 'gd', '<cmd>lua vim.lsp.buf.definition()<cr>',
|
||||
{ buffer = bufnr, desc = 'Definition' })
|
||||
map('n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<cr>',
|
||||
{ buffer = bufnr, desc = 'Declaration' })
|
||||
map('n', 'gs', '<cmd>lua vim.lsp.buf.signature_help()<cr>',
|
||||
{ buffer = bufnr, desc = 'Signature help' })
|
||||
map('n', 'gI', '<cmd>lua vim.lsp.buf.implementation()<cr>',
|
||||
{ buffer = bufnr, desc = 'Implementation' })
|
||||
map('n', 'gt', '<cmd>lua vim.lsp.buf.type_definition()<cr>',
|
||||
{ buffer = bufnr, desc = 'Type definition' })
|
||||
|
||||
if vim.b['sessionfile'] == nil then
|
||||
vim.b['sessionfile'] = vim.fn.tempname() .. '.json'
|
||||
startsession(vim.b['sessionfile'])
|
||||
end
|
|
@ -240,30 +240,3 @@ map('n', '<leader>ww', [[:lua require 'zettelkasten'.index_open()<cr> ]],
|
|||
-- PLUGIN: toggleterm.nvim
|
||||
-- create a lazygit window, set up in toggleterm settings
|
||||
map('n', '<leader>G', ':Lazygit<cr>')
|
||||
|
||||
-- PLUGIN: magma-nvim
|
||||
-- Operate jupyter notebooks from within vim
|
||||
map('n', '<localleader>mm', ':MagmaEvaluateLine<cr>', { silent = true })
|
||||
map('n', '<localleader>M', '?^```{<cr>jV/```<cr>k:<C-u>MagmaEvaluateVisual<cr>',
|
||||
{ silent = true, desc = 'Evaluate current quarto cell' })
|
||||
map('x', '<localleader>m', ':<C-u>MagmaEvaluateVisual<cr>', { silent = true })
|
||||
map('n', '<localleader>m', "nvim_exec('MagmaEvaluateOperator', v:true)",
|
||||
{ expr = true, silent = true })
|
||||
map('n', '<localleader>mr', ':MagmaReevaluateCell<cr>', { silent = true })
|
||||
map('n', '<localleader>ma', ':MagmaShowOutput<cr>', { silent = true })
|
||||
map('n', '<localleader>mq', ':noautocmd :MagmaEnterOutput<cr>',
|
||||
{ silent = true, desc = 'MagmaEnterOutput' })
|
||||
map('n', '<localleader>md', ':MagmaDelete<cr>', { silent = true })
|
||||
map('n', '<localleader>ms', ':MagmaInterrupt<cr>')
|
||||
map('n', '<localleader>mI', ':MagmaInit ')
|
||||
map('n', '<localleader>mD', ':MagmaDeinit<cr>')
|
||||
map('n', '<localleader>mR', ':MagmaRestart<cr>')
|
||||
|
||||
-- jump to beginning of previous/ next cell code
|
||||
map('n', ']c', '/^```{<cr>}:nohl<cr>', { desc = 'Next quarto cell' })
|
||||
map('n', '[c', '?^```<cr>n}:nohl<cr>', { desc = 'Previous quarto cell' })
|
||||
-- insert cell header above/below
|
||||
map('n', '<localleader>mo', 'o```{python}<cr><cr>```<esc>k',
|
||||
{ desc = 'Insert quarto cell below' })
|
||||
map('n', '<localleader>mO', 'O```{python}<cr><cr>```<esc>k',
|
||||
{ desc = 'Insert quarto cell above' })
|
||||
|
|
|
@ -87,6 +87,18 @@ return {
|
|||
}
|
||||
end,
|
||||
ft = "quarto"
|
||||
}, {
|
||||
"lkhphuc/jupyter-kernel.nvim",
|
||||
config = true,
|
||||
cmd = "JupyterAttach",
|
||||
build = ":UpdateRemotePlugins",
|
||||
keys = {
|
||||
{
|
||||
"<localleader>ck",
|
||||
"<Cmd>JupyterInspect<CR>",
|
||||
desc = "Inspect object in kernel"
|
||||
}
|
||||
}
|
||||
}, { 'micarmst/vim-spellsync', event = "VeryLazy" }, -- personal dict improvements for git sync
|
||||
{ 'folke/zen-mode.nvim', config = true, event = "VeryLazy" }, -- provide distraction free writing
|
||||
{ 'folke/twilight.nvim', event = "VeryLazy" }, -- provide even distraction free-er writing (lowlight paragraphs)
|
||||
|
@ -137,7 +149,8 @@ return {
|
|||
'nvim-treesitter/nvim-treesitter',
|
||||
build = ':TSUpdate',
|
||||
config = function() require('plug._treesitter') end
|
||||
}, { 'nvim-treesitter/playground', cmd = "TSPlaygroundToggle" }, -- interactively view and query the treesitter tree
|
||||
},
|
||||
{ 'nvim-treesitter/playground', cmd = "TSPlaygroundToggle" }, -- interactively view and query the treesitter tree
|
||||
{ 'romgrk/nvim-treesitter-context', event = "BufReadPre", config = true }, -- show current cursor context at top of buffer
|
||||
{
|
||||
'RRethy/nvim-treesitter-textsubjects', -- allows using . and ; to target treesitter branches
|
||||
|
|
Loading…
Reference in a new issue