Compare commits

..

No commits in common. "fd01c8aac2855b18558e8af8618f737e27156881" and "03cbb41004ced3bd0e01b3f82ef0d4d031bf8f38" have entirely different histories.

19 changed files with 710 additions and 587 deletions

View file

@ -11,37 +11,35 @@ 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 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" }) map("n", "<localleader>cx", "<cmd>MdEvalClean<cr>", { silent = true, desc = "clear code results" })
end
if vim.fn.mapcheck("<localleader>cx") == "" then
map("n", "<localleader>cx", require("mdeval").eval_clean_results, { silent = true, desc = "clear code results" })
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 code cell 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 above" }) map("n", "<localleader>cO", "O```python<cr><cr>```<esc>k", { desc = "Insert quarto 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" })
end end
-- show nice md preview in browser (auto-syncs scrolling) -- show nice md preview in browser (auto-syncs scrolling)
local peek_key = "<localleader>po"
if require("core.util").is_available("peek") then if require("core.util").is_available("peek") then
map("n", peek_key, function() local peek = require("peek")
local peek = require("peek") local function togglePeek()
if peek.is_open() then if peek.is_open() then
peek.close() peek.close()
else else
peek.open() peek.open()
end end
end, { desc = "show md preview" }) end
elseif vim.fn.exists(":MarkdownPreviewToggle") > 0 then map("n", "<leader>po", togglePeek, { desc = "show md preview" })
map("n", peek_key, "<Plug>MarkdownPreviewToggle", { desc = "show md preview" }) else
map("n", "<leader>po", "<Plug>MarkdownPreviewToggle", { desc = "show md preview" })
end end
-- create mindmaps directly from markdown! requires external executable -- create mindmaps directly from markdown! requires external executable

View file

