diff --git a/lua/custom/plugins/configs/jukit.lua b/lua/custom/plugins/configs/jukit.lua new file mode 100644 index 0000000..0610eb9 --- /dev/null +++ b/lua/custom/plugins/configs/jukit.lua @@ -0,0 +1,35 @@ +local autocmd = vim.api.nvim_create_autocmd +local M = {} + +M.lazy_load_module = function() + + + autocmd({"BufRead", "BufNewFile"},{ + group = vim.api.nvim_create_augroup("plantuml", {}), + callback = function() + plantuml_patterns = { + "%.pu", "%.uml", "%.plantuml", "%.puml", "%.iuml" + } + + local bufname = vim.api.nvim_buf_get_name(0) + for _,ft in ipairs(plantuml_patterns) do + if vim.fn.fnamemodify(bufname, ":t"):match(ft) then + vim.defer_fn(function() + require("packer").loader("plantuml-syntax") + end,0) + return + end + end + + firstline = vim.api.nvim_buf_get_lines(0,0,1,true)[1] + if firestline ~= "" and firstline:match("^@startuml%s*") then + vim.defer_fn(function() + require("packer").loader("plantuml-syntax") + end,0) + end + end + }) + +end + +return M diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index f5fef12..38ecf57 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -803,6 +803,12 @@ return { -- jupyter notebook ["luk400/vim-jukit"] = { keys = 'jup', + setup = function() + patterns = { + '.*ipynb$' + } + require('spike.utils').lazy_load_module(patterns, 'vim-jukit') + end, opt = true, }, diff --git a/lua/spike/utils/init.lua b/lua/spike/utils/init.lua index ac6dc73..475697c 100644 --- a/lua/spike/utils/init.lua +++ b/lua/spike/utils/init.lua @@ -1,3 +1,5 @@ +local autocmd = vim.api.nvim_create_autocmd +local api = vim.api local M = {} M["unload_lua_ns"] = function (prefix) @@ -64,6 +66,27 @@ end -- 1670185951498000 -- M.human_timestamp() +--lazy loads a packer plugin when a file matches {patterns} +---@param patterns table matched patterns +---@param plugin string plugin to load whan pattern is matched +M.lazy_load_module = function(patterns, plugin) + + autocmd({"BufRead", "BufNewFile"},{ + group = api.nvim_create_augroup("blob42_lazyload_plugin", {}), + callback = function() + + local bufname = api.nvim_buf_get_name(0) + for _,pt in ipairs(patterns) do + if vim.fn.fnamemodify(bufname, ":t"):match(pt) then + require("packer").loader(plugin) + end + end + + end + }) +end + + return M