Skip to content

Commit 7dc371a

Browse files
committed
feat(lazy): pin plugins to commits older than 30 days
1 parent ff7e167 commit 7dc371a

9 files changed

Lines changed: 367 additions & 2 deletions

File tree

.gitignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,2 @@
11
.nvim.env
22
.todo.txt
3-
lazy-lock.json

colors/nordstone.lua

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -368,6 +368,7 @@ loadColorSet({
368368
StatusLineModeVisualText = { fg = cmode.x },
369369
StatusLineProject = { link = "StatusLine" },
370370
StatusLineSeparator = { fg = c.nord3 },
371+
StatusLineSpinner = { fg = c.nord15 },
371372
})
372373

373374
-- winbar

init.lua

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,12 @@ vim.g.maplocalleader = vim.keycode(",")
1010
-- Load lazy package manager.
1111
-- https://github.com/folke/lazy.nvim
1212
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
13-
if not vim.uv.fs_stat(lazypath) then
13+
if not (vim.uv or vim.loop).fs_stat(lazypath) then
1414
local lazyrepo = "https://github.com/folke/lazy.nvim.git"
1515
local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath })
16+
if vim.v.shell_error == 0 then
17+
vim.fn.system({ "git", "-C", lazypath, "checkout", "306a05526ada86a7b30af95c5cc81ffba93fef97" })
18+
end
1619
if vim.v.shell_error ~= 0 then
1720
vim.api.nvim_echo({
1821
{ "Failed to clone lazy.nvim:\n", "ErrorMsg" },

lazy-lock.json

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
{
2+
"auto-session": { "branch": "main", "commit": "6ce71d1b24f32d15043881859663fabbe24421bc" },
3+
"blink.cmp": { "branch": "main", "commit": "78336bc89ee5365633bcf754d93df01678b5c08f" },
4+
"briefing.nvim": { "branch": "main", "commit": "8e0d66abdfe852ad5c44b62bd699b4912a50d746" },
5+
"codecompanion.nvim": { "branch": "main", "commit": "0bc486860666272c7ed73612aed56301b1b8e24d" },
6+
"codediff.nvim": { "branch": "feat/explorer-scroll-diff-buffers", "commit": "858a25c96f446ccbcde5c87366e1e02e0a7f4146" },
7+
"conform.nvim": { "branch": "master", "commit": "dca1a190aa85f9065979ef35802fb77131911106" },
8+
"copilot.lua": { "branch": "master", "commit": "78c638293f0ea6a2245eca46e9933ee271792d7e" },
9+
"dial.nvim": { "branch": "master", "commit": "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
10+
"flash.nvim": { "branch": "main", "commit": "fcea7ff883235d9024dc41e638f164a450c14ca2" },
11+
"gitportal.nvim": { "branch": "main", "commit": "31f48653c4b179009e89f42fa31acada3f645a88" },
12+
"gitsigns.nvim": { "branch": "main", "commit": "6d808f99bd63303646794406e270bd553ad7792e" },
13+
"grapple.nvim": { "branch": "main", "commit": "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" },
14+
"gx.nvim": { "branch": "main", "commit": "ba9c408fc0130fc4548760c3933a81b58fc50de8" },
15+
"hbac.nvim": { "branch": "main", "commit": "8b02829c5f448830ef3ac183363d94c1576f2ad7" },
16+
"kulala.nvim": { "branch": "main", "commit": "6656c9d332735ca6a27725e0fb45a1715c4372d9" },
17+
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
18+
"mason-lspconfig.nvim": { "branch": "main", "commit": "0a3b42c3e503df87aef6d6513e13148381495c3a" },
19+
"mason-tool-installer.nvim": { "branch": "main", "commit": "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" },
20+
"mason.nvim": { "branch": "main", "commit": "12ddd182d9efbdc848b540f16484a583d52da0fb" },
21+
"mini.ai": { "branch": "main", "commit": "43eb2074843950a3a25aae56a5f41362ec043bfa" },
22+
"mini.align": { "branch": "main", "commit": "6f3c69cd57134ad8fbf1e85dcdc90cb37a8c75c8" },
23+
"mini.bracketed": { "branch": "main", "commit": "efb969a6a9583a5d48bfbe36363769351e38f967" },
24+
"mini.clue": { "branch": "main", "commit": "43bd6cf1c3ccdea46d403c32dbc4629fa6afa09d" },
25+
"mini.hipatterns": { "branch": "main", "commit": "9eff319bbe66adfaf781a0d0e174baa08ba94909" },
26+
"mini.move": { "branch": "main", "commit": "74d140143b1bb905c3d0aebcfc2f216fd237080e" },
27+
"mini.notify": { "branch": "main", "commit": "9e68ab0a54f90567b4fec2de22c851dba8480439" },
28+
"mini.surround": { "branch": "main", "commit": "2715e04bea3ec9244f15b421dc5b18c0fe326210" },
29+
"multicursor.nvim": { "branch": "main", "commit": "704b99f10a72cc05d370cfeb294ff83412a8ab55" },
30+
"neocodeium": { "branch": "main", "commit": "bfe790d78e66adaa95cb50a8c75c64a752336e9c" },
31+
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
32+
"nvim-autopairs": { "branch": "master", "commit": "59bce2eef357189c3305e25bc6dd2d138c1683f5" },
33+
"nvim-hlslens": { "branch": "main", "commit": "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
34+
"nvim-lspconfig": { "branch": "master", "commit": "e146efacbafed3789ac568abcc5a981c5decaa58" },
35+
"nvim-spider": { "branch": "main", "commit": "4fdd56a4f45bca13a607632e15a6f9f8d1b1f99e" },
36+
"nvim-treesitter": { "branch": "main", "commit": "4916d6592ede8c07973490d9322f187e07dfefac" },
37+
"nvim-treesitter-context": { "branch": "master", "commit": "b0c45cefe2c8f7b55fc46f34e563bc428ef99636" },
38+
"nvim-treesitter-textobjects": { "branch": "main", "commit": "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
39+
"nvim-ts-autotag": { "branch": "main", "commit": "88c1453db4ba7dd24131086fe51fdf74e587d275" },
40+
"nvim-web-devicons": { "branch": "master", "commit": "c72328a5494b4502947a022fe69c0c47e53b6aa6" },
41+
"oil.nvim": { "branch": "master", "commit": "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
42+
"other.nvim": { "branch": "main", "commit": "1d48e090f6d1d53dda9fb5094af3f2006ebbb858" },
43+
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
44+
"readline.nvim": { "branch": "main", "commit": "5cb27349bc01cdcdb3d3494e5337d8b3834aef1a" },
45+
"scope.nvim": { "branch": "main", "commit": "228aabdb1b9cc74f0c0ccec88e79873857236e49" },
46+
"sidekick.nvim": { "branch": "main", "commit": "208e1c5b8170c01fd1d07df0139322a76479b235" },
47+
"smart-splits.nvim": { "branch": "master", "commit": "78b9d3bd21fe479690ae5e08a1bf3602698466d8" },
48+
"snacks.nvim": { "branch": "main", "commit": "ad9ede6a9cddf16cedbd31b8932d6dcdee9b716e" },
49+
"sort.nvim": { "branch": "main", "commit": "fa6318fc6676294bff0fd56ae8e8f9552be1ac7e" },
50+
"substitute.nvim": { "branch": "main", "commit": "0d2077398552f069abccbd964a26dd7cd26882cd" },
51+
"tailwind-hover.nvim": { "branch": "main", "commit": "431e45bb19adcb9846ef93e22c39306c5ee2fc6e" },
52+
"tailwindcss-colors.nvim": { "branch": "main", "commit": "1d4bff588827714db8439ee086b7525a8fb8c58f" },
53+
"tailwindcss-dial.nvim": { "branch": "main", "commit": "dd8fe2e24e118e8a4dbdcaf36d4c7b98faa09abb" },
54+
"tailwindcss-shades.nvim": { "branch": "main", "commit": "f68033b5301ad30e6eb4e1da3dad286806b24610" },
55+
"termite.nvim": { "branch": "main", "commit": "a3900826879d5172d60053d69f70b2f1219f38e3" },
56+
"text-case.nvim": { "branch": "main", "commit": "ce94319de26a3947736825001b346d75bd4ad757" },
57+
"timber.nvim": { "branch": "main", "commit": "1038a15f846e73840819355cab1c4346e6cf97f6" },
58+
"treewalker.nvim": { "branch": "main", "commit": "6fbceceb8966620da8970b727b6daa358b982805" },
59+
"vim-fugitive": { "branch": "master", "commit": "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" },
60+
"vim-matchup": { "branch": "master", "commit": "dccb2d12ef2a703d2f076b3cda36a3339449d1eb" },
61+
"vim-test": { "branch": "master", "commit": "bc0e94059de40641d163516a83c63bc45c716acf" },
62+
"vim-wakatime": { "branch": "master", "commit": "5f458398a217735b908ae40d1c2851cc69e7d817" },
63+
"visual-whitespace.nvim": { "branch": "main", "commit": "49ff2b1c572ed7033a584381fa23aad2bf3bb258" },
64+
"window-picker": { "branch": "main", "commit": "6382540b2ae5de6c793d4aa2e3fe6dbb518505ec" },
65+
"winshift.nvim": { "branch": "main", "commit": "f38a05ffe3294db3efcf28b961877cf1139264b0" },
66+
"yanky.nvim": { "branch": "main", "commit": "784188e0a7363e762e53140f39124d786aec0832" },
67+
"yazi.nvim": { "branch": "main", "commit": "172bd64a4c2d3adbe2e0ef56289f47ffe139ca55" }
68+
}

lua/lib/init.lua

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
local env = require("lib/env")
22
local fn = require("lib/fn")
33
local git = require("lib/git")
4+
local pin = require("lib/pin")
45
local spinner = require("lib/spinner")
56
local tailwindcss = require("lib/tailwindcss")
67
local ui = require("lib/ui")
@@ -9,6 +10,7 @@ local M = {
910
env = env,
1011
fn = fn,
1112
git = git,
13+
pin = pin,
1214
spinner = spinner,
1315
tailwindcss = tailwindcss,
1416
ui = ui,

lua/lib/pin.lua

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
local M = {}
2+
3+
local PIN_FILE = vim.fn.stdpath("config") .. "/lua/plugins/_pins.lua"
4+
5+
---@param days number
6+
---@return string
7+
local function get_date_ago(days)
8+
return days .. ".days.ago"
9+
end
10+
11+
---@param plugin table
12+
---@return string|nil
13+
local function get_repo_dir(plugin)
14+
-- Use the plugin's installation directory if available
15+
if plugin.dir then
16+
return plugin.dir
17+
end
18+
return vim.fn.stdpath("data") .. "/lazy/" .. plugin.name
19+
end
20+
21+
---@param url string
22+
---@return string
23+
local function normalize_url(url)
24+
-- Strip protocol and host, keep the path (owner/repo)
25+
-- Handles:
26+
-- https://github.com/owner/repo
27+
-- git@github.com:owner/repo.git
28+
-- https://codeberg.org/owner/repo
29+
local normalized = url:gsub("^https?://[^/]+/", ""):gsub("^git@[^:]+:", ""):gsub("%.git$", ""):gsub("/$", "")
30+
return normalized
31+
end
32+
33+
M.pin_plugins = function(opts)
34+
opts = opts or {}
35+
local days = opts.days or 14
36+
local force_fetch = opts.force_fetch or false
37+
local date_ago = get_date_ago(days)
38+
39+
local ok, lazy_config = pcall(require, "lazy.core.config")
40+
if not ok then
41+
vim.notify("Lazy.nvim config not found", vim.log.levels.ERROR)
42+
return
43+
end
44+
45+
local pins = {}
46+
local total = 0
47+
local skipped = 0
48+
for _, plugin in pairs(lazy_config.plugins) do
49+
if plugin.url then
50+
if plugin.version or plugin.tag then
51+
skipped = skipped + 1
52+
else
53+
total = total + 1
54+
end
55+
end
56+
end
57+
58+
local count = 0
59+
local spinner = require("lib.spinner").create({ global_var = "pin_spinner" })
60+
spinner.start()
61+
62+
-- Sort names for consistent processing order
63+
local names = {}
64+
for name, _ in pairs(lazy_config.plugins) do
65+
table.insert(names, name)
66+
end
67+
table.sort(names)
68+
69+
for _, name in ipairs(names) do
70+
local plugin = lazy_config.plugins[name]
71+
if plugin.url then
72+
if not (plugin.version or plugin.tag) then
73+
count = count + 1
74+
_G.pin_spinner_msg = string.format("Pinning %d/%d: %s", count, total, name)
75+
vim.cmd("redrawstatus")
76+
77+
local repo_dir = get_repo_dir(plugin)
78+
if repo_dir and vim.fn.isdirectory(repo_dir) == 1 then
79+
-- Use the branch from spec, or try to detect it
80+
local branch = plugin.branch
81+
if not branch then
82+
local res =
83+
vim.system({ "git", "-C", repo_dir, "symbolic-ref", "--short", "refs/remotes/origin/HEAD" })
84+
:wait()
85+
if res.code == 0 then
86+
branch = res.stdout:gsub("^origin/", ""):gsub("%s+$", "")
87+
end
88+
end
89+
branch = branch or "main"
90+
91+
if force_fetch then
92+
local fetch_res = vim.system({ "git", "-C", repo_dir, "fetch", "origin" }):wait()
93+
if fetch_res.code ~= 0 then
94+
vim.notify(
95+
string.format("Failed to fetch origin for %s: %s", name, fetch_res.stderr or "unknown error"),
96+
vim.log.levels.WARN
97+
)
98+
end
99+
end
100+
101+
-- Find the commit older than N days
102+
local res = vim.system({
103+
"git",
104+
"-C",
105+
repo_dir,
106+
"rev-list",
107+
"-1",
108+
"--before=" .. date_ago,
109+
"origin/" .. branch,
110+
}):wait()
111+
112+
local commit = ""
113+
if res.code == 0 then
114+
commit = res.stdout:gsub("%s+$", "")
115+
else
116+
vim.notify(
117+
string.format("Failed to resolve commit for %s: %s", name, res.stderr or "unknown error"),
118+
vim.log.levels.WARN
119+
)
120+
end
121+
122+
if commit == "" then
123+
-- Fallback to latest commit if no commit found before date_ago
124+
local fallback_res = vim.system({
125+
"git",
126+
"-C",
127+
repo_dir,
128+
"rev-parse",
129+
"origin/" .. branch,
130+
}):wait()
131+
132+
if fallback_res.code == 0 then
133+
commit = fallback_res.stdout:gsub("%s+$", "")
134+
else
135+
vim.notify(
136+
string.format(
137+
"Failed to resolve latest commit for %s: %s",
138+
name,
139+
fallback_res.stderr or "unknown error"
140+
),
141+
vim.log.levels.ERROR
142+
)
143+
end
144+
end
145+
146+
if commit ~= "" then
147+
local url = plugin.url
148+
if url then
149+
table.insert(pins, { url = normalize_url(url), commit = commit, name = name })
150+
end
151+
end
152+
end
153+
end
154+
end
155+
end
156+
157+
spinner.stop()
158+
_G.pin_spinner_msg = nil
159+
160+
if #pins == 0 then
161+
vim.notify("No plugins to pin.", vim.log.levels.WARN)
162+
return
163+
end
164+
165+
-- Write the pins file
166+
local lines = {
167+
"-- Auto-generated by :PinPlugins on " .. os.date("%Y-%m-%d"),
168+
"-- DO NOT EDIT MANUALLY. Run :PinPlugins to regenerate.",
169+
"",
170+
"return {",
171+
}
172+
173+
for _, pin in ipairs(pins) do
174+
table.insert(lines, string.format(' { "%s", commit = "%s" },', pin.url, pin.commit))
175+
end
176+
table.insert(lines, "}")
177+
178+
local f = io.open(PIN_FILE, "w")
179+
if f then
180+
f:write(table.concat(lines, "\n") .. "\n")
181+
f:close()
182+
local msg = "Pinned " .. #pins .. " plugins to commits older than " .. days .. " days."
183+
if skipped > 0 then
184+
msg = msg .. " (Skipped " .. skipped .. " plugins with version/tag constraints)"
185+
end
186+
vim.notify(msg, vim.log.levels.INFO)
187+
else
188+
vim.notify("Failed to write pins file: " .. PIN_FILE, vim.log.levels.ERROR)
189+
end
190+
end
191+
192+
return M

lua/plugins/_pins.lua

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
-- Auto-generated by :PinPlugins on 2026-05-23
2+
-- DO NOT EDIT MANUALLY. Run :PinPlugins to regenerate.
3+
4+
return {
5+
{ "rmagatti/auto-session", commit = "3e145ee9af42eb6764908a1a481f53fe7f0bdbe5" },
6+
{ "ruicsh/briefing.nvim", commit = "c18c4fc0651aa19fddadf60ec269c51424882a2a" },
7+
{ "olimorris/codecompanion.nvim", commit = "b1cbe52ecd71e7b0ed43ac1dc6eb3aab4099db00" },
8+
{ "ruicsh/codediff.nvim", commit = "858a25c96f446ccbcde5c87366e1e02e0a7f4146" },
9+
{ "stevearc/conform.nvim", commit = "18aeab3d63d350dcf44d64c462cc489a3412af40" },
10+
{ "monaqa/dial.nvim", commit = "f2634758455cfa52a8acea6f142dcd6271a1bf57" },
11+
{ "folke/flash.nvim", commit = "fcea7ff883235d9024dc41e638f164a450c14ca2" },
12+
{ "trevorhauter/gitportal.nvim", commit = "31f48653c4b179009e89f42fa31acada3f645a88" },
13+
{ "lewis6991/gitsigns.nvim", commit = "dd3f588bacbeb041be6facf1742e42097f62165d" },
14+
{ "cbochs/grapple.nvim", commit = "b41ddfc1c39f87f3d1799b99c2f0f1daa524c5f7" },
15+
{ "chrishrb/gx.nvim", commit = "ba9c408fc0130fc4548760c3933a81b58fc50de8" },
16+
{ "axkirillov/hbac.nvim", commit = "600896c302fb9232559b93200ed2caab8bd8e28e" },
17+
{ "mistweaverco/kulala.nvim", commit = "bfe3b3aa1a928d998dbf1036c92272b53a81c261" },
18+
{ "mason-org/mason-lspconfig.nvim", commit = "7b01e2974a47d489bb92f47a41e4c0088ea8f86e" },
19+
{ "WhoIsSethDaniel/mason-tool-installer.nvim", commit = "443f1ef8b5e6bf47045cb2217b6f748a223cf7dc" },
20+
{ "mason-org/mason.nvim", commit = "bb639d4bf385a4d89f478b83af4d770be05ab7eb" },
21+
{ "nvim-mini/mini.ai", commit = "4ce4c35e411ea329a15d4b15e9c89c2a3089e437" },
22+
{ "nvim-mini/mini.align", commit = "c701192658ddac4e3b20956a964c2b03157b5e51" },
23+
{ "nvim-mini/mini.bracketed", commit = "d94d51dcee625723aaaf8d38174b48522eaf9131" },
24+
{ "nvim-mini/mini.clue", commit = "0e37cddd6307eb40248e4226be65304e85df1d18" },
25+
{ "nvim-mini/mini.hipatterns", commit = "e25cf080aae092a651a92fa5e477f64a61adbebf" },
26+
{ "nvim-mini/mini.move", commit = "a776027e68fe763987a0132d59877d651a7c0130" },
27+
{ "nvim-mini/mini.notify", commit = "7e75de73c60590e3f35d5cecd5677a68a437fc54" },
28+
{ "nvim-mini/mini.surround", commit = "1e37ade260e2b655c3a9b8407ba7e6b0fb995b28" },
29+
{ "jake-stewart/multicursor.nvim", commit = "704b99f10a72cc05d370cfeb294ff83412a8ab55" },
30+
{ "monkoose/neocodeium", commit = "a1f73887af6cc4b09cb15cc96e0b72d7932552a5" },
31+
{ "MunifTanjim/nui.nvim", commit = "de740991c12411b663994b2860f1a4fd0937c130" },
32+
{ "windwp/nvim-autopairs", commit = "7b9923abad60b903ece7c52940e1321d39eccc79" },
33+
{ "kevinhwang91/nvim-hlslens", commit = "be2d7b2be01860b5445a007ff2bc72b29896db6b" },
34+
{ "neovim/nvim-lspconfig", commit = "a4ed4e761c400849e8c9f8bda33e5083f890268c" },
35+
{ "chrisgrieser/nvim-spider", commit = "4fdd56a4f45bca13a607632e15a6f9f8d1b1f99e" },
36+
{ "nvim-treesitter/nvim-treesitter", commit = "4916d6592ede8c07973490d9322f187e07dfefac" },
37+
{ "nvim-treesitter/nvim-treesitter-context", commit = "b311b30818951d01f7b4bf650521b868b3fece16" },
38+
{ "nvim-treesitter/nvim-treesitter-textobjects", commit = "851e865342e5a4cb1ae23d31caf6e991e1c99f1e" },
39+
{ "windwp/nvim-ts-autotag", commit = "88c1453db4ba7dd24131086fe51fdf74e587d275" },
40+
{ "nvim-tree/nvim-web-devicons", commit = "0d7d35fa946837b8738b17c18d1faa1ac351e7f9" },
41+
{ "stevearc/oil.nvim", commit = "0fcc83805ad11cf714a949c98c605ed717e0b83e" },
42+
{ "rgroli/other.nvim", commit = "1d48e090f6d1d53dda9fb5094af3f2006ebbb858" },
43+
{ "nvim-lua/plenary.nvim", commit = "74b06c6c75e4eeb3108ec01852001636d85a932b" },
44+
{ "assistcontrol/readline.nvim", commit = "5cb27349bc01cdcdb3d3494e5337d8b3834aef1a" },
45+
{ "tiagovla/scope.nvim", commit = "228aabdb1b9cc74f0c0ccec88e79873857236e49" },
46+
{ "folke/sidekick.nvim", commit = "208e1c5b8170c01fd1d07df0139322a76479b235" },
47+
{ "mrjones2014/smart-splits.nvim", commit = "b24335c3186b6c35522fa108af63646a2f70b3b6" },
48+
{ "folke/snacks.nvim", commit = "0770753c88228f7f15449c6a5b242e3f7cd0d71c" },
49+
{ "sQVe/sort.nvim", commit = "fa6318fc6676294bff0fd56ae8e8f9552be1ac7e" },
50+
{ "gbprod/substitute.nvim", commit = "0d2077398552f069abccbd964a26dd7cd26882cd" },
51+
{ "ruicsh/tailwind-hover.nvim", commit = "431e45bb19adcb9846ef93e22c39306c5ee2fc6e" },
52+
{ "ruicsh/tailwindcss-colors.nvim", commit = "1d4bff588827714db8439ee086b7525a8fb8c58f" },
53+
{ "ruicsh/tailwindcss-dial.nvim", commit = "dd8fe2e24e118e8a4dbdcaf36d4c7b98faa09abb" },
54+
{ "ruicsh/tailwindcss-shades.nvim", commit = "f68033b5301ad30e6eb4e1da3dad286806b24610" },
55+
{ "ruicsh/termite.nvim", commit = "d9bb384de496796f67985a1be4bb9097834a337c" },
56+
{ "ruicsh/text-case.nvim", commit = "ce94319de26a3947736825001b346d75bd4ad757" },
57+
{ "Goose97/timber.nvim", commit = "feb2a84a6806fa336f153a9f627d8da80f033555" },
58+
{ "aaronik/treewalker.nvim", commit = "0b081bf6c6875cf3e478b633796a9e2b64b730e8" },
59+
{ "tpope/vim-fugitive", commit = "3b753cf8c6a4dcde6edee8827d464ba9b8c4a6f0" },
60+
{ "andymass/vim-matchup", commit = "a2d618496223386844acb5a6763cfc3cc1357af1" },
61+
{ "vim-test/vim-test", commit = "7062b50979a28e804081f0e82b7321184ec1c20b" },
62+
{ "mcauley-penney/visual-whitespace.nvim", commit = "49ff2b1c572ed7033a584381fa23aad2bf3bb258" },
63+
{ "ruicsh/winshift.nvim", commit = "f38a05ffe3294db3efcf28b961877cf1139264b0" },
64+
{ "gbprod/yanky.nvim", commit = "b13d318dc7c816e2eee626dde61fa0a7237bc77e" },
65+
}

plugin/config/statusline.lua

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,15 @@ local function c_mode()
123123
return string.format("%%#StatusLineMode%s# %%#StatusLineMode%sText# %s %%#StatusLine#", hl, hl, mode)
124124
end
125125

126+
local function c_spinner()
127+
local spinner_val = _G.pin_spinner or ""
128+
local spinner_msg = _G.pin_spinner_msg or ""
129+
if spinner_val == "" and spinner_msg == "" then
130+
return ""
131+
end
132+
return "%#StatusLineSpinner# " .. spinner_val .. " " .. spinner_msg .. " " .. sep()
133+
end
134+
126135
local function c_project()
127136
if not cached_git_root or cached_git_root == "" then
128137
return ""
@@ -276,6 +285,7 @@ function _G.statusline()
276285
local components = {
277286
hl,
278287
c_mode(),
288+
c_spinner(),
279289
c_project(),
280290
c_filename(),
281291
c_bookmark(),

0 commit comments

Comments
 (0)