@ -1,24 +1,17 @@
if require("core.util").is_available("quarto") then local default_buffer_session = function()
vim.keymap.set("n", "<localleader>po", require("quarto").quartoPreview, { desc = "show quarto preview" }) local buffer_path = vim.api.nvim_buf_get_name(0) or vim.fn.tempname()
end local temp_path = vim.fn.stdpath("run") .. "/molten-sessions" .. buffer_path .. ".json"
-- TODO: Puths kernel into local file dir currently, local dir = vim.fn.fnamemodify(temp_path, ":p:h")
-- could take an argument to put it into temporary dir instead. if vim.fn.getftype(dir) ~= "dir" then
local kernel_filename = function() vim.fn.mkdir(dir, "p")
local buf = vim.api.nvim_buf_get_name(0)
if not buf or buf:match("^$") then
vim.fn.tempname()
end end
local path, name = buf:match("(.-)([^\\/]-%.?([^%.\\/]*))$") return temp_path
return path .. "." .. name .. ".kernel.json"
end end
-- Start quarto session -- Start quarto session
local startsession = function(opts) local startsession = function(file, args)
local args = opts.fargs file = file or default_buffer_session()
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
@ -26,53 +19,39 @@ local startsession = function(opts)
end end
vim.g["python3_host_prog"] = path vim.g["python3_host_prog"] = path
-- simply attach to existing if exists if vim.fn.executable("jupyter-console") ~= 1 then
if vim.fn.filereadable(kernel_filen) == 1 then
vim.cmd("MoltenInit " .. kernel_filen)
return return
end end
-- look for session maker if args then
local exec_name = "jupyter-kernel" file = args[0]
local exec_path = (require("core.util").get_python_venv_basefolder() or "") .. "/bin/" .. exec_name
if vim.fn.filereadable(exec_path) ~= 1 then
exec_path = exec_name
if vim.fn.executable(exec_path) ~= 1 then
return
end
end end
-- make our own session
local once = false local once = false
vim.fn.jobstart({ exec_path, "--KernelManager.connection_file", kernel_filen }, { vim.fn.jobstart({ "jupyter", "console", "-f", file }, {
on_stderr = function(_, data) on_stdout = function(_)
if not once then if not once then
for _, v in pairs(data) do vim.cmd("MoltenInit " .. file)
if v:find("connect a client") then
vim.cmd("MoltenInit " .. kernel_filen)
once = true
end
end
end end
once = true
end, end,
on_exit = function(_) on_exit = function(_)
vim.notify(string.format("jupyter kernel stopped: %s", kernel_filen), vim.log.levels.INFO) vim.notify(string.format("jupyter kernel stopped: %s", file), vim.log.levels.INFO)
end, end,
stdin = nil, stdin = nil,
}) })
end end
vim.api.nvim_create_user_command("JupyterStart", function()
vim.api.nvim_create_user_command("JupyterStart", function(opts) startsession(vim.b["sessionfile"] or default_buffer_session())
startsession(opts) end, {})
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({ "InsertEnter", "BufEnter" }, {
callback = function() callback = function()
if vim.b["sessionfile"] == nil then if vim.b["sessionfile"] == nil then
vim.schedule(function() local path = default_buffer_session()
startsession() vim.b["sessionfile"] = path
vim.schedule_wrap(function()
startsession(path)
end) end)
end end
end, end,

View file

@ -1,3 +0,0 @@
if vim.fn.exists(":TypstPreviewToggle") > 0 then
vim.keymap.set("n", "<localleader>po", "<cmd>TypstPreviewToggle<cr>", { desc = "show typst preview" })
end

View file

@ -1,36 +1,47 @@
{ {
"Arduino.nvim": { "branch": "main", "commit": "5988e7b08d8d6dc0a2d37e805cbed57dc13d869a" }, "Arduino.nvim": { "branch": "main", "commit": "5988e7b08d8d6dc0a2d37e805cbed57dc13d869a" },
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" }, "FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
"LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" },
"Navigator.nvim": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" }, "Navigator.nvim": { "branch": "master", "commit": "91d86506ac2a039504d5205d32a1d4bc7aa57072" },
"aerial.nvim": { "branch": "master", "commit": "9c29a1a66eb31384888e413e510ba72496e06770" },
"bats.vim": { "branch": "master", "commit": "6a5d2ef22b0ede503d867770afd02ebb1f97b709" }, "bats.vim": { "branch": "master", "commit": "6a5d2ef22b0ede503d867770afd02ebb1f97b709" },
"blink.cmp": { "branch": "main", "commit": "b6f11a0aa33e601c469a126e3ed6e35208fe3ea3" }, "cmp-beancount": { "branch": "main", "commit": "29e23297c06b9d69771e4b14e0fb3b9d583a150e" },
"blink.compat": { "branch": "main", "commit": "1176525a78319a208300a1910b6fd9e0cfabff25" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" }, "cmp-calc": { "branch": "main", "commit": "5947b412da67306c5b68698a02a846760059be2e" },
"cmp-pandoc.nvim": { "branch": "main", "commit": "30faa4456a7643c4cb02d8fa18438fd484ed7602" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" },
"cmp-latex-symbols": { "branch": "main", "commit": "165fb66afdbd016eaa1570e41672c4c557b57124" },
"cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" },
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
"cmp-pandoc-references": { "branch": "master", "commit": "2c808dff631a783ddd2c554c4c6033907589baf6" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp-rg": { "branch": "master", "commit": "70a43543f61b6083ba9c3b7deb9ccee671410ac6" },
"cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" }, "cmp-spell": { "branch": "master", "commit": "694a4e50809d6d645c1ea29015dad0c293f019d6" },
"codecompanion.nvim": { "branch": "main", "commit": "7cc8c94b373a60f86ef40bfc4ecc7c83a9771231" }, "cmp-treesitter": { "branch": "master", "commit": "958fcfa0d8ce46d215e19cc3992c542f576c4123" },
"conform.nvim": { "branch": "master", "commit": "80b57f662b5e13ae8c2c7c38639966084625fa5e" }, "cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"copilot.vim": { "branch": "release", "commit": "87038123804796ca7af20d1b71c3428d858a9124" }, "completion-vcard": { "branch": "master", "commit": "2220fd517a985ececed1adcf0e5be8f2815564c7" },
"dial.nvim": { "branch": "master", "commit": "34bbd9c387c358190e61ce71017faad3dffa7a74" }, "conform.nvim": { "branch": "master", "commit": "6239d9986f51ca93ded99ecdb1af0e287eabb651" },
"dressing.nvim": { "branch": "master", "commit": "3a45525bb182730fe462325c99395529308f431e" }, "dial.nvim": { "branch": "master", "commit": "46b4375e84e8eb771129bff6b2b1e47746601ef9" },
"fidget.nvim": { "branch": "main", "commit": "9238947645ce17d96f30842e61ba81147185b657" }, "dressing.nvim": { "branch": "master", "commit": "43b8f74e0b1e3f41e51f640f8efa3bcd401cea0d" },
"fidget.nvim": { "branch": "main", "commit": "ef99df04a1c53a453602421bc0f756997edc8289" },
"flash.nvim": { "branch": "main", "commit": "ec0bf2842189f65f60fd40bf3557cac1029cc932" }, "flash.nvim": { "branch": "main", "commit": "ec0bf2842189f65f60fd40bf3557cac1029cc932" },
"friendly-snippets": { "branch": "main", "commit": "efff286dd74c22f731cdec26a70b46e5b203c619" }, "friendly-snippets": { "branch": "main", "commit": "de8fce94985873666bd9712ea3e49ee17aadb1ed" },
"fwatch.nvim": { "branch": "main", "commit": "a691f7349dc66285cd75a1a698dd28bca45f2bf8" }, "fwatch.nvim": { "branch": "main", "commit": "a691f7349dc66285cd75a1a698dd28bca45f2bf8" },
"git-conflict.nvim": { "branch": "main", "commit": "4bbfdd92d547d2862a75b4e80afaf30e73f7bbb4" }, "git-conflict.nvim": { "branch": "main", "commit": "4bbfdd92d547d2862a75b4e80afaf30e73f7bbb4" },
"gitsigns.nvim": { "branch": "main", "commit": "0b04035bb7b3c83e999b9676e2fb46fd0aa9f910" }, "gitsigns.nvim": { "branch": "main", "commit": "0b04035bb7b3c83e999b9676e2fb46fd0aa9f910" },
"glance.nvim": { "branch": "master", "commit": "1a08824835d7582457b67acbe23ca33487912a5e" }, "glance.nvim": { "branch": "master", "commit": "17ee84e29ac33e7e5d91609f675cee8477586bda" },
"grug-far.nvim": { "branch": "main", "commit": "635e69adf3a714621bd0a289314bc23c5848babb" }, "grug-far.nvim": { "branch": "main", "commit": "9a2f78219390b47d67795ab09390d7f092e23976" },
"helpview.nvim": { "branch": "main", "commit": "34be34afd0811dee17e6b0c46176d9140659fe8e" }, "helpview.nvim": { "branch": "main", "commit": "34be34afd0811dee17e6b0c46176d9140659fe8e" },
"image.nvim": { "branch": "master", "commit": "6ffafab2e98b5bda46bf227055aa84b90add8cdc" }, "hunk.nvim": { "branch": "master", "commit": "eb89245a66bdfce10436d15923bf4deb43d23c96" },
"image.nvim": { "branch": "master", "commit": "da64ce69598875c9af028afe129f916b02ccc42e" },
"img-clip.nvim": { "branch": "main", "commit": "28a32d811d69042f4fa5c3d5fa35571df2bc1623" }, "img-clip.nvim": { "branch": "main", "commit": "28a32d811d69042f4fa5c3d5fa35571df2bc1623" },
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" }, "jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
"lazy.nvim": { "branch": "main", "commit": "7e6c863bc7563efbdd757a310d17ebc95166cef3" }, "lazy.nvim": { "branch": "main", "commit": "7967abe55752aa90532e6bb4bd4663fe27a264cb" },
"lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" }, "lazydev.nvim": { "branch": "main", "commit": "f59bd14a852ca43db38e3662395354cb2a9b13e0" },
"ltex_extra.nvim": { "branch": "dev", "commit": "09dc879b1873001f855bca5ad1f024ca15b9bbaf" }, "lsp-setup.nvim": { "branch": "main", "commit": "6e4e977512ce426d8b52c27f3b6e6aefc73e1452" },
"ltex_extra.nvim": { "branch": "dev", "commit": "57192d7ae5ba8cef3c10e90f2cd62d4a7cdaab69" },
"lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" }, "lualine.nvim": { "branch": "master", "commit": "2a5bae925481f999263d6f5ed8361baef8df4f83" },
"luarocks.nvim": { "branch": "main", "commit": "1db9093915eb16ba2473cfb8d343ace5ee04130a" }, "luarocks.nvim": { "branch": "main", "commit": "1db9093915eb16ba2473cfb8d343ace5ee04130a" },
"luvit-meta": { "branch": "main", "commit": "1df30b60b1b4aecfebc785aa98943db6c6989716" }, "luvit-meta": { "branch": "main", "commit": "57d464c4acb5c2e66bd4145060f5dc9e96a7bbb7" },
"markmap.nvim": { "branch": "main", "commit": "5fb6755cf5434511cc23a4936c9eb76b9142fba5" }, "markmap.nvim": { "branch": "main", "commit": "5fb6755cf5434511cc23a4936c9eb76b9142fba5" },
"mason-conform.nvim": { "branch": "main", "commit": "abce2be529f3b4b336c56d0ba6336a9144e0fee6" }, "mason-conform.nvim": { "branch": "main", "commit": "abce2be529f3b4b336c56d0ba6336a9144e0fee6" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "25c11854aa25558ee6c03432edfa0df0217324be" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "25c11854aa25558ee6c03432edfa0df0217324be" },
@ -38,51 +49,54 @@
"mason.nvim": { "branch": "main", "commit": "c43eeb5614a09dc17c03a7fb49de2e05de203924" }, "mason.nvim": { "branch": "main", "commit": "c43eeb5614a09dc17c03a7fb49de2e05de203924" },
"mdeval.nvim": { "branch": "master", "commit": "0e1b248db174a9659a9ab16eb8c90ff3aec55264" }, "mdeval.nvim": { "branch": "master", "commit": "0e1b248db174a9659a9ab16eb8c90ff3aec55264" },
"mini.nvim": { "branch": "main", "commit": "64e95aa77587d04f97a5579b2106a82a08a7d968" }, "mini.nvim": { "branch": "main", "commit": "64e95aa77587d04f97a5579b2106a82a08a7d968" },
"molten-nvim": { "branch": "main", "commit": "c621baf53459a6c45dfd98dcc11cbba7a7ae9470" }, "molten-nvim": { "branch": "main", "commit": "66ee5c0a0fbe3e014b867d04db44592f2d3eb30f" },
"neo-tree.nvim": { "branch": "main", "commit": "5d172e8315444dbc32867d1c7b04d8e7e68ec4e1" }, "neo-tree.nvim": { "branch": "main", "commit": "a77af2e764c5ed4038d27d1c463fa49cd4794e07" },
"neogen": { "branch": "main", "commit": "b2e78708876f4da507839726816010a68e33fec8" }, "neogen": { "branch": "main", "commit": "dc50715c009f89b8111197fd2f282f6042daa7ea" },
"neotest": { "branch": "master", "commit": "d66cf4e05a116957f0d3a7755a24291c7d1e1f72" }, "neotest": { "branch": "master", "commit": "6d3d22cdad49999ef774ebe1bc250a4994038964" },
"neotest-python": { "branch": "master", "commit": "a2861ab3c9a0bf75a56b11835c2bfc8270f5be7e" }, "neotest-python": { "branch": "master", "commit": "a2861ab3c9a0bf75a56b11835c2bfc8270f5be7e" },
"nui.nvim": { "branch": "main", "commit": "a0fd35fcbb4cb479366f1dc5f20145fd718a3733" }, "nui.nvim": { "branch": "main", "commit": "a0fd35fcbb4cb479366f1dc5f20145fd718a3733" },
"nvim-FeMaco.lua": { "branch": "main", "commit": "96bbf843595dbe865838b3f2484b73557f34700c" }, "nvim-FeMaco.lua": { "branch": "main", "commit": "96bbf843595dbe865838b3f2484b73557f34700c" },
"nvim-colorizer.lua": { "branch": "master", "commit": "39142aa1390d6ccdca57cb6dc5b2c7bfed460ffe" }, "nvim-cmp": { "branch": "main", "commit": "ca4d3330d386e76967e53b85953c170658255ecb" },
"nvim-coverage": { "branch": "main", "commit": "a939e425e363319d952a6c35fb3f38b34041ded2" }, "nvim-colorizer.lua": { "branch": "master", "commit": "4acf88d31b3a7a1a7f31e9c30bf2b23c6313abdb" },
"nvim-lint": { "branch": "master", "commit": "789b7ada1b4f00e08d026dffde410dcfa6a0ba87" }, "nvim-coverage": { "branch": "main", "commit": "aa4b4400588e2259e87e372b1e4e90ae13cf5a39" },
"nvim-lspconfig": { "branch": "master", "commit": "bf81bef7d75a0f4a0cf61462b318ea00b3c97cc8" }, "nvim-lint": { "branch": "master", "commit": "6b46370d02cd001509a765591a3ffc481b538794" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" }, "nvim-lspconfig": { "branch": "master", "commit": "7b0a2f6b14485bb5a237fc1328a487ff3e4a08c5" },
"nvim-surround": { "branch": "main", "commit": "ae298105122c87bbe0a36b1ad20b06d417c0433e" }, "nvim-nio": { "branch": "master", "commit": "a428f309119086dc78dd4b19306d2d67be884eee" },
"nvim-toggleterm.lua": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" }, "nvim-surround": { "branch": "main", "commit": "9f0cb495f25bff32c936062d85046fbda0c43517" },
"nvim-toggleterm.lua": { "branch": "main", "commit": "022ff5594acccc8d90d2e46dc43994f7722ebdf7" },
"nvim-treesitter": { "branch": "master", "commit": "cfc6f2c117aaaa82f19bcce44deec2c194d900ab" }, "nvim-treesitter": { "branch": "master", "commit": "cfc6f2c117aaaa82f19bcce44deec2c194d900ab" },
"nvim-treesitter-context": { "branch": "master", "commit": "bece284c5322ddf6946fa4bdc383a2bc033269d7" }, "nvim-treesitter-context": { "branch": "master", "commit": "920999bf53daa63ddf12efdeb5137a7cea1cc201" },
"nvim-treesitter-endwise": { "branch": "master", "commit": "8b34305ffc28bd75a22f5a0a9928ee726a85c9a6" }, "nvim-treesitter-endwise": { "branch": "master", "commit": "8b34305ffc28bd75a22f5a0a9928ee726a85c9a6" },
"nvim-treesitter-textsubjects": { "branch": "master", "commit": "a8d2844bba925d9450ef7ab215f3b054028288ca" }, "nvim-treesitter-textsubjects": { "branch": "master", "commit": "a8d2844bba925d9450ef7ab215f3b054028288ca" },
"nvim-ts-autotag": { "branch": "main", "commit": "1cca23c9da708047922d3895a71032bc0449c52d" }, "nvim-ts-autotag": { "branch": "main", "commit": "f2d24aca1bcbbd2c0306fd93d52e3697027b77ff" },
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "9c74db656c3d0b1c4392fc89a016b1910539e7c0" },
"nvim-web-devicons": { "branch": "master", "commit": "5b9067899ee6a2538891573500e8fd6ff008440f" }, "nvim-web-devicons": { "branch": "master", "commit": "5b9067899ee6a2538891573500e8fd6ff008440f" },
"otter.nvim": { "branch": "main", "commit": "7b42ce1f9deabc596214fc3b80e5ab4fd5b32726" }, "otter.nvim": { "branch": "main", "commit": "ca9ce67d0399380b659923381b58d174344c9ee7" },
"parrot.nvim": { "branch": "main", "commit": "413679a79cf220c261a4700cee5a01cadd99db53" },
"peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" }, "peek.nvim": { "branch": "master", "commit": "5820d937d5414baea5f586dc2a3d912a74636e5b" },
"plenary.nvim": { "branch": "master", "commit": "3707cdb1e43f5cea73afb6037e6494e7ce847a66" }, "plenary.nvim": { "branch": "master", "commit": "50012918b2fc8357b87cff2a7f7f0446e47da174" },
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" }, "popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
"quarto-nvim": { "branch": "main", "commit": "1cb2d24d7793241bd43f38e3a6f99a6d11f84458" }, "quarto-nvim": { "branch": "main", "commit": "23083a0152799ca7263ac9ae53d768d4dd93d24e" },
"rainbow-delimiters.nvim": { "branch": "master", "commit": "dc788723f717bdd3041838b8db34cce53c9aa920" }, "rainbow-delimiters.nvim": { "branch": "master", "commit": "e0f9b3efe150724af2d2ed59997d5ece373840e3" },
"render-markdown": { "branch": "main", "commit": "16369540a005ad0cf267498162aedca6dfca1b9c" }, "render-markdown": { "branch": "main", "commit": "6096cf3608b576a38fd1396227dbc0473091714d" },
"smartcolumn.nvim": { "branch": "main", "commit": "d01b99355c7fab13233f48d0f28dc097e68a03f7" }, "smartcolumn.nvim": { "branch": "main", "commit": "d01b99355c7fab13233f48d0f28dc097e68a03f7" },
"stickybuf.nvim": { "branch": "master", "commit": "2160fcd536d81f5fa43f7167dba6634e814e3154" }, "stickybuf.nvim": { "branch": "master", "commit": "2160fcd536d81f5fa43f7167dba6634e814e3154" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "dae2eac9d91464448b584c7949a31df8faefec56" }, "telescope-fzf-native.nvim": { "branch": "main", "commit": "cf48d4dfce44e0b9a2e19a008d6ec6ea6f01a83b" },
"telescope-jj.nvim": { "branch": "main", "commit": "9527e39f30eded7950ca127698422ec412d633c4" },
"telescope-luasnip.nvim": { "branch": "master", "commit": "11668478677de360dea45cf2b090d34f21b8ae07" },
"telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" }, "telescope.nvim": { "branch": "master", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
"texpresso.vim": { "branch": "main", "commit": "907838c08bbf99ad6bed3c908f1d0551a92ab4e0" }, "texpresso.vim": { "branch": "main", "commit": "1cc949fde8ed3220968039b6b1b6ccdd9f475087" },
"todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" }, "todo-comments.nvim": { "branch": "main", "commit": "ae0a2afb47cf7395dc400e5dc4e05274bf4fb9e0" },
"trouble.nvim": { "branch": "main", "commit": "40c5317a6e90fe3393f07b0fee580d9e93a216b4" }, "trouble.nvim": { "branch": "main", "commit": "40c5317a6e90fe3393f07b0fee580d9e93a216b4" },
"twilight.nvim": { "branch": "main", "commit": "8bb7fa7b918baab1ca81b977102ddb54afa63512" }, "twilight.nvim": { "branch": "main", "commit": "8bb7fa7b918baab1ca81b977102ddb54afa63512" },
"typst-preview.nvim": { "branch": "master", "commit": "c1100e8788baabe8ca8f8cd7fd63d3d479e49e36" },
"undotree": { "branch": "main", "commit": "eab459ab87dd249617b5f7187bb69e614a083047" }, "undotree": { "branch": "main", "commit": "eab459ab87dd249617b5f7187bb69e614a083047" },
"vifm.vim": { "branch": "master", "commit": "a8130c37d144b51d84bee19f0532abcd3583383f" }, "vifm.vim": { "branch": "master", "commit": "a8130c37d144b51d84bee19f0532abcd3583383f" },
"vim-criticmarkup": { "branch": "master", "commit": "d15dc134eb177a170c79f6377f81eb02a9d20b02" }, "vim-criticmarkup": { "branch": "master", "commit": "d15dc134eb177a170c79f6377f81eb02a9d20b02" },
"vim-numbertoggle": { "branch": "main", "commit": "df9b1fe616507340718716204ba7f434125bdf7a" }, "vim-numbertoggle": { "branch": "main", "commit": "df9b1fe616507340718716204ba7f434125bdf7a" },
"vim-spellsync": { "branch": "master", "commit": "3d6dd50de9c4d953cc16638112a6ae196df41463" }, "vim-spellsync": { "branch": "master", "commit": "3d6dd50de9c4d953cc16638112a6ae196df41463" },
"wezterm.nvim": { "branch": "main", "commit": "f73bba23ab4becd146fa2d0a3a16a84b987eeaca" }, "wezterm.nvim": { "branch": "main", "commit": "f73bba23ab4becd146fa2d0a3a16a84b987eeaca" },
"which-key.nvim": { "branch": "main", "commit": "8ab96b38a2530eacba5be717f52e04601eb59326" }, "which-key.nvim": { "branch": "main", "commit": "9b365a6428a9633e3eeb34dbef1b791511c54f70" },
"wrapping.nvim": { "branch": "master", "commit": "3a823200c297885b70515fa8d974e1763c578e26" }, "wrapping.nvim": { "branch": "master", "commit": "3a823200c297885b70515fa8d974e1763c578e26" },
"zen-mode.nvim": { "branch": "main", "commit": "04b52674b8c800f8b7d4609e8bd8d0212e3ffa79" }, "zen-mode.nvim": { "branch": "main", "commit": "04b52674b8c800f8b7d4609e8bd8d0212e3ffa79" },
"zk-nvim": { "branch": "main", "commit": "50d92038d22ad9a537dcfd463c38527591430df6" } "zk-nvim": { "branch": "main", "commit": "469e7562b8dbf1bcbfe1be245ca5d1724917f5c6" }
} }

