Skip to content

Commit f6b2f87

Browse files
committed
feat: more lazy loading
1 parent 6823e55 commit f6b2f87

9 files changed

Lines changed: 287 additions & 298 deletions

File tree

flake.nix

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -451,8 +451,6 @@
451451

452452
vimPlugins.dressing-nvim
453453
vimPlugins.nui-nvim
454-
vimPlugins.render-markdown-nvim
455-
vimPlugins.img-clip-nvim
456454
# git
457455
vimPlugins.neogit
458456

@@ -491,10 +489,6 @@
491489

492490
symbols-nvim
493491

494-
# claude code
495-
vimPlugins.snacks-nvim
496-
claudecode-nvim
497-
498492
# treesitter
499493
nvim-async
500494
(nvim-ufo.overrideAttrs (oa: {
@@ -520,11 +514,6 @@
520514
vim-illuminate
521515
ts-node-action
522516

523-
# TODO lazy load these
524-
vimPlugins.typescript-tools-nvim
525-
vimPlugins.crates-nvim
526-
coqtail
527-
coq-lsp-nvim
528517
vimPlugins.haskell-tools-nvim
529518
]
530519
# ++ lib.optional (system != "aarch64-darwin") [
@@ -546,8 +535,6 @@
546535
"git"
547536
"autopairs"
548537
"lsp"
549-
"claudecode"
550-
#"avante"
551538
];
552539
luaLazyModules = [
553540
"rustaceanvim"
@@ -556,6 +543,11 @@
556543
"parinfer"
557544
"ghostty"
558545
"lean"
546+
"claudecode"
547+
"lsp_servers"
548+
"typescript"
549+
"coq"
550+
"crates"
559551
];
560552

561553
luaRequire' = module: builtins.toString ./required_lua_modules + "/${module}.lua";
@@ -605,6 +597,12 @@
605597
parinfer-rust-nvim
606598
ghostty-nvim
607599
vimPlugins.lean-nvim
600+
vimPlugins.snacks-nvim
601+
claudecode-nvim
602+
vimPlugins.typescript-tools-nvim
603+
coq-lsp-nvim
604+
coqtail
605+
vimPlugins.crates-nvim
608606
];
609607
};
610608
luaFiles = map luaRequire' luaModules ++ map luaLazyRequire' luaLazyModules;

lazy_lua_modules/claudecode.lua

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
require("lze").load({
2+
"claudecode-nvim",
3+
cmd = { "ClaudeCode", "ClaudeCodeFocus", "ClaudeCodeLog" },
4+
keys = {
5+
{ "<leader>ac", desc = "Toggle Claude" },
6+
{ "<leader>af", desc = "Focus Claude" },
7+
{ "<leader>ar", desc = "Resume Claude" },
8+
{ "<leader>aC", desc = "Continue Claude" },
9+
{ "<leader>am", desc = "Select Claude model" },
10+
{ "<leader>ab", desc = "Add current buffer" },
11+
{ "<leader>as", mode = "v", desc = "Send to Claude" },
12+
{ "<leader>aa", desc = "Accept diff" },
13+
{ "<leader>ad", desc = "Deny diff" },
14+
},
15+
after = function()
16+
require("snacks").setup()
17+
require("claudecode").setup()
18+
19+
-- keymaps are handled by lze keys, but we can double check
20+
end,
21+
})

lazy_lua_modules/coq.lua

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
require("lze").load({
2+
"coq-lsp-nvim",
3+
ft = { "coq" },
4+
after = function()
5+
vim.g.loaded_coqtail = 1
6+
vim.g["coqtail#supported"] = 0
7+
require("coq-lsp").setup()
8+
9+
-- telescope picker for coq panels (moved from telescope.lua as it seems coq specific)
10+
-- Actually, the picker function `coq_panels_picker` was defined in telescope.lua.
11+
-- I should probably leave it there or move it here if I can lazy load it.
12+
-- For now I'll leave the picker in telescope.lua but maybe the keymap here?
13+
-- The user had <leader>bc mapped to it.
14+
end,
15+
})

