36 lines
1.2 KiB
Lua
36 lines
1.2 KiB
Lua
![]() |
-- Plugin echasnovski/mini.align must be available on &runtimepath
|
||
|
--
|
||
|
-- The current working directory must be set to the repo root
|
||
|
--
|
||
|
-- This file should be run from the shell with `make generate`
|
||
|
|
||
|
require("mini.align").setup {}
|
||
|
|
||
|
-- https://github.com/echasnovski/mini.align/blob/main/lua/mini/align.lua#L633C9-L640C8
|
||
|
local squash_spaces = function(strings)
|
||
|
for i, s in ipairs(strings) do
|
||
|
strings[i] = s:gsub("()(%s+)", function(n, space)
|
||
|
return n == 1 and space or " "
|
||
|
end)
|
||
|
end
|
||
|
end
|
||
|
local steps = { pre_split = { MiniAlign.new_step("squash", squash_spaces) } }
|
||
|
|
||
|
local function align_table()
|
||
|
local lines = vim.api.nvim_buf_get_lines(0, 1, -2, true)
|
||
|
table.sort(lines)
|
||
|
local aligned_lines = MiniAlign.align_strings(lines, { split_pattern = "%s+" }, steps)
|
||
|
vim.api.nvim_buf_set_lines(0, 1, -2, true, aligned_lines)
|
||
|
end
|
||
|
|
||
|
for _, theme in ipairs { "default", "light" } do
|
||
|
for _, file in ipairs(_G.ICON_FILES) do
|
||
|
local f = string.format("%s/%s", theme, file)
|
||
|
io.write(string.format("Aligning %s...", f))
|
||
|
vim.cmd(string.format("noswapfile drop lua/nvim-web-devicons/%s", f))
|
||
|
align_table()
|
||
|
io.write " OK\n"
|
||
|
vim.cmd "silent! w!"
|
||
|
end
|
||
|
end
|