View file

@ -120,7 +120,7 @@ map("n", "<leader>\\", ":vsp<cr>", { desc = "open vert split" })
map("n", "<leader>T", ":tabedit | Vifm<cr>", { desc = "open tab" }) map("n", "<leader>T", ":tabedit | Vifm<cr>", { desc = "open tab" })
-- select the whole buffer with <leader>-a -- select the whole buffer with <leader>-a
map("n", "<leader>A", "ggVG", { desc = "select all" }) map("n", "<leader>a", "ggVG", { desc = "select all" })
-- Format current Paragraph (esp useful in prose writing) -- Format current Paragraph (esp useful in prose writing)
map("n", "<localleader>q", "gqap", { silent = true, desc = "Format current paragraph" }) map("n", "<localleader>q", "gqap", { silent = true, desc = "Format current paragraph" })

View file

@ -64,11 +64,6 @@ function T.get_python_venv_basefolder(workspace)
return venv_path_cached return venv_path_cached
end end
local match local match
match = vim.fn.finddir(".venv", "**1")
if match ~= "" then
venv_path_cached = match
return venv_path_cached
end
-- Look downwards for file, can be nested. Limit to 1 depth for speed rn -- Look downwards for file, can be nested. Limit to 1 depth for speed rn
-- TODO: Maybe not hardcode 1-depth but allow choice. -- TODO: Maybe not hardcode 1-depth but allow choice.
match = vim.fn.findfile("pyvenv.cfg", "**1") match = vim.fn.findfile("pyvenv.cfg", "**1")
@ -84,8 +79,8 @@ function T.get_python_venv_basefolder(workspace)
if obj.code ~= 0 then if obj.code ~= 0 then
return return
end end
match = obj.stdout:match("^%s*(.-)%s*$") local venv_base_folder = obj.stdout:match("^%s*(.-)%s*$")
venv_path_cached = match venv_path_cached = venv_base_folder
return venv_path_cached return venv_path_cached
end end
end end

View file

