-- highlighting yanked regions vim.api.nvim_create_autocmd("TextYankPost", { callback = function() vim.highlight.on_yank({higroup="YankHighlight"}) end, }) -- gnikdroy/projections.nvim local Session = require("projections.session") vim.api.nvim_create_autocmd({ "VimLeavePre" }, { callback = function() Session.store(vim.loop.cwd()) end, }) vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = function() if vim.fn.argc() ~= 0 then return end local session_info = Session.info(vim.loop.cwd()) if session_info ~= nil then Session.restore(vim.loop.cwd()) end 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' })