Skip to content

Commit 0ea946d

Browse files
committed
feat: more lazy loading
1 parent f6b2f87 commit 0ea946d

File tree

20 files changed

+897
-742
lines changed

20 files changed

+897
-742
lines changed

flake.nix

Lines changed: 125 additions & 115 deletions
Original file line numberDiff line numberDiff line change
@@ -415,126 +415,91 @@
415415
];
416416
});
417417
# plugin, config file
418-
requiredPluginList =
419-
with pkgs;
420-
[
421-
# lazy loading
422-
vimPlugins.lze
423-
vimPlugins.lzextras
424-
colorful-winsep-nvim
425-
vimPlugins.markid
426-
blamer-nvim
427-
428-
# essentials
429-
which-key
430-
431-
# aesthetics
432-
gruvbox-nvim
433-
vimPlugins.lualine-nvim
434-
vimPlugins.tabline-nvim
435-
vimPlugins.nvim-web-devicons
436-
437-
# telescope
438-
telescope-nvim
439-
vimPlugins.telescope-file-browser-nvim
440-
vimPlugins.telescope-live-grep-args-nvim
441-
telescope-ui-select
442-
vimPlugins.yazi-nvim
443-
444-
# github
445-
gitlinker-nvim
446-
447-
# misc
448-
vimPlugins.surround-nvim
449-
vimPlugins.undotree
450-
colorizer
451-
452-
vimPlugins.dressing-nvim
453-
vimPlugins.nui-nvim
454-
# git
455-
vimPlugins.neogit
456-
457-
vimPlugins.gitsigns-nvim
458-
459-
# autopairs
460-
vimPlugins.nvim-autopairs
461-
462-
# lsp
463-
464-
vimPlugins.nvim-nio # async-io
465-
vimPlugins.rust-vim # for formatting
466-
vimPlugins.image-nvim
467-
typst-vim
468-
vimPlugins.vim-ormolu # haskell
469-
# vimPlugins.coq_nvim
470-
vimPlugins.lsp_signature-nvim
471-
vimPlugins.nvim-cmp
472-
vimPlugins.cmp-path
473-
vimPlugins.cmp-buffer
474-
vimPlugins.cmp-cmdline
475-
vimPlugins.cmp-nvim-lsp
476-
vimPlugins.lspkind-nvim
477-
# lsp-config
478-
vimPlugins.plenary-nvim
479-
vimPlugins.popup-nvim
480-
481-
vimPlugins.conform-nvim
482-
483-
fidget
484-
vimPlugins.trouble-nvim
485-
# copilot-lua
486-
# copilot-cmp
487-
node-type-nvim
488-
floating-input
489-
490-
symbols-nvim
491-
492-
# treesitter
493-
nvim-async
494-
(nvim-ufo.overrideAttrs (oa: {
495-
doCheck = false;
496-
}))
497-
comment-nvim
498-
#vimPlugins.nvim-treesitter-context
499-
#vimPlugins.nvim-treesitter-textobjects
500-
#nvim-treesitter
501-
502-
# (builtins.attrValues ((lib.filterAttrs (n: v: !(builtins.elem v ["comment"]))) pkgs.vimPlugins.nvim-treesitter.grammarPlugins))
503-
504-
((pkgs.vimPlugins.nvim-treesitter.overrideAttrs (oldAttrs: {
505-
src = pkgs.nvim-treesitter-src;
506-
})).withAllGrammars
507-
)
508-
509-
# (builtins.trace (lib.filterAttrs (name: val: name != "comment") pkgs.vimPlugins.nvim-treesitter.grammarPlugins)
510-
vimPlugins.telescope-zoxide
511-
# )
512-
vimPlugins.nvim-ts-autotag
513-
vimPlugins.rainbow-delimiters-nvim
514-
vim-illuminate
515-
ts-node-action
516-
517-
vimPlugins.haskell-tools-nvim
518-
]
519-
# ++ lib.optional (system != "aarch64-darwin") [
520-
# rust-owl.packages.${system}.rustowl-nvim
521-
# ]
522-
++ (
523-
pkgs.vimPlugins.nvim-treesitter.grammarPlugins
524-
|> (lib.filterAttrs (n: _: !(builtins.elem n [ "comment" ])))
525-
|> builtins.attrValues
526-
);
418+
requiredPluginList = with pkgs; [
419+
# lazy loading
420+
vimPlugins.lze
421+
vimPlugins.lzextras
422+
# colorful-winsep-nvim
423+
# vimPlugins.markid
424+
# blamer-nvim
425+
426+
# essentials
427+
which-key
428+
429+
# aesthetics
430+
gruvbox-nvim
431+
vimPlugins.lualine-nvim
432+
vimPlugins.tabline-nvim
433+
vimPlugins.nvim-web-devicons
434+
435+
# github
436+
# gitlinker-nvim
437+
438+
# misc
439+
440+
# vimPlugins.dressing-nvim
441+
vimPlugins.nui-nvim
442+
# git
443+
# vimPlugins.neogit
444+
445+
# vimPlugins.gitsigns-nvim
446+
447+
# autopairs
448+
# vimPlugins.nvim-autopairs
449+
450+
# lsp
451+
452+
vimPlugins.nvim-nio # async-io
453+
vimPlugins.rust-vim # for formatting
454+
vimPlugins.image-nvim
455+
typst-vim
456+
vimPlugins.vim-ormolu # haskell
457+
# vimPlugins.coq_nvim
458+
vimPlugins.lsp_signature-nvim
459+
vimPlugins.nvim-cmp
460+
vimPlugins.cmp-path
461+
vimPlugins.cmp-buffer
462+
vimPlugins.cmp-cmdline
463+
vimPlugins.cmp-nvim-lsp
464+
vimPlugins.lspkind-nvim
465+
# lsp-config vimPlugins.plenary-nvim
466+
vimPlugins.popup-nvim
467+
468+
# vimPlugins.conform-nvim
469+
470+
# fidget
471+
# vimPlugins.trouble-nvim
472+
# copilot-lua
473+
# copilot-cmp
474+
# node-type-nvim
475+
# floating-input
476+
477+
# symbols-nvim
478+
479+
# treesitter
480+
nvim-async
481+
482+
# (builtins.attrValues ((lib.filterAttrs (n: v: !(builtins.elem v ["comment"]))) pkgs.vimPlugins.nvim-treesitter.grammarPlugins))
483+
484+
# ((pkgs.vimPlugins.nvim-treesitter.overrideAttrs (oldAttrs: {
485+
# src = pkgs.nvim-treesitter-src;
486+
# })).withAllGrammars
487+
# )
488+
489+
# (builtins.trace (lib.filterAttrs (name: val: name != "comment") pkgs.vimPlugins.nvim-treesitter.grammarPlugins)
490+
# vimPlugins.telescope-zoxide
491+
# )
492+
# vimPlugins.nvim-ts-autotag
493+
# vimPlugins.rainbow-delimiters-nvim
494+
# vim-illuminate
495+
# ts-node-action
496+
];
527497