@ -203,32 +203,6 @@ return {
draw = { animation = require("mini.indentscope").gen_animation.none() }, draw = { animation = require("mini.indentscope").gen_animation.none() },
options = { indent_at_cursor = false }, options = { indent_at_cursor = false },
}) })
-- disable indentlines for terminals
vim.api.nvim_create_autocmd("TermOpen", {
pattern = "*",
callback = function()
vim.b.miniindentscope_disable = true
end,
})
vim.api.nvim_create_autocmd("FileType", {
pattern = {
"lazy",
"mason",
"help",
"lspinfo",
"packer",
"checkhealth",
"man",
"gitcommit",
"TelescopePrompt",
"TelescopeResults",
"trouble",
},
callback = function()
vim.b.miniindentscope_disable = true
end,
})
require("mini.map").setup() require("mini.map").setup()
require("mini.move").setup() require("mini.move").setup()
require("mini.operators").setup() require("mini.operators").setup()
@ -277,6 +251,4 @@ return {
{ "stevearc/stickybuf.nvim", config = true }, { "stevearc/stickybuf.nvim", config = true },
-- make it a little less painful to open really big (>2mb) files by disabling features -- make it a little less painful to open really big (>2mb) files by disabling features
-- { "LunarVim/bigfile.nvim", lazy = false }, -- { "LunarVim/bigfile.nvim", lazy = false },
-- set plenary to follow master branch here, but let individual plugins actually load it
{ "nvim-lua/plenary.nvim", version = false, optional = true },
} }

View file

@ -1,69 +1,270 @@
return { local completion_engine = {
-- full documentation here: https://cmp.saghen.dev/ {
"saghen/blink.cmp", "hrsh7th/nvim-cmp",
branch = "main",
version = false, -- new releases (>2022) are sadly not versioned
dependencies = {
-- TODO: Move to lsp
"hrsh7th/cmp-nvim-lsp",
"hrsh7th/cmp-nvim-lsp-signature-help",
"hrsh7th/cmp-path",
"hrsh7th/cmp-buffer",
"hrsh7th/cmp-calc",
"hrsh7th/cmp-cmdline",
-- TODO: Move me into a separate load?
"cbarrete/completion-vcard",
"f3fora/cmp-spell",
"jc-doyle/cmp-pandoc-references",
-- TODO: Decide: get rid or just enable in very specific circumstances
"lukas-reineke/cmp-rg",
-- TODO: Move to treesitter
{ "ray-x/cmp-treesitter", dependencies = { "nvim-treesitter/nvim-treesitter" } },
},
opts = function()
local cmp = require("cmp")
-- style 'ghosttext' which appears behind cursor, showing current completion
vim.api.nvim_set_hl(0, "CmpGhostText", { link = "Comment", default = true })
local has_words_before = function()
---@diagnostic disable-next-line:deprecated
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0
and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
local kind_icons = {
Text = "",
Method = "",
Function = "󰊕",
Constructor = "",
Field = "",
Variable = "",
Class = "",
Interface = "",
Module = "",
Property = "",
Unit = "",
Value = "V",
Enum = "",
Keyword = "",
Snippet = "",
Color = "",
File = "",
Reference = "",
Folder = "",
EnumMember = "",
Constant = "",
Struct = "",
Event = "",
Operator = "",
TypeParameter = "",
}
-- `/` cmdline setup.
cmp.setup.cmdline("/", {
completion = { completeopt = "menu,menuone,noinsert,noselect" },
preselect = cmp.PreselectMode.None,
mapping = cmp.mapping.preset.cmdline(),
sources = { { name = "buffer" } },
})
-- `:` cmdline setup.
cmp.setup.cmdline(":", {
completion = { completeopt = "menu,menuone,noinsert,noselect" },
preselect = cmp.PreselectMode.None,
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({ { name = "path" } }, {
{ name = "cmdline", option = { ignore_cmds = { "Man", "!" } } },
}),
})
return {
window = { documentation = cmp.config.window.bordered() },
-- add noselect to not automatically select first item
completion = { completeopt = "menu,menuone,noinsert" },
preselect = cmp.PreselectMode.Item, -- not sure what this changes diff than above?
experimental = {
ghost_text = {
hl_group = "CmpGhostText",
},
},
sources = {
{ name = "nvim_lsp" },
{ name = "nvim_lsp_signature_help" },
{ name = "pandoc_references" },
{ name = "calc" },
{ name = "path" },
{ name = "buffer", keyword_length = 3 },
{ name = "spell", keyword_length = 3 },
-- { name = 'rg', keyword_length = 5 },
{ name = "vCard" },
},
mapping = cmp.mapping.preset.insert({
["<C-b>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<CR>"] = cmp.mapping({
i = function(fallback)
if cmp.visible() and cmp.get_active_entry() then
cmp.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = false,
})
else
fallback()
end
end,
s = cmp.mapping.confirm({ select = true }),
c = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = false,
}), -- disable selection in cmd mode
}),
["<Tab>"] = cmp.mapping(function(fallback)
-- expand_or_jumpable() will always jump
-- expand_or_locally_jumpable() only jumps when still inside snippet region
if cmp.visible() then
cmp.select_next_item()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
else
fallback()
end
end, { "i", "s" }),
}),
formatting = {
expandable_indicator = true,
fields = { "kind", "abbr", "menu" },
format = function(entry, vim_item)
-- Kind icons, removing kind text leaving only icon
-- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind)
vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
-- Source
vim_item.menu = ({
buffer = "",
calc = "󰃬",
digraphs = "",
latex_symbols = "𝓧",
luasnip = "",
nvim_lsp = "",
nvim_lua = "󰢱",
pandoc_references = "",
spell = "󰓆",
vCard = "󰛋",
})[entry.source.name]
return vim_item
end,
},
}
end,
event = { "InsertEnter", "CmdlineEnter" },
},
}
--
-- TODO: Enable more lazy loaded startup? And integrate into
-- cmp as insert source instead of in its setup config below.
local snippet_engine = {
"nvim-cmp",
dependencies = { dependencies = {
"saghen/blink.compat", "L3MON4D3/LuaSnip",
"rafamadriz/friendly-snippets", "rafamadriz/friendly-snippets",
"hrsh7th/cmp-calc", "saadparwaiz1/cmp_luasnip",
"f3fora/cmp-spell",
{ {
"aspeddro/cmp-pandoc.nvim", "benfowler/telescope-luasnip.nvim",
dependencies = { dependencies = { { "nvim-telescope/telescope.nvim", optional = true } },
"nvim-lua/plenary.nvim", config = function()
}, if require("core.util").is_available("telescope") then
opts = { require("telescope").load_extension("luasnip")
filetypes = { "pandoc", "markdown", "quarto", "rmd" }, end
}, end,
}, },
}, },
event = { "InsertEnter" }, event = { "InsertEnter" },
opts = { build = "make install_jsregexp",
keymap = { preset = "default" }, opts = function(_, opts)
local cmp = require("cmp")
local luasnip = require("luasnip")
appearance = { require("luasnip.loaders.from_vscode").lazy_load({ exclude = { "markdown", "quarto" } })
-- Sets the fallback highlight groups to nvim-cmp's highlight groups require("luasnip.loaders.from_snipmate").lazy_load()
-- Useful for when your theme doesn't support blink.cmp
-- Will be removed in a future release
use_nvim_cmp_as_default = true,
-- Set to 'mono' for 'Nerd Font Mono' or 'normal' for 'Nerd Font'
-- Adjusts spacing to ensure icons are aligned
nerd_font_variant = "mono",
},
completion = {
documentation = { auto_show = true, auto_show_delay_ms = 500 },
-- ghost_text = { enabled = true },
},
signature = {
enabled = true,
},
-- Default list of enabled providers defined so that you can extend it opts.snippet = {
-- elsewhere in your config, without redefining it, due to `opts_extend` expand = function(item)
sources = { require("luasnip").lsp_expand(item.body)
default = { end,
"pandoc", }
"calc", local has_words_before = function()
"lsp", ---@diagnostic disable-next-line:deprecated
"path", local line, col = unpack(vim.api.nvim_win_get_cursor(0))
"snippets", return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
"buffer", end
"spell",
}, table.insert(opts.sources, { name = "luasnip", keyword_length = 1 })
providers = {
calc = { opts.mapping["<Tab>"] = cmp.mapping(function(fallback) -- expand_or_jumpable() will always jump
name = "calc", -- expand_or_locally_jumpable() only jumps when still inside snippet region
module = "blink.compat.source", if luasnip.expand_or_locally_jumpable() then
}, luasnip.expand_or_jump()
spell = { elseif cmp.visible() then
name = "spell", cmp.select_next_item()
module = "blink.compat.source", elseif has_words_before() then
}, cmp.complete()
pandoc = { else
name = "cmp_pandoc", fallback()
module = "blink.compat.source", end
}, end, { "i", "s" })
}, opts.mapping["<S-Tab>"] = cmp.mapping(function(fallback)
}, if luasnip.locally_jumpable(-1) then
}, luasnip.jump(-1)
opts_extend = { "sources.default" }, elseif cmp.visible() then
cmp.select_prev_item()
else
fallback()
end
end, { "i", "s" })
end,
}
local beancount_cmp = {
"nvim-cmp",
dependencies = {
"crispgm/cmp-beancount",
},
ft = "beancount",
opts = function(_, opts)
vim.g.python3_host_prog = "/home/marty/.local/pipx/venvs/beancount/bin/python"
table.insert(opts.sources, {
name = "beancount",
-- option = {
-- -- TODO: implement dynamically
-- -- I believe if we don't supply this it automatically takes
-- -- from the open file which would be good enough
-- account = "/home/marty/documents/records/budget/main.beancount",
-- },
})
end,
}
local latex_cmp = {
"nvim-cmp",
dependencies = {
-- TODO: Needs better lazy loading
"kdheepak/cmp-latex-symbols",
},
event = "CursorHold",
opts = function(_, opts)
table.insert(opts.sources, { name = "latex_symbols" })
end,
}
return {
completion_engine,
snippet_engine,
beancount_cmp,
latex_cmp,
} }

