nvim: Clean up markdown/quarto key maps
This commit is contained in:
parent
7d616c1cb5
commit
9d15bc79f4
3 changed files with 21 additions and 36 deletions
|
|
@ -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" })
|
||||||
|
|
|
||||||
|
|
@ -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,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue