Files
LazyVim/lua/lazyvim/plugins/extras/util/chezmoi.lua
Michael Olson aa418a2147 feat(icons): provide language specific icons in extras (#3931)
## What is this PR for?

<!-- Describe the big picture of your changes to communicate to the
maintainers
  why we should accept this pull request. -->

Provide language specific file icons. The intent is to lay the
foundation of this type of extension / configuration. I've added icons
for file types that I interact with but this is definitely not holistic.
I also went back and forth on whether the configuration should be within
the core UI config or in the extras (I landed on the later). Definitely
open to feedback on these changes.

## Does this PR fix an existing issue?

<!--
  If this PR fixes any issues, please link to the issue here.
  - Fixes #<issue_number>
-->

Nope.

## Checklist

- [x] I've read the
[CONTRIBUTING](https://github.com/LazyVim/LazyVim/blob/main/CONTRIBUTING.md)
guidelines.

---------

Co-authored-by: Folke Lemaitre <folke.lemaitre@gmail.com>
2024-07-07 19:28:51 +02:00

112 lines
3.0 KiB
Lua

local pick_chezmoi = function()
if LazyVim.pick.picker.name == "telescope" then
require("telescope").extensions.chezmoi.find_files()
elseif LazyVim.pick.picker.name == "fzf" then
local fzf_lua = require("fzf-lua")
local results = require("chezmoi.commands").list()
local chezmoi = require("chezmoi.commands")
local opts = {
fzf_opts = {},
fzf_colors = true,
actions = {
["default"] = function(selected)
chezmoi.edit({
targets = { "~/" .. selected[1] },
args = { "--watch" },
})
end,
},
}
fzf_lua.fzf_exec(results, opts)
end
end
return {
{
-- highlighting for chezmoi files template files
"alker0/chezmoi.vim",
init = function()
vim.g["chezmoi#use_tmp_buffer"] = 1
vim.g["chezmoi#source_dir_path"] = os.getenv("HOME") .. "/.local/share/chezmoi"
end,
},
{
"xvzc/chezmoi.nvim",
keys = {
{
"<leader>sz",
pick_chezmoi,
desc = "Chezmoi",
},
},
opts = {
edit = {
watch = false,
force = false,
},
notification = {
on_open = true,
on_apply = true,
on_watch = false,
},
telescope = {
select = { "<CR>" },
},
},
init = function()
-- run chezmoi edit on file enter
vim.api.nvim_create_autocmd({ "BufRead", "BufNewFile" }, {
pattern = { os.getenv("HOME") .. "/.local/share/chezmoi/*" },
callback = function()
vim.schedule(require("chezmoi.commands.__edit").watch)
end,
})
end,
},
{
"nvimdev/dashboard-nvim",
optional = true,
opts = function(_, opts)
local projects = {
action = pick_chezmoi,
desc = " Config",
icon = "",
key = "c",
}
projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc)
projects.key_format = " %s"
-- remove lazyvim config property
for i = #opts.config.center, 1, -1 do
if opts.config.center[i].key == "c" then
table.remove(opts.config.center, i)
end
end
table.insert(opts.config.center, 5, projects)
end,
},
-- Filetype icons
{
"echasnovski/mini.icons",
opts = {
file = {
[".chezmoiignore"] = { glyph = "", hl = "MiniIconsGrey" },
[".chezmoiremove"] = { glyph = "", hl = "MiniIconsGrey" },
[".chezmoiroot"] = { glyph = "", hl = "MiniIconsGrey" },
[".chezmoiversion"] = { glyph = "", hl = "MiniIconsGrey" },
["bash.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
["json.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
["ps1.tmpl"] = { glyph = "󰨊", hl = "MiniIconsGrey" },
["sh.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
["toml.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
["yaml.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
["zsh.tmpl"] = { glyph = "", hl = "MiniIconsGrey" },
},
},
},
}