View file

@ -15,6 +15,7 @@ return {
dependencies = { dependencies = {
"jmbuhr/otter.nvim", "jmbuhr/otter.nvim",
"neovim/nvim-lspconfig", "neovim/nvim-lspconfig",
"hrsh7th/nvim-cmp",
"nvim-treesitter/nvim-treesitter", "nvim-treesitter/nvim-treesitter",
{ "benlubas/molten-nvim", optional = true }, { "benlubas/molten-nvim", optional = true },
}, },
@ -40,11 +41,10 @@ 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 code cell 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 above" }) map("n", "<localleader>cO", "O```{python}<cr><cr>```<esc>k", { desc = "Insert quarto 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" })
@ -53,44 +53,48 @@ return {
ft = { "quarto" }, ft = { "quarto" },
}, },
{
"vhyrro/luarocks.nvim",
priority = 1001, -- this plugin needs to run before anything else
opts = {
rocks = { "magick" },
},
},
-- image display -- image display
{ {
"3rd/image.nvim", "3rd/image.nvim",
version = false, dependencies = { "luarocks.nvim", { "nvim-treesitter/nvim-treesitter", optional = true } },
dependencies = { cond = vim.fn.executable("magick") == 1, -- only runs if imagemagick installed
{ config = function()
"vhyrro/luarocks.nvim", local integrations = {}
priority = 1001, -- this plugin needs to run before anything else if vim.treesitter.language.get_lang("markdown") then
opts = { integrations["markdown"] = {
rocks = { "magick" }, enabled = true,
}, clear_in_insert_mode = true,
}, download_remote_images = true,
{ "nvim-treesitter/nvim-treesitter", optional = true },
},
opts = {
backend = "kitty",
editor_only_render_when_focused = true,
-- TODO: Check that this works without TS md parser, norg or typst installed
-- If errors go back to commit before 87691932 when this check was still here
integrations = {
markdown = {
only_render_image_at_cursor = true, only_render_image_at_cursor = true,
filetypes = { "markdown", "vimwiki", "quarto" }, filetypes = { "markdown", "vimwiki", "quarto" },
}, }
neorg = { end
if vim.treesitter.language.get_lang("norg") then
integrations["neorg"] = {
enabled = true,
clear_in_insert_mode = true,
download_remote_images = true,
only_render_image_at_cursor = true, only_render_image_at_cursor = true,
}, filetypes = { "norg" },
typst = { }
only_render_image_at_cursor = true, end
}, if next(integrations) ~= nil then -- only set up if we have at least 1 TS parser
}, require("image").setup({
}, backend = "kitty",
config = function(_, opts) integrations = integrations,
require("image").setup(opts) })
vim.g.molten_image_provider = "image.nvim" vim.g.molten_image_provider = "image.nvim"
pcall(vim.fn.MoltenUpdateOption, "molten_image_provider", "image.nvim") pcall(vim.fn.MoltenUpdateOption, "molten_image_provider", "image.nvim")
end
end, end,
ft = { "markdown", "vimwiki", "quarto", "norg", "typst", "python" }, ft = { "markdown", "vimwiki", "quarto", "norg", "python" },
priority = 60, priority = 60,
}, },
-- REPL work -- REPL work
@ -141,7 +145,7 @@ return {
":noautocmd :MoltenEnterOutput<cr>", ":noautocmd :MoltenEnterOutput<cr>",
{ silent = true, desc = "show output" } { silent = true, desc = "show output" }
) )
map("n", "<localleader>cx", function() map("n", "<localleader>cP", function()
vim.cmd("MoltenHideOutput") vim.cmd("MoltenHideOutput")
vim.cmd("MoltenDelete") vim.cmd("MoltenDelete")
end, { silent = true, desc = "hide output" }) end, { silent = true, desc = "hide output" })
@ -188,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",
@ -221,29 +225,25 @@ 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 = { "FeMaco" }, cmd = {
ft = { "markdown", "rmd", "quarto" }, "FeMaco",
opts = {
ensure_newline = function(base_ft)
if base_ft == "quarto" or base_ft == "markdown" then
return true
end
return false
end,
}, },
config = function(_, opts) ft = { "markdown", "quarto" },
vim.keymap.set("n", "<localleader>ce", ":FeMaco<cr>", { desc = "edit codecell" }) opts = {},
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 = { "MdEval" }, cmd = {
"MdEval",
},
ft = { "markdown" }, ft = { "markdown" },
opts = { opts = {
require_confirmation = false, require_confirmation = false,
@ -271,7 +271,7 @@ return {
}, },
}, },
}, },
cond = vim.fn.executable("jupytext") == 1, -- only runs if jupytext installed cond = vim.fn.executable("jupytext") == 1, -- only runs if imagemagick installed
lazy = false, -- does not work in lazy mode lazy = false, -- does not work in lazy mode
}, },
} }

View file

@ -14,7 +14,7 @@ local formatters = {
lua = { "stylua" }, lua = { "stylua" },
markdown = { "prettier", "injected" }, markdown = { "prettier", "injected" },
nim = { "nimpretty" }, nim = { "nimpretty" },
python = { "ruff_format", "ruff_organize_imports" }, python = { "ruff_fix", "ruff_format", "ruff_organize_imports" },
quarto = { "prettier", "injected" }, quarto = { "prettier", "injected" },
sh = { "shfmt" }, sh = { "shfmt" },
sql = { "sleek" }, sql = { "sleek" },

View file

@ -12,18 +12,17 @@ return {
}, },
dependencies = { dependencies = {
{ "Bilal2453/luvit-meta" }, -- optional `vim.uv` typings { "Bilal2453/luvit-meta" }, -- optional `vim.uv` typings
-- FIXME: Set up to work with blink.cmp { -- optional completion source for require statements and module annotations
-- { -- optional completion source for require statements and module annotations "hrsh7th/nvim-cmp",
-- "hrsh7th/nvim-cmp", opts = function(_, opts)
-- opts = function(_, opts) opts.sources = opts.sources or {}
-- opts.sources = opts.sources or {} table.insert(opts.sources, {
-- table.insert(opts.sources, { name = "lazydev",
-- name = "lazydev", group_index = 0, -- set group index to 0 to skip loading LuaLS completions
-- group_index = 0, -- set group index to 0 to skip loading LuaLS completions })
-- }) end,
-- end, optional = true,
-- optional = true, },
-- },
}, },
}, },
} }

View file

@ -1,54 +0,0 @@
return {
-- TODO: Add completion w blink, see https://codecompanion.olimorris.dev/installation.html
{
"olimorris/codecompanion.nvim",
dependencies = {
"nvim-lua/plenary.nvim",
"nvim-treesitter/nvim-treesitter",
"github/copilot.vim",
},
init = function(_)
if require("core.util").is_available("which-key") then
require("which-key").add({ "<leader>a", group = "codecompanion" })
end
end,
opts = {
strategies = {
chat = { adapter = "groq" },
inline = { adapter = "groq" },
},
adapters = {
groq = function()
return require("codecompanion.adapters").extend("openai", {
env = {
api_key = "GROQ_API_KEY",
},
name = "Groq",
url = "https://api.groq.com/openai/v1/chat/completions",
schema = {
model = {
default = "llama-3.1-8b-instant",
choices = {
"llama-3.3-70b-versatile",
"mixtral-8x7b-32768",
},
},
},
max_tokens = {
default = 4096,
},
temperature = {
default = 1,
},
})
end,
},
},
keys = {
{ "<leader>aa", "<cmd>CodeCompanionActions<cr>", desc = "Actions", silent = true, mode = { "n", "v" } },
{ "<leader>ac", "<cmd>CodeCompanionChat Toggle<cr>", desc = "Toggle chat", silent = true },
{ "<leader>ac", "<cmd>CodeCompanionChat Add<cr>", desc = "Add to chat", silent = true, mode = "v" },
},
cmd = { "CodeCompanionActions", "CodeCompanionChat", "CodeCompanion", "CodeCompanionCmd" },
},
}

View file

