-- 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 } }