122 lines
3.1 KiB
Lua
122 lines
3.1 KiB
Lua
|
|
-- Provide a command to create a blank new Python notebook
|
||
|
|
-- note: the metadata is needed for Jupytext to understand how to parse the notebook.
|
||
|
|
-- if you use another language than Python, you should change it in the template.
|
||
|
|
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'
|
||
|
|
})
|
||
|
|
|
||
|
|
return {
|
||
|
|
{
|
||
|
|
'3rd/image.nvim',
|
||
|
|
version = '1.1.0',
|
||
|
|
build = false, -- so that it doesn't build the rock https://github.com/3rd/image.nvim/issues/91#issuecomment-2453430239
|
||
|
|
opts = {
|
||
|
|
backend = 'kitty', -- whatever backend you would like to use
|
||
|
|
max_width = 100,
|
||
|
|
max_height = 20,
|
||
|
|
max_height_window_percentage = math.huge,
|
||
|
|
max_width_window_percentage = math.huge,
|
||
|
|
window_overlap_clear_enabled = true, -- toggles images when windows are overlapped
|
||
|
|
window_overlap_clear_ft_ignore = { 'cmp_menu', 'cmp_docs', '' },
|
||
|
|
}
|
||
|
|
|
||
|
|
},
|
||
|
|
{
|
||
|
|
'benlubas/molten-nvim',
|
||
|
|
version = '^1.0.0', -- use version <2.0.0 to avoid breaking changes
|
||
|
|
dependencies = { '3rd/image.nvim' },
|
||
|
|
build = ':UpdateRemotePlugins',
|
||
|
|
init = function()
|
||
|
|
-- these are examples, not defaults. Please see the readme
|
||
|
|
vim.g.molten_image_provider = 'image.nvim'
|
||
|
|
vim.g.molten_virt_text_output = true
|
||
|
|
vim.g.molten_virt_lines_off_by_1 = true
|
||
|
|
vim.g.molten_auto_open_output = false
|
||
|
|
end,
|
||
|
|
},
|
||
|
|
{
|
||
|
|
'GCBallesteros/jupytext.nvim',
|
||
|
|
opts = {
|
||
|
|
style = 'markdown',
|
||
|
|
output_extension = 'md',
|
||
|
|
force_ft = 'markdown'
|
||
|
|
}
|
||
|
|
},
|
||
|
|
{
|
||
|
|
'jmbuhr/otter.nvim',
|
||
|
|
dependencies = {
|
||
|
|
'nvim-treesitter/nvim-treesitter',
|
||
|
|
},
|
||
|
|
config = function ()
|
||
|
|
local otter = require('otter')
|
||
|
|
otter.setup()
|
||
|
|
|
||
|
|
vim.api.nvim_create_autocmd('BufEnter', {
|
||
|
|
pattern = { '*.ipynb' },
|
||
|
|
callback = function ()
|
||
|
|
if not vim.b._molten_import_output then
|
||
|
|
vim.b._molten_import_output = true
|
||
|
|
vim.cmd('MoltenImportOutput')
|
||
|
|
otter.activate({ 'python' })
|
||
|
|
end
|
||
|
|
end
|
||
|
|
})
|
||
|
|
vim.api.nvim_create_autocmd('BufWritePost', {
|
||
|
|
pattern = { '*.ipynb' },
|
||
|
|
callback = function ()
|
||
|
|
vim.cmd('MoltenExportOutput!')
|
||
|
|
end
|
||
|
|
})
|
||
|
|
|
||
|
|
end
|
||
|
|
}
|
||
|
|
}
|