From 63aa8f2db543d6c576b8a4237a9dbe207ae9ca58 Mon Sep 17 00:00:00 2001 From: tiyn Date: Sat, 11 Apr 2026 09:50:11 +0200 Subject: [PATCH] Nvim: Moved autocmds into plugins --- .config/nvim/lua/autocmd.lua | 110 ----------------------- .config/nvim/lua/plugins/molten.lua | 89 ++++++++++++++++++ .config/nvim/lua/plugins/projections.lua | 26 +++++- 3 files changed, 114 insertions(+), 111 deletions(-) diff --git a/.config/nvim/lua/autocmd.lua b/.config/nvim/lua/autocmd.lua index fe0d464..cbcb9ce 100644 --- a/.config/nvim/lua/autocmd.lua +++ b/.config/nvim/lua/autocmd.lua @@ -4,113 +4,3 @@ vim.api.nvim_create_autocmd("TextYankPost", { 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", -}) diff --git a/.config/nvim/lua/plugins/molten.lua b/.config/nvim/lua/plugins/molten.lua index 169d125..c69ada9 100644 --- a/.config/nvim/lua/plugins/molten.lua +++ b/.config/nvim/lua/plugins/molten.lua @@ -17,4 +17,93 @@ return { vim.g.molten_image_provider = "image.nvim" vim.g.molten_output_win_max_height = 20 end, + config = function() + 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", + }) + end, } diff --git a/.config/nvim/lua/plugins/projections.lua b/.config/nvim/lua/plugins/projections.lua index f90a3e2..3f63934 100644 --- a/.config/nvim/lua/plugins/projections.lua +++ b/.config/nvim/lua/plugins/projections.lua @@ -29,7 +29,31 @@ return { }, }, config = function(_, opts) - require("projections").setup(opts) + local projections = require("projections") + local session = require("projections.session") + + projections.setup(opts) require("telescope").load_extension("projections") + + 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 + vim.schedule(function() + local session_info = session.info(vim.loop.cwd()) + if session_info ~= nil then + session.restore(vim.loop.cwd()) + end + end) + end, + desc = "Restore last session automatically", + }) end, }