@ -35,55 +35,183 @@ local servers = {
serve_d = {}, serve_d = {},
taplo = {}, taplo = {},
texlab = {}, texlab = {},
tinymist = { tinymist = {},
settings = {
formatterMode = "typstyle",
},
},
ts_ls = {}, ts_ls = {},
yamlls = {}, yamlls = {},
} }
local lsp = { return {
{ -- pretty lsp 'peek' menus -- lsp setup
"DNLHC/glance.nvim",
opts = { border = { enable = true }, theme = { enable = true, mode = "auto" } },
cmd = { "Glance" },
},
{ {
"neovim/nvim-lspconfig", "junnplus/lsp-setup.nvim",
dependencies = { dependencies = {
{ {
"williamboman/mason-lspconfig.nvim", "neovim/nvim-lspconfig",
opts = { automatic_installation = true }, -- will sometimes not keep up with lsp changes if set to stable
dependencies = { version = false,
"williamboman/mason.nvim", },
cmd = { {
"Mason", "williamboman/mason.nvim",
"MasonInstall", cmd = {
"MasonUninstall", "Mason",
"MasonUninstallAll", "MasonInstall",
"MasonLog", "MasonUninstall",
"MasonUpdate", "MasonUninstallAll",
}, "MasonLog",
opts = {}, "MasonUpdate",
build = ":MasonUpdate",
keys = {
{ "<leader>vm", ":Mason<cr>", desc = "Mason" },
},
}, },
build = ":MasonUpdate",
keys = {
{ "<leader>vm", ":Mason<cr>", desc = "Mason" },
},
},
{
"williamboman/mason-lspconfig.nvim",
cmd = { "LspInstall", "LspUninstall" }, cmd = { "LspInstall", "LspUninstall" },
}, },
{ "saghen/blink.cmp", optional = true },
}, },
event = { "BufReadPost", "BufNewFile", "BufWritePre" }, event = { "BufReadPost", "BufNewFile", "BufWritePre" },
opts = { servers = servers }, config = function()
config = function(_, lspconfig_opts) vim.diagnostic.config({ virtual_text = true })
local lspconfig = require("lspconfig") vim.fn.sign_define("DiagnosticSignError", { text = "", texthl = "DiagnosticSignError" })
vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" })
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" })
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" })
local lsp = require("lsp-setup")
local function on_attach(_, bufnr)
local map = vim.keymap.set
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",
"[D",
"<cmd>lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})<cr>",
{ buffer = bufnr, desc = "Previous error" }
)
map(
"n",
"]D",
"<cmd>lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})<cr>",
{ buffer = bufnr, desc = "Next error" }
)
if require("core.util").is_available("which-key") then
require("which-key").add({ "<localleader>l", group = "language" })
end
map(
"n",
"<localleader>ld",
"<cmd>lua vim.diagnostic.open_float()<cr>",
{ buffer = bufnr, desc = "Line diagnostics" }
)
map("n", "<localleader>li", function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
end, { buffer = bufnr, desc = "Inlay hints" })
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" }
)
if vim.fn.exists(":Glance") then
map("n", "<localleader>lr", "<cmd>Glance references<cr>", { buffer = bufnr, desc = "References" })
map("n", "<localleader>lf", "<cmd>Glance definitions<cr>", { buffer = bufnr, desc = "Definition" })
map(
"n",
"<localleader>lt",
"<cmd>Glance type_definitions<cr>",
{ buffer = bufnr, desc = "Type definition" }
)
map(
"n",
"<localleader>lm",
"<cmd>Glance implementations<cr>",
{ buffer = bufnr, desc = "Implementation" }
)
elseif vim.fn.exists(":Telescope") then
map(
"n",
"<localleader>lr",
"<cmd>Telescope lsp_references<cr>",
{ buffer = bufnr, desc = "References" }
)
map(
"n",
"<localleader>lf",
"<cmd>Telescope lsp_definitions<cr>",
{ buffer = bufnr, desc = "Definition" }
)
map(
"n",
"<localleader>lt",
"<cmd>Telescope lsp_type_definitions<cr>",
{ buffer = bufnr, desc = "Type definition" }
)
map(
"n",
"<localleader>lm",
"<cmd>Telescope lsp_implementations<cr>",
{ buffer = bufnr, desc = "Implementation" }
)
else
map(
"n",
"<localleader>lr",
"<cmd>lua vim.lsp.buf.references()<cr>",
{ buffer = bufnr, desc = "References" }
)
map(
"n",
"<localleader>lf",
"<cmd>lua vim.lsp.buf.definition()<cr>",
{ buffer = bufnr, desc = "Definition" }
)
map(
"n",
"<localleader>lt",
"<cmd>lua vim.lsp.buf.type_definition()<cr>",
{ buffer = bufnr, desc = "Type definition" }
)
map(
"n",
"<localleader>lm",
"<cmd>lua vim.lsp.buf.implementation()<cr>",
{ buffer = bufnr, desc = "Implementation" }
)
end
map("n", "K", "<cmd>lua vim.lsp.buf.hover()<cr>", { buffer = bufnr, desc = "Hover definition" })
map(
"n",
"<localleader>lc",
"<cmd>lua vim.lsp.buf.declaration()<cr>",
{ buffer = bufnr, desc = "Declaration" }
)
map(
"n",
"<localleader>ls",
"<cmd>lua vim.lsp.buf.signature_help()<cr>",
{ buffer = bufnr, desc = "Signature help" }
)
map("n", "<localleader>lo", function()
vim.diagnostic.enable(not vim.diagnostic.is_enabled())
end, { buffer = bufnr, desc = "Toggle Diagnostics" })
end
-- Display diagnostics as virtual text only if not in insert mode -- Display diagnostics as virtual text only if not in insert mode
-- /r/neovim/comments/12inp4c/disable_diagnostics_virtual_text_when_in_insert/jqqifwk/ -- /r/neovim/comments/12inp4c/disable_diagnostics_virtual_text_when_in_insert/jqqifwk/
vim.diagnostic.config({ virtual_text = true })
vim.api.nvim_create_autocmd("InsertEnter", { vim.api.nvim_create_autocmd("InsertEnter", {
callback = function() callback = function()
vim.diagnostic.config({ virtual_text = false }) vim.diagnostic.config({ virtual_text = false })
@ -95,19 +223,16 @@ local lsp = {
end, end,
}) })
vim.fn.sign_define("DiagnosticSignError", { text = "", texthl = "DiagnosticSignError" }) lsp.setup({
vim.fn.sign_define("DiagnosticSignWarn", { text = "", texthl = "DiagnosticSignWarn" }) default_mappings = false,
vim.fn.sign_define("DiagnosticSignInfo", { text = "", texthl = "DiagnosticSignInfo" }) servers = servers,
vim.fn.sign_define("DiagnosticSignHint", { text = "", texthl = "DiagnosticSignHint" }) on_attach = on_attach,
inlay_hints = {
for server, config in pairs(lspconfig_opts.servers) do enabled = vim.fn.has("nvim-0.10") == true and true or false,
-- TODO: Check if it actually can be ignored in Nvim 0.11+, see https://cmp.saghen.dev/installation.html#lazy-nvim },
if vim.fn.has("nvim-0.11") == false then })
config.capabilities = require("blink.cmp").get_lsp_capabilities(config.capabilities)
end
lspconfig[server].setup(config)
end
local lspconfig = require("lspconfig")
lspconfig.nushell.setup({}) lspconfig.nushell.setup({})
lspconfig.marksman.setup({ lspconfig.marksman.setup({
@ -150,6 +275,7 @@ local lsp = {
end, end,
} }
end end
on_attach(client, bufnr)
end, end,
on_new_config = function(conf, new_root) on_new_config = function(conf, new_root)
if require("lspconfig.util").root_pattern(".zk")(new_root) then if require("lspconfig.util").root_pattern(".zk")(new_root) then
@ -165,10 +291,12 @@ local lsp = {
-- we primarily use pyright for cmp lsp completion & hover info -- we primarily use pyright for cmp lsp completion & hover info
lspconfig.basedpyright.setup({ lspconfig.basedpyright.setup({
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
on_attach(client, bufnr)
require("core.util").set_python_env() require("core.util").set_python_env()
if python_path == nil then if python_path == nil then
python_path, _ = vim.fn.expand(require("core.util").get_python_venv_bin(client.config.root_dir)) python_path, _ = vim.fn.expand(require("core.util").get_python_venv_bin(client.config.root_dir))
end end
-- print(string.format("[PYTHON VENV]: %s", vim.inspect(python_path)))
client.config.settings.python = {} or client.config.settings.python client.config.settings.python = {} or client.config.settings.python
client.config.settings.python.pythonPath = python_path client.config.settings.python.pythonPath = python_path
end, end,
@ -187,6 +315,7 @@ local lsp = {
}) })
lspconfig.ruff.setup({ lspconfig.ruff.setup({
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
on_attach(client, bufnr)
require("core.util").set_python_env() require("core.util").set_python_env()
client.server_capabilities.hoverProvider = false -- we use pyright for hover info client.server_capabilities.hoverProvider = false -- we use pyright for hover info
if python_path == nil then if python_path == nil then
@ -210,6 +339,7 @@ local lsp = {
callback = function() callback = function()
lspconfig.ltex.setup({ lspconfig.ltex.setup({
on_attach = function(client, bufnr) on_attach = function(client, bufnr)
on_attach(client, bufnr)
if require("core.util").is_available("ltex_extra") then if require("core.util").is_available("ltex_extra") then
require("ltex_extra").setup() require("ltex_extra").setup()
end end
@ -226,98 +356,10 @@ local lsp = {
end, end,
keys = { { "<leader>vs", ":LspInfo<cr>", desc = "LspInfo" } }, keys = { { "<leader>vs", ":LspInfo<cr>", desc = "LspInfo" } },
}, },
-- pretty lsp 'peek' menus
{
"DNLHC/glance.nvim",
opts = { border = { enable = true }, theme = { enable = true, mode = "auto" } },
cmd = { "Glance" },
},
} }
vim.api.nvim_create_autocmd("LspAttach", {
desc = "LSP actions",
callback = function(event)
local o = function(add_opts)
return vim.tbl_extend("force", { buffer = event.buf }, add_opts)
end
local map = vim.keymap.set
map("n", "K", "<cmd>lua vim.lsp.buf.hover()<cr>", o({ desc = "Hover definition" }))
map("n", "[d", "<cmd>lua vim.diagnostic.goto_prev()<cr>", o({ desc = "Previous diagnostic" }))
map("n", "]d", "<cmd>lua vim.diagnostic.goto_next()<cr>", o({ desc = "Next diagnostic" }))
map(
"n",
"[D",
"<cmd>lua vim.diagnostic.goto_prev({severity = vim.diagnostic.severity.ERROR})<cr>",
o({ desc = "Previous error" })
)
map(
"n",
"]D",
"<cmd>lua vim.diagnostic.goto_next({severity = vim.diagnostic.severity.ERROR})<cr>",
o({ desc = "Next error" })
)
if require("core.util").is_available("which-key") then
require("which-key").add({ "<localleader>l", group = "language" })
end
map("n", "<localleader>ld", "<cmd>lua vim.diagnostic.open_float()<cr>", o({ desc = "Show line diagnostics" }))
map("n", "<localleader>lI", function()
vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled())
end, o({ desc = "Toggle inlay hints" }))
map("n", "<localleader>la", "<cmd>lua vim.lsp.buf.code_action()<cr>", o({ desc = "Codeactions" }))
map("n", "<localleader>ln", "<cmd>lua vim.lsp.buf.rename()<cr>", o({ desc = "Rename element" }))
map("n", "<localleader>lc", "<cmd>lua vim.lsp.buf.declaration()<cr>", o({ desc = "Declaration" }))
map("n", "<localleader>ls", "<cmd>lua vim.lsp.buf.signature_help()<cr>", o({ desc = "Signature help" }))
map("n", "<localleader>lo", function()
vim.diagnostic.enable(not vim.diagnostic.is_enabled())
end, o({ desc = "Toggle Diagnostics" }))
local pref = function(glances, telescope, fallback)
if glances and vim.fn.exists(":Glance") > 0 then
return glances
elseif telescope and vim.fn.exists(":Telescope") > 0 then
return telescope
else
return fallback
end
end
map(
"n",
"<localleader>lr",
pref(
"<cmd>Glance references<cr>",
"<cmd>Telescope lsp_references<cr>",
"<cmd>lua vim.lsp.buf.references()<cr>"
),
o({ desc = "References" })
)
map(
"n",
"<localleader>lf",
pref(
"<cmd>Glance definitions<cr>",
"<cmd>Telescope lsp_definitions<cr>",
"<cmd>lua vim.lsp.buf.definition()<cr>"
),
o({ desc = "Definition" })
)
map(
"n",
"<localleader>lt",
pref(
"<cmd>Glance type_definitions<cr>",
"<cmd>Telescope lsp_type_definitions<cr>",
"<cmd>lua vim.lsp.buf.type_definition()<cr>"
),
o({ desc = "Type definition" })
)
map(
"n",
"<localleader>lm",
pref(
"<cmd>Glance implementations<cr>",
"<cmd>Telescope lsp_implementations<cr>",
"<cmd>lua vim.lsp.buf.implementation()<cr>"
),
o({ desc = "Implementation" })
)
end,
})
return lsp

View file

@ -28,7 +28,7 @@ return {
keys = { keys = {
{ "<leader>se", "<cmd>Neotree toggle left<cr>", desc = "filetree", silent = true }, { "<leader>se", "<cmd>Neotree toggle left<cr>", desc = "filetree", silent = true },
}, },
lazy = false, lazy = false
}, },
{ "MagicDuck/grug-far.nvim", lazy = false, opts = {} }, { "MagicDuck/grug-far.nvim", lazy = false, opts = {} },
-- fuzzy matching picker -- fuzzy matching picker

View file

@ -72,8 +72,7 @@ local prose_plugs = {
render_modes = { "n", "c", "i" }, render_modes = { "n", "c", "i" },
code = { code = {
sign = false, sign = false,
width = "full", width = "block",
position = "right",
right_pad = 1, right_pad = 1,
}, },
checkbox = { checkbox = {
@ -82,11 +81,6 @@ local prose_plugs = {
removed = { raw = "[_]", rendered = "󱋭 ", highlight = "RenderMarkdownTodo" }, removed = { raw = "[_]", rendered = "󱋭 ", highlight = "RenderMarkdownTodo" },
}, },
}, },
html = {
comment = {
conceal = false,
},
},
}, },
name = "render-markdown", -- Only needed if you have another plugin named markdown.nvim name = "render-markdown", -- Only needed if you have another plugin named markdown.nvim
dependencies = { dependencies = {
@ -97,7 +91,7 @@ local prose_plugs = {
cmd = "RenderMarkdown", cmd = "RenderMarkdown",
keys = { keys = {
{ {
"<localleader>pm", "<leader>pp",
function() function()
require("render-markdown").toggle() require("render-markdown").toggle()
end, end,
@ -106,43 +100,29 @@ local prose_plugs = {
}, },
}, },
}, },
--- PREVIEW SECTION
-- generate an auto-updating html preview for md files -- generate an auto-updating html preview for md files
-- uses the very nice peek if deno is available, otherwise falls back to markdown-preview -- uses the very nice peek if deno is available, otherwise falls back to markdown-preview
{ {
"toppair/peek.nvim", "toppair/peek.nvim",
event = { "VeryLazy" },
cond = vim.fn.executable("deno") == 1, cond = vim.fn.executable("deno") == 1,
build = "deno task --quiet build:fast", build = "deno task --quiet build:fast",
ft = md_like, ft = md_like,
opts = {}, config = function()
require("peek").setup()
vim.api.nvim_create_user_command("PeekOpen", require("peek").open, {})
vim.api.nvim_create_user_command("PeekClose", require("peek").close, {})
end,
}, },
{ {
"iamcco/markdown-preview.nvim", "iamcco/markdown-preview.nvim",
event = { "VeryLazy" },
cond = vim.fn.executable("deno") == 0, cond = vim.fn.executable("deno") == 0,
build = function() build = function()
vim.fn["mkdp#util#install"]() vim.fn["mkdp#util#install"]()
end, end,
version = false,
ft = md_like, ft = md_like,
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
}, },
{
"chomosuke/typst-preview.nvim",
ft = { "typst" },
opts = { -- to use mason-managed binary
dependencies_bin = { ["tinymist"] = "tinymist" },
},
cmd = {
"TypstPreview",
"TypstPreviewUpdate",
"TypstPreviewStop",
"TypstPreviewToggle",
"TypstPreviewFollowCursor",
"TypstPreviewNoFollowCursor",
"TypstPreviewFollowCursorToggle",
},
},
--- END PREVIEW SECTION
-- easy copy paste of images into markup files -- easy copy paste of images into markup files
{ {
@ -159,14 +139,14 @@ local prose_plugs = {
}, },
cmd = { "PasteImage" }, cmd = { "PasteImage" },
keys = { keys = {
{ "<localleader>pi", "<cmd>PasteImage<cr>", desc = "Paste image from system clipboard" }, { "<leader>pi", "<cmd>PasteImage<cr>", desc = "Paste image from system clipboard" },
}, },
ft = prose_ft, ft = prose_ft,
}, },
-- bring zettelkasten commands -- bring zettelkasten commands
{ {
"zk-org/zk-nvim", "mickael-menu/zk-nvim",
config = function() config = function()
if require("core.util").is_available("which-key") then if require("core.util").is_available("which-key") then
require("which-key").add({ require("which-key").add({
@ -179,24 +159,6 @@ local prose_plugs = {
opts = vim.tbl_extend("force", { orphan = true }, opts or {}) opts = vim.tbl_extend("force", { orphan = true }, opts or {})
require("zk").edit(opts, { title = "Zk Orphans" }) require("zk").edit(opts, { title = "Zk Orphans" })
end) end)
require("zk.commands").add("ZkGrep", function(opts)
local collection = {}
local list_opts = { select = { "title", "path", "absPath" } }
require("zk.api").list(vim.env.ZK_NOTEBOOK_DIR, list_opts, function(_, notes)
for _, note in ipairs(notes) do
collection[note.absPath] = note.title or note.path
end
end)
local options = vim.tbl_deep_extend("force", {
prompt_title = "Notes",
search_dirs = { vim.env.ZK_NOTEBOOK_DIR },
disable_coordinates = true,
path_display = function(_, path)
return collection[path]
end,
}, opts or {})
require("telescope.builtin").live_grep(options)
end)
end end
require("zk").setup({ require("zk").setup({
picker = "telescope", picker = "telescope",
@ -237,7 +199,6 @@ local prose_plugs = {
desc = "note search", desc = "note search",
}, },
{ "<leader>nf", "<cmd>ZkMatch<cr>", desc = "find note from selection", mode = "v" }, { "<leader>nf", "<cmd>ZkMatch<cr>", desc = "find note from selection", mode = "v" },
{ "<leader>nw", "<cmd>ZkGrep<cr>", desc = "grep notes" },
{ "<leader>nt", "<cmd>ZkTags<cr>", desc = "note tags" }, { "<leader>nt", "<cmd>ZkTags<cr>", desc = "note tags" },
{ "<leader>nc", "<cmd>ZkCd<cr>", desc = "notedir cd" }, { "<leader>nc", "<cmd>ZkCd<cr>", desc = "notedir cd" },
{ "<leader>no", "<cmd>ZkOrphans { sort = { 'modified' } }<cr>", desc = "orphans list" }, { "<leader>no", "<cmd>ZkOrphans { sort = { 'modified' } }<cr>", desc = "orphans list" },
@ -258,25 +219,22 @@ local prose_plugs = {
-- cite as you write from papis databases -- cite as you write from papis databases
-- ADDITIONAL DEPENDENCIES: papis and yq in shell env -- ADDITIONAL DEPENDENCIES: papis and yq in shell env
-- still same issues: slow, buggy, does not work for me -- {
{ -- "jghauser/papis.nvim",
"jghauser/papis.nvim", -- dependencies = {
dependencies = { -- "kkharji/sqlite.lua",
"kkharji/sqlite.lua", -- "MunifTanjim/nui.nvim",
"MunifTanjim/nui.nvim", -- "pysan3/pathlib.nvim",
"pysan3/pathlib.nvim", -- "nvim-neotest/nvim-nio",
"nvim-neotest/nvim-nio", -- "nvim-treesitter/nvim-treesitter",
-- if not already installed, you may also want: -- },
{ "nvim-telescope/telescope.nvim", optional = true }, -- cond = vim.fn.executable("papis") == 1 and vim.fn.executable("yq") == 1,
-- "hrsh7th/nvim-cmp", -- ft = writing_ft,
}, -- lazy = false,
config = function() -- config = function()
require("papis").setup({ -- require("papis").setup({})
init_filetypes = prose_ft, -- end,
}) -- },
end,
lazy = false,
},
{ {
"barreiroleo/ltex_extra.nvim", "barreiroleo/ltex_extra.nvim",
branch = "dev", branch = "dev",

View file

@ -22,11 +22,14 @@ return {
return "" return ""
-- we don't know if we have python yet, start a check -- we don't know if we have python yet, start a check
else else
if vim.fn.has("python3") == 1 then vim.system({ "poetry", "env", "info", "-p" }, { text = true }, function(obj)
has_pynvim = 1 if obj.code == 0 then
else has_pynvim = 1
has_pynvim = 0 else
end has_pynvim = 0
end
end)
has_pynvim = 0
end end
end end

View file

@ -1,54 +1,68 @@
return { -- simple programmable terminal toggling for nvim return {
-- simpler, programmable and multiple terminal toggling for nvim
{ {
"akinsho/nvim-toggleterm.lua", "akinsho/nvim-toggleterm.lua",
init = function(_)
if require("core.util").is_available("which-key") then
require("which-key").add({ "<leader>t", group = "terminal" })
end
end,
config = function() config = function()
require("toggleterm").setup({ require("toggleterm").setup({
open_mapping = [[<leader>tt]], open_mapping = [[<leader>=]],
insert_mappings = false, -- don't map the key in insert mode insert_mappings = false, -- don't map the key in insert mode
terminal_mappings = false, terminal_mappings = false,
}) })
local Terminal = require("toggleterm.terminal").Terminal local Terminal = require("toggleterm.terminal").Terminal
-- need to disable indentlines since they obscure first line of terminal
if require("core.util").is_available("mini.nvim") then
vim.api.nvim_create_autocmd({ "TermOpen" }, {
pattern = "*",
callback = function()
vim.b.miniindentscope_disable = true
end,
})
end
local function custom_term_set_toggle_key(term) local function custom_term_set_toggle_key(term)
vim.keymap.set("t", "<C-\\>", function() vim.keymap.set("t", "<C-\\>", function()
term:toggle() term:toggle()
end, { silent = true, buffer = true, desc = "terminal" }) end, { silent = true, buffer = true })
end end
local custom_term_default_style = function(cmd) -- create python window
return { local function get_python_cmd()
cmd = cmd, if vim.fn.executable("py") then
return "py"
end
if vim.fn.executable("ptipython") then
return "ptipython"
end
if vim.fn.executable("ipython") then
return "ipython"
end
if vim.fn.executable("ptpython") then
return "ptpython"
end
if vim.fn.executable("python") then
return "python"
end
end
local terms = {
lazygit = Terminal:new({
cmd = "lazygit",
hidden = true, hidden = true,
direction = "float", direction = "float",
float_opts = { border = "curved" }, float_opts = { border = "curved" },
on_open = custom_term_set_toggle_key, on_open = custom_term_set_toggle_key,
} }),
end python = Terminal:new({
local terms = { cmd = get_python_cmd(),
lazygit = Terminal:new(custom_term_default_style("lazygit")), hidden = true,
python = Terminal:new(custom_term_default_style(function() direction = "float",
for _, exec in pairs({ "py", "ptipython", "ipython", "ptpython", "python" }) do float_opts = { border = "curved" },
if vim.fn.executable(exec) > 0 then on_open = custom_term_set_toggle_key,
return exec }),
end
end
end)),
euporie = Terminal:new(custom_term_default_style(function()
local kernel = vim.b.sessionfile
if kernel then
return "euporie-console --connection-file '" .. kernel .. "'"
end
return "euporie-console"
end)),
} }
-- have user decide between floating or split -- create a lazygit window with the lazygit command
local function toggle_split_or_float(term, bang, vertsize) local function toggle_custom_term(term, bang, vertsize)
vertsize = vertsize or vim.o.columns * 0.4 vertsize = vertsize or vim.o.columns * 0.4
if not bang then if not bang then
term.direction = "float" term.direction = "float"
@ -60,25 +74,30 @@ return { -- simple programmable terminal toggling for nvim
end end
end end
vim.api.nvim_create_user_command("Lazygit", function(opts) local function _Pythonterm_toggle(opts)
toggle_split_or_float(terms.lazygit, opts.bang, vim.o.columns * 0.6) toggle_custom_term(terms.python, opts.bang)
end, { desc = "Toggle floating Lazygit terminal", bang = true }) end
vim.api.nvim_create_user_command("Pythonterm", function(opts) local function _Lazygit_toggle(opts)
toggle_split_or_float(terms.python, opts.bang) toggle_custom_term(terms.lazygit, opts.bang, vim.o.columns * 0.6)
end, { desc = "Toggle floating Python terminal", bang = true }) end
vim.api.nvim_create_user_command("Euporieterm", function(opts)
toggle_split_or_float(terms.euporie, opts.bang) vim.api.nvim_create_user_command(
end, { desc = "Toggle floating Euporie terminal", bang = true }) "Lazygit",
_Lazygit_toggle,
{ desc = "Toggle floating Lazygit terminal", bang = true }
)
vim.api.nvim_create_user_command(
"Pythonterm",
_Pythonterm_toggle,
{ desc = "Toggle floating Python terminal", bang = true }
)
end, end,
cmd = { "ToggleTerm", "TermExec", "Lazygit", "Pythonterm", "Euporieterm" }, cmd = { "ToggleTerm", "TermExec", "Lazygit", "Pythonterm" },
keys = { keys = {
{ "<leader>tt", ":ToggleTerm<cr>", desc = "terminal" }, { "<leader>sg", ":Lazygit<cr>", desc = "git floating" },
{ "<leader>tg", ":Lazygit<cr>", desc = "git floating" }, { "<leader>sG", ":Lazygit!<cr>", desc = "git buffer" },
{ "<leader>tG", ":Lazygit!<cr>", desc = "git buffer" }, { "<leader>sp", ":Pythonterm<cr>", desc = "python floating" },
{ "<leader>tp", ":Pythonterm<cr>", desc = "python floating" }, { "<leader>sP", ":Pythonterm!<cr>", desc = "python buffer" },
{ "<leader>tP", ":Pythonterm!<cr>", desc = "python buffer" },
{ "<leader>te", ":Euporieterm<cr>", desc = "euporie floating" },
{ "<leader>tE", ":Euporieterm!<cr>", desc = "euporie buffer" },
}, },
}, },
} }

View file

@ -44,10 +44,10 @@ report.today.sort=urgency-
report.today.columns=id,project,priority,urgency,due,description,tags,scheduled,entry.age,recur report.today.columns=id,project,priority,urgency,due,description,tags,scheduled,entry.age,recur
report.today.labels=,Project,Pri,Urg,Due,Description,Tags,Sched,Age,Recur report.today.labels=,Project,Pri,Urg,Due,Description,Tags,Sched,Age,Recur
# report overview of tasks accomplished today # report overview of tasks accomplished today
report.donetoday.description=Tasks completed today report.today.completed.description=Tasks completed today
report.donetoday.filter=status:completed end.after:tod report.today.completed.filter=status:completed end.after:tod
report.donetoday.columns=id,project,priority,urgency,due,description,tags,scheduled,entry.age,recur report.today.completed.columns=id,project,priority,urgency,due,description,tags,scheduled,entry.age,recur
report.donetoday.labels=,Project,Pri,Urg,Due,Description,Tags,Sched,Age,Recur report.today.completed.labels=,Project,Pri,Urg,Due,Description,Tags,Sched,Age,Recur
# reorder priorities so that explicitly tagged 'Low' items are lower than normal # reorder priorities so that explicitly tagged 'Low' items are lower than normal
uda.priority.values=H,M,,L uda.priority.values=H,M,,L

View file

@ -13,7 +13,7 @@ journals:
default: default:
journal: ~/documents/records/jrnl.md journal: ~/documents/records/jrnl.md
linewrap: 79 linewrap: 79
tagsymbols: + tagsymbols: '+'
template: false template: false
timeformat: '%F %r' timeformat: '%F %r'
version: v4.2 version: v4.1