lazy_lua_modules/crates.lua

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
require("lze").load({
2+
"crates.nvim",
3+
event = { "BufRead Cargo.toml" },
4+
after = function()
5+
require("crates").setup({
6+
text = {
7+
loading = " Loading...",
8+
version = " %s",
9+
prerelease = " %s",
10+
yanked = " %s yanked",
11+
nomatch = " Not found",
12+
upgrade = " %s",
13+
error = " Error fetching crate",
14+
},
15+
popup = {
16+
text = {
17+
title = " # %s ",
18+
version = " %s ",
19+
prerelease = " %s ",
20+
yanked = " %s yanked ",
21+
feature = " %s ",
22+
enabled = " * %s ",
23+
transitive = " ~ %s ",
24+
},
25+
},
26+
})
27+
28+
vim.api.nvim_set_keymap("n", "<leader>cu", '<cmd>lua require("crates").update_crate()<cr>', {})
29+
vim.api.nvim_set_keymap("n", "<leader>cua", '<cmd>lua require("crates").update_all_crate()<cr>', {})
30+
vim.api.nvim_set_keymap("n", "<leader>cU", '<cmd>lua require("crates").upgrade_crate()<cr>', {})
31+
vim.api.nvim_set_keymap("n", "<leader>cUa", '<cmd>lua require("crates").upgrade_all_crate()<cr>', {})
32+
end,
33+
})

lazy_lua_modules/lsp_servers.lua