528498
luaModules = [
529499
"essentials"
530500
"aesthetics"
531-
"telescope"
532-
"github"
533-
"misc"
534-
"treesitter"
535-
"git"
536-
"autopairs"
537501
"lsp"
502+
"completion"
538503
];
539504
luaLazyModules = [
540505
"rustaceanvim"
@@ -548,6 +513,15 @@
548513
"typescript"
549514
"coq"
550515
"crates"
516+
"telescope"
517+
"gitlinker"
518+
"git"
519+
"gitsigns"
520+
"treesitter"
521+
"autopairs"
522+
"misc"
523+
"ui"
524+
"formatting"
551525
];
552526

553527
luaRequire' = module: builtins.toString ./required_lua_modules + "/${module}.lua";
@@ -603,6 +577,42 @@
603577
coq-lsp-nvim
604578
coqtail
605579
vimPlugins.crates-nvim
580+
telescope-nvim
581+
vimPlugins.telescope-file-browser-nvim
582+
vimPlugins.telescope-live-grep-args-nvim
583+
telescope-ui-select
584+
vimPlugins.telescope-zoxide
585+
vimPlugins.yazi-nvim
586+
gitlinker-nvim
587+
vimPlugins.neogit
588+
vimPlugins.gitsigns-nvim
589+
blamer-nvim
590+
(nvim-ufo.overrideAttrs (oa: {
591+
doCheck = false;
592+
}))
593+
comment-nvim
594+
# ((pkgs.vimPlugins.nvim-treesitter.overrideAttrs (oldAttrs: {
595+
# src = pkgs.nvim-treesitter-src;
596+
# })).withAllGrammars
597+
# )
598+
vimPlugins.nvim-ts-autotag
599+
vimPlugins.rainbow-delimiters-nvim
600+
vim-illuminate
601+
vimPlugins.surround-nvim
602+
vimPlugins.undotree
603+
colorizer
604+
vimPlugins.nvim-autopairs
605+
vimPlugins.haskell-tools-nvim
606+
vimPlugins.markid
607+
ts-node-action
608+
colorful-winsep-nvim
609+
fidget
610+
vimPlugins.trouble-nvim
611+
symbols-nvim
612+
node-type-nvim
613+
floating-input
614+
vimPlugins.dressing-nvim
615+
vimPlugins.conform-nvim
606616
];
607617
};
608618
luaFiles = map luaRequire' luaModules ++ map luaLazyRequire' luaLazyModules;

