nvim: Clean up markdown/quarto key maps

This commit is contained in:
Marty Oehme 2025-02-06 12:49:10 +01:00
parent 7d616c1cb5
commit 9d15bc79f4
Signed by: Marty
GPG key ID: EDBF2ED917B2EF6A
3 changed files with 21 additions and 36 deletions

View file

@ -11,22 +11,20 @@ if require("core.util").is_available("zk") and require("zk.util").notebook_root(
map("n", "<CR>", "<cmd>lua vim.lsp.buf.definition()<cr>", { silent = true }) map("n", "<CR>", "<cmd>lua vim.lsp.buf.definition()<cr>", { silent = true })
end end
-- edit code cells with full lsp access
map("n", "<localleader>ce", "<cmd>FeMaco<cr>", { silent = true, desc = "edit code block" })
-- execute code cells -- execute code cells
if not vim.fn.mapcheck("<localleader>cc") then if vim.fn.mapcheck("<localleader>cc") == "" then
map("n", "<localleader>cc", "<cmd>MdEval<cr>", { silent = true, desc = "evaluate code block" }) map("n", "<localleader>cc", require("mdeval").eval_code_block, { silent = true, desc = "evaluate code block" })
end end
if not vim.fn.mapcheck("<localleader>cx") then if vim.fn.mapcheck("<localleader>cx") == "" then
map("n", "<localleader>cx", "<cmd>MdEvalClean<cr>", { silent = true, desc = "clear code results" }) map("n", "<localleader>cx", require("mdeval").eval_clean_results, { silent = true, desc = "clear code results" })
end end
-- jump to beginning of previous/ next cell code -- jump to beginning of previous/ next cell code
map("n", "]c", "/^```<cr>}:nohl<cr>", { desc = "next code cell" }) map("n", "]c", "/^```<cr>}:nohl<cr>", { desc = "next code cell" })
map("n", "[c", "?^```<cr>n}:nohl<cr>", { desc = "previous code cell" }) map("n", "[c", "?^```<cr>n}:nohl<cr>", { desc = "previous code cell" })
-- insert cell header above/below -- 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 code cell below" })
map("n", "<localleader>cO", "O```python<cr><cr>```<esc>k", { desc = "Insert quarto cell above" }) map("n", "<localleader>cO", "O```python<cr><cr>```<esc>k", { desc = "Insert code cell above" })
if require("core.util").is_available("which-key") then if require("core.util").is_available("which-key") then
require("which-key").add({ "<localleader>p", group = "prose" }) require("which-key").add({ "<localleader>p", group = "prose" })

View file

@ -2,17 +2,6 @@ if require("core.util").is_available("quarto") then
vim.keymap.set("n", "<localleader>po", require("quarto").quartoPreview, { desc = "show quarto preview" }) vim.keymap.set("n", "<localleader>po", require("quarto").quartoPreview, { desc = "show quarto preview" })
end end
local default_buffer_session = function()
local buffer_path = vim.api.nvim_buf_get_name(0) or vim.fn.tempname()
local temp_path = vim.fn.stdpath("run") .. "/molten-sessions" .. buffer_path .. ".json"
local dir = vim.fn.fnamemodify(temp_path, ":p:h")
if vim.fn.getftype(dir) ~= "dir" then
vim.fn.mkdir(dir, "p")
end
return temp_path
end
-- TODO: Puths kernel into local file dir currently, -- TODO: Puths kernel into local file dir currently,
-- could take an argument to put it into temporary dir instead. -- could take an argument to put it into temporary dir instead.
local kernel_filename = function() local kernel_filename = function()
@ -29,6 +18,7 @@ end
local startsession = function(opts) local startsession = function(opts)
local args = opts.fargs local args = opts.fargs
local kernel_filen = args[1] or kernel_filename() local kernel_filen = args[1] or kernel_filename()
vim.b["sessionfile"] = kernel_filen
local path = require("core.util").get_python_venv_bin() local path = require("core.util").get_python_venv_bin()
if not path then if not path then
@ -75,15 +65,14 @@ end
vim.api.nvim_create_user_command("JupyterStart", function(opts) vim.api.nvim_create_user_command("JupyterStart", function(opts)
startsession(opts) startsession(opts)
end, { nargs = "?" }) end, { nargs = "?" })
vim.keymap.set("n", "<localleader>cS", ":JupyterStart<cr>", { desc = "start code session", silent = true })
if vim.g.quarto_auto_init_molten_session then if vim.g.quarto_auto_init_molten_session then
vim.api.nvim_create_autocmd({ "BufEnter" }, { vim.api.nvim_create_autocmd({ "BufEnter" }, {
callback = function() callback = function()
if vim.b["sessionfile"] == nil then if vim.b["sessionfile"] == nil then
local path = kernel_filename()
vim.b["sessionfile"] = path
vim.schedule(function() vim.schedule(function()
startsession({ fargs = { path } }) startsession()
end) end)
end end
end, end,

View file

@ -40,10 +40,11 @@ return {
map("n", "<localleader>ca", require("quarto.runner").run_above, { desc = "run cells above" }) map("n", "<localleader>ca", require("quarto.runner").run_above, { desc = "run cells above" })
map("n", "<localleader>cb", require("quarto.runner").run_below, { desc = "run cells below" }) map("n", "<localleader>cb", require("quarto.runner").run_below, { desc = "run cells below" })
map("n", "<localleader>cA", require("quarto.runner").run_all, { desc = "run all similar cells" }) map("n", "<localleader>cA", require("quarto.runner").run_all, { desc = "run all similar cells" })
-- TODO: overwritten by other moves, i.e. comment?
map("n", "]c", "/^```{<cr>}:nohl<cr>", { desc = "Codecell forward" }) map("n", "]c", "/^```{<cr>}:nohl<cr>", { desc = "Codecell forward" })
map("n", "[c", "?^```<cr>n}:nohl<cr>", { desc = "Codecell last" }) map("n", "[c", "?^```<cr>n}:nohl<cr>", { desc = "Codecell last" })
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 code cell below" })
map("n", "<localleader>cO", "O```{python}<cr><cr>```<esc>k", { desc = "Insert quarto cell above" }) map("n", "<localleader>cO", "O```{python}<cr><cr>```<esc>k", { desc = "Insert code cell above" })
if require("core.util").is_available("which-key") then if require("core.util").is_available("which-key") then
require("which-key").add({ "<localleader>c", group = "codecells" }) require("which-key").add({ "<localleader>c", group = "codecells" })
@ -191,9 +192,9 @@ return {
ft = { "norg", "quarto", "python" }, ft = { "norg", "quarto", "python" },
keys = { keys = {
{ "<leader>vn", ":MoltenInfo<cr>" }, { "<leader>vn", ":MoltenInfo<cr>" },
{ "<localleader>cJ", ":JupyterStart<cr>", desc = "start jupyter", silent = true },
}, },
cmd = { cmd = {
"JupyterStart",
"MoltenInfo", "MoltenInfo",
"MoltenInit", "MoltenInit",
"MoltenDeinit", "MoltenDeinit",
@ -224,9 +225,7 @@ return {
-- Edit code blocks in md/quarto using whatever language is -- Edit code blocks in md/quarto using whatever language is
{ {
"AckslD/nvim-FeMaco.lua", "AckslD/nvim-FeMaco.lua",
cmd = { cmd = { "FeMaco" },
"FeMaco",
},
ft = { "markdown", "rmd", "quarto" }, ft = { "markdown", "rmd", "quarto" },
opts = { opts = {
ensure_newline = function(base_ft) ensure_newline = function(base_ft)
@ -236,20 +235,19 @@ return {
return false return false
end, end,
}, },
config = function(_, opts)
vim.keymap.set("n", "<localleader>ce", ":FeMaco<cr>", { desc = "edit codecell" })
require("femaco").setup(opts)
end,
dependencies = { dependencies = {
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
}, },
keys = {
{ "<localleader>ce", ":FeMaco<cr>", desc = "edit codecell" },
},
}, },
-- MARKDOWN ONLY -- MARKDOWN ONLY
-- Evaluate markdown code blocks -- Evaluate markdown code blocks
{ { -- TODO: Have results appear as virtual text instead of real text?
"jubnzv/mdeval.nvim", "jubnzv/mdeval.nvim",
cmd = { cmd = { "MdEval" },
"MdEval",
},
ft = { "markdown" }, ft = { "markdown" },
opts = { opts = {
require_confirmation = false, require_confirmation = false,
@ -277,7 +275,7 @@ return {
}, },
}, },
}, },
cond = vim.fn.executable("jupytext") == 1, -- only runs if imagemagick installed cond = vim.fn.executable("jupytext") == 1, -- only runs if jupytext installed
lazy = false, -- does not work in lazy mode lazy = false, -- does not work in lazy mode
}, },
} }