Lines changed: 190 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,190 @@
1+
local lze = require("lze")
2+
3+
-- Terraform
4+
lze.load({
5+
"terraformls", -- Virtual name, not a plugin name
6+
ft = { "terraform", "tf" },
7+
after = function()
8+
vim.lsp.config("terraformls", {
9+
cmd = { "terraform-lsp" },
10+
})
11+
vim.lsp.enable("terraformls")
12+
end,
13+
})
14+
15+
-- Lua
16+
lze.load({
17+
"lua_ls",
18+
ft = { "lua" },
19+
after = function()
20+
vim.lsp.config("lua_ls", {
21+
cmd = { "lua-language-server" },
22+
settings = {
23+
Lua = {
24+
runtime = {
25+
version = "LuaJIT",
26+
},
27+
diagnostics = {
28+
globals = { "vim" },
29+
},
30+
workspace = {
31+
library = vim.api.nvim_get_runtime_file("", true),
32+
checkThirdParty = false,
33+
},
34+
telemetry = {
35+
enable = false,
36+
},
37+
},
38+
},
39+
})
40+
vim.lsp.enable("lua_ls")
41+
end,
42+
})
43+
44+
-- C/C++
45+
lze.load({
46+
"clangd",
47+
ft = { "c", "cpp", "objc", "objcpp" },
48+
after = function()
49+
vim.lsp.config("clangd", {
50+
cmd = { "clangd" },
51+
})
52+
vim.lsp.enable("clangd")
53+
end,
54+
})
55+
56+
-- Go
57+
lze.load({
58+
"gopls",
59+
ft = { "go", "gomod" },
60+
after = function()
61+
vim.lsp.config("gopls", {
62+
cmd = { "gopls" },
63+
})
64+
vim.lsp.enable("gopls")
65+
end,
66+
})
67+
68+
-- R
69+
lze.load({
70+
"r_language_server",
71+
ft = { "r", "rmd" },
72+
after = function()
73+
vim.lsp.config("r_language_server", {
74+
cmd = { "R", "--slave", "-e", "langaugeserver::run()" },
75+
})
76+
vim.lsp.enable("r_language_sever")
77+
end,
78+
})
79+
80+
-- OCaml
81+
lze.load({
82+
"ocamllsp",
83+
ft = { "ocaml" },
84+
after = function()
85+
vim.lsp.config("ocamllsp", {
86+
cmd = { "ocamllsp", "--fallback-read-dot-merlin" },
87+
})
88+
vim.lsp.enable("ocamllsp")
89+
90+
vim.api.nvim_create_autocmd({ "BufWritePost" }, {
91+
pattern = { "*.ml", "*.mli" },
92+
callback = function()
93+
vim.wo.foldenable = false
94+
end,
95+
})
96+
end,
97+
})
98+
99+
-- Nix
100+
lze.load({
101+
"nil_ls",
102+
ft = { "nix" },
103+
after = function()
104+
vim.lsp.config("nil_ls", {
105+
settings = {
106+
["nil"] = {
107+
nix = {
108+
flake = {
109+
autoArchive = false,
110+
autoEvalInputs = false,
111+
},
112+
},
113+
},
114+
},
115+
})
116+
vim.lsp.enable("nil_ls")
117+
end,
118+
})
119+
120+
-- Python (Ruff)
121+
lze.load({
122+
"ruff",
123+
ft = { "python" },
124+
after = function()
125+
vim.lsp.config("ruff", {
126+
init_options = {
127+
settings = {},
128+
},
129+
})
130+
vim.lsp.enable("ruff")
131+
end,
132+
})
133+
134+
-- Python (Ty - assuming it's for python or similar, based on previous file)
135+
lze.load({
136+
"ty",
137+
ft = { "python" }, -- Assuming python, if not I can adjust
138+
after = function()
139+
vim.lsp.config("ty", {})
140+
vim.lsp.enable("ty")
141+
end,
142+
})
143+
144+
-- Just
145+
lze.load({
146+
"just",
147+
ft = { "just" },
148+
after = function()
149+
vim.lsp.config("just", {})
150+
vim.lsp.enable("just")
151+
end,
152+
})
153+
154+
-- Typst
155+
lze.load({
156+
"tinymist",
157+
ft = { "typst" },
158+
after = function()
159+
vim.lsp.enable("tinymist")
160+
require("image").setup({})
161+
vim.g.typst_cmd = "typst"
162+
vim.g.typst_pdf_viewer = "zathura"
163+
vim.g.typst_conceal = true
164+
165+
vim.api.nvim_create_autocmd("FileType", {
166+
pattern = "typst",
167+
callback = function()
168+
vim.b.lsp_signature_enabled = false
169+
end,
170+
})
171+
172+
vim.api.nvim_set_keymap("n", "<leader>mb", "<cmd>TypstWatch<cr>", {})
173+
end,
174+
})
175+
176+
-- JSON
177+
lze.load({
178+
"jsonls",
179+
ft = { "json", "jsonc" },
180+
after = function()
181+
local capabilities = vim.lsp.protocol.make_client_capabilities()
182+
capabilities.textDocument.completion.completionItem.snippetSupport = true
183+
184+
vim.lsp.config("jsonls", {
185+
cmd = { "vscode-json-language-server", "--stdio" },
186+
capabilities = capabilities,
187+
})
188+
vim.lsp.enable("jsonls")
189+
end
190+
})

lazy_lua_modules/typescript.lua

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
require("lze").load({
2+
"typescript-tools-nvim",
3+
ft = { "typescript", "javascript", "typescriptreact", "javascriptreact" },
4+
after = function()
5+
require("typescript-tools").setup({
6+
tsserver_path = "./node_modules/typescript/lib/",
7+
})
8+
9+
vim.api.nvim_set_keymap("n", "<leader>na", '<cmd>lua require("ts-node-action").node_action({})<cr>', {})
10+
end,
11+
})

required_lua_modules/avante.lua

Lines changed: 0 additions & 37 deletions
This file was deleted.

required_lua_modules/claudecode.lua

Lines changed: 0 additions & 16 deletions
This file was deleted.

0 commit comments

Comments
 (0)