lazy_lua_modules/autopairs.lua

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
local lze = require("lze")
2+
3+
lze.load({
4+
"nvim-autopairs",
5+
event = { "InsertEnter" },
6+
after = function()
7+
require("nvim-autopairs").setup({})
8+
end,
9+
})

lazy_lua_modules/claudecode.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ require("lze").load({
1515
after = function()
1616
require("snacks").setup()
1717
require("claudecode").setup()
18-
18+
1919
-- keymaps are handled by lze keys, but we can double check
2020
end,
2121
})

lazy_lua_modules/formatting.lua

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
require("lze").load({
2+
"conform.nvim",
3+
event = { "BufWritePre" },
4+
cmd = { "FormatDisable", "FormatEnable", "ConformInfo" },
5+
keys = {
6+
{ "<leader>f", desc = "Format" },
7+
},
8+
after = function()
9+
require("conform").setup({
10+
formatters_by_ft = {
11+
nix = { "nixfmt" },
12+
gofmt = { "gofmt" },
13+
ruff_format = { "ruff" },
14+
lua = { "stylua" },
15+
rustfmt = { "rustfmt" },
16+
shellcheck = { "shellcheck" },
17+
shfmt = { "shfmt" },
18+
just = { "just" },
19+
typst = { "prettypst" },
20+
html = { "prettierd" },
21+
ocaml = { "ocamlformat" },
22+
haskell = { "fourmolu" },
23+
},
24+
format_on_save = function(bufnr)
25+
if vim.g.disable_autoformat or vim.b[bufnr].disable_autoformat then
26+
return
27+
end
28+
return { timeout_ms = 500, lsp_format = "fallback" }
29+
end,
30+
})
31+
32+
vim.api.nvim_create_user_command("FormatDisable", function(args)
33+
if args.bang then
34+
vim.b.disable_autoformat = true
35+
else
36+
vim.g.disable_autoformat = true
37+
end
38+
end, {
39+
desc = "Disable autoformat-on-save",
40+
bang = true,
41+
})
42+
vim.api.nvim_create_user_command("FormatEnable", function()
43+
vim.b.disable_autoformat = false
44+
vim.g.disable_autoformat = false
45+
end, {
46+
desc = "Re-enable autoformat-on-save",
47+
})
48+
49+
-- This keymap was in lsp.lua pointing to lsp formatting, but conform usually replaces it
50+
vim.api.nvim_set_keymap("n", "<leader>f", "<cmd>lua require('conform').format({ lsp_fallback = true })<cr>", {})
51+
end,
52+
})

lazy_lua_modules/git.lua

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
local lze = require("lze")
2+
3+
lze.load({
4+
"blamer-nvim",
5+
cmd = { "BlamerToggle" },
6+
keys = {
7+
{ "<leader>gb", "<cmd>BlamerToggle<cr>", desc = "Git Blame Toggle" },
8+
},
9+
load = function(name)
10+
vim.cmd("packadd " .. name)
11+
end,
12+
after = function()
13+
require('blamer').setup({
14+
date_format = "%m-%d-%Y %H:%M",
15+
window_width = 40,
16+
show_summary = true
17+
})
18+
vim.g.blamer_show_in_insert_modes = 0
19+
vim.g.blamer_ignored_filetypes = { 'TelescopePrompt', 'TelescopeResults' }
20+
21+
vim.api.nvim_set_keymap('n', '<leader>gb', '<cmd>BlamerToggle<cr>', {})
22+
end,
23+
})
24+
25+
-- Neogit manual lazy load to avoid lz/keys issues
26+
local neogit_loaded = false
27+
local function load_neogit()
28+
if neogit_loaded then return end
29+
vim.cmd("packadd neogit")
30+
require("neogit").setup({
31+
signs = {
32+
section = { "", "" },
33+
item = { "", "" },
34+
hunk = { "", "" },
35+
},
36+
})
37+
neogit_loaded = true
38+
end
39+
40+
vim.keymap.set('n', '<leader>gs', function()
41+
load_neogit()
42+
require("neogit").open()
43+
end, { desc = "Neogit" })

lazy_lua_modules/gitlinker.lua

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
local lze = require("lze")
2+
3+
lze.load({
4+
"gitlinker.nvim",
5+
keys = {
6+
{ "<leader>gy", desc = "Git Linker" },
7+
},
8+
after = function()
9+
require("gitlinker").setup()
10+
end,
11+
})

0 commit comments

Comments
 (0)