mirror of
https://github.com/tiyn/dotfiles.git
synced 2025-10-12 20:41:16 +02:00
nvim: added way to use ipynb in terminal
This commit is contained in:
@@ -12,6 +12,7 @@ vim.api.nvim_create_autocmd({ "VimLeavePre" }, {
|
||||
Session.store(vim.loop.cwd())
|
||||
end,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd({ "VimEnter" }, {
|
||||
callback = function()
|
||||
if vim.fn.argc() ~= 0 then
|
||||
@@ -24,3 +25,92 @@ vim.api.nvim_create_autocmd({ "VimEnter" }, {
|
||||
end,
|
||||
desc = "Restore last session automatically",
|
||||
})
|
||||
|
||||
-- benlubas/molten-nvim
|
||||
local imb = function(e)
|
||||
vim.schedule(function()
|
||||
local kernels = vim.fn.MoltenAvailableKernels()
|
||||
local try_kernel_name = function()
|
||||
local metadata = vim.json.decode(io.open(e.file, "r"):read("a"))["metadata"]
|
||||
return metadata.kernelspec.name
|
||||
end
|
||||
local ok, kernel_name = pcall(try_kernel_name)
|
||||
if not ok or not vim.tbl_contains(kernels, kernel_name) then
|
||||
kernel_name = nil
|
||||
local venv = os.getenv("VIRTUAL_ENV") or os.getenv("CONDA_PREFIX")
|
||||
if venv ~= nil then
|
||||
kernel_name = string.match(venv, "/.+/(.+)")
|
||||
end
|
||||
end
|
||||
if kernel_name ~= nil and vim.tbl_contains(kernels, kernel_name) then
|
||||
vim.cmd(("MoltenInit %s"):format(kernel_name))
|
||||
end
|
||||
vim.cmd("MoltenImportOutput")
|
||||
end)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_autocmd("BufAdd", {
|
||||
pattern = { "*.ipynb" },
|
||||
callback = imb,
|
||||
})
|
||||
|
||||
vim.api.nvim_create_autocmd("BufEnter", {
|
||||
pattern = { "*.ipynb" },
|
||||
callback = function(e)
|
||||
if vim.api.nvim_get_vvar("vim_did_enter") ~= 1 then
|
||||
imb(e)
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
local default_notebook = [[
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
""
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"language": "python",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"codemirror_mode": {
|
||||
"name": "ipython"
|
||||
},
|
||||
"file_extension": ".py",
|
||||
"mimetype": "text/x-python",
|
||||
"name": "python",
|
||||
"nbconvert_exporter": "python",
|
||||
"pygments_lexer": "ipython3"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
||||
]]
|
||||
|
||||
local function new_notebook(filename)
|
||||
local path = filename .. ".ipynb"
|
||||
local file = io.open(path, "w")
|
||||
if file then
|
||||
file:write(default_notebook)
|
||||
file:close()
|
||||
vim.cmd("edit " .. path)
|
||||
else
|
||||
print("Error: Could not open new notebook file for writing.")
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command('NewNotebook', function(opts)
|
||||
new_notebook(opts.args)
|
||||
end, {
|
||||
nargs = 1,
|
||||
complete = 'file'
|
||||
})
|
||||
|
@@ -13,6 +13,7 @@ wk.add({
|
||||
{mode = "n", "<leader>gd", desc = "Git: diff"},
|
||||
{mode = "n", "<leader>s", desc = "Substitute"},
|
||||
{mode = "n", "<leader>t", desc = "Terminal"},
|
||||
{mode = "n", "<leader>r", desc = "Quarto"},
|
||||
{mode = "n", "<C-W>", desc = "Navigation"},
|
||||
-- unmap unwanted commands
|
||||
{mode = "n", "Zt", "<NOP>", noremap = true},
|
||||
@@ -103,4 +104,11 @@ wk.add({
|
||||
{mode = "n", "gf", "<Plug>(leap-from-window)", desc = "Navigation: enter leap mode for other windows", noremap = true},
|
||||
-- gnikdroy/projections.nvim
|
||||
{mode = "n", "<leader>fp", function() vim.cmd("Telescope projections") end, desc = "Telescope: find projects", noremap = true},
|
||||
-- quarto-dev/quarto-nvim
|
||||
{mode = "n", "<leader>rc", require("quarto.runner").run_cell, desc = "Quarto: Run cell", noremap = true, silent = true},
|
||||
{mode = "n", "<leader>ra", require("quarto.runner").run_above, desc = "Quarto: Run cell and above", noremap = true, silent = true},
|
||||
{mode = "n", "<leader>rA", require("quarto.runner").run_all, desc = "Quarto: Run all cells", noremap = true, silent = true},
|
||||
{mode = "n", "<leader>rl", require("quarto.runner").run_line, desc = "Quarto: Run line", noremap = true, silent = true},
|
||||
{mode = "n", "<leader>rr", require("quarto.runner").run_range, desc = "Quarto: Run visual range", noremap = true, silent = true},
|
||||
{mode = "n", "<leader>rL", function() require("quarto.runner").run_all(true) end, desc = "Quarto: Run all cells of all languages", noremap = true, silent = true},
|
||||
})
|
||||
|
61
.config/nvim/lua/plugins/molten.lua
Normal file
61
.config/nvim/lua/plugins/molten.lua
Normal file
@@ -0,0 +1,61 @@
|
||||
return {
|
||||
{
|
||||
"benlubas/molten-nvim",
|
||||
version = "^1.0.0",
|
||||
dependencies = {
|
||||
{
|
||||
"3rd/image.nvim",
|
||||
opts = {
|
||||
backend = "ueberzug",
|
||||
max_width = 100,
|
||||
max_height = 12,
|
||||
max_height_window_percentage = math.huge,
|
||||
max_width_window_percentage = math.huge,
|
||||
window_overlap_clear_enabled = true,
|
||||
window_overlap_clear_ft_ignore = { "cmp_menu", "cmp_docs", "" },
|
||||
}
|
||||
},
|
||||
},
|
||||
build = ":UpdateRemotePlugins",
|
||||
init = function()
|
||||
vim.g.molten_auto_open_output = false
|
||||
vim.g.molten_wrap_output = true
|
||||
vim.g.molten_virt_text_output = true
|
||||
vim.g.molten_virt_lines_off_by_1 = true
|
||||
vim.g.molten_image_provider = "image.nvim"
|
||||
vim.g.molten_output_win_max_height = 20
|
||||
end,
|
||||
},
|
||||
{
|
||||
"GCBallesteros/jupytext.nvim",
|
||||
opts = {
|
||||
style = "markdown",
|
||||
output_extension = "md",
|
||||
force_ft = "markdown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"quarto-dev/quarto-nvim",
|
||||
dependencies = {
|
||||
"jmbuhr/otter.nvim",
|
||||
"nvim-treesitter/nvim-treesitter",
|
||||
},
|
||||
opts = {
|
||||
lspFeatures = {
|
||||
languages = { "python" },
|
||||
chunks = "all",
|
||||
diagnostics = {
|
||||
enabled = true,
|
||||
triggers = { "BufWritePost" },
|
||||
},
|
||||
completion = {
|
||||
enabled = true,
|
||||
},
|
||||
},
|
||||
codeRunner = {
|
||||
enabled = true,
|
||||
default_method = "molten",
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user