add filetypes source for snacks

This commit is contained in:
xfy
2025-05-18 00:58:01 +08:00
parent 5a880d2768
commit 08fa8261dc
4 changed files with 51 additions and 6 deletions

View File

@ -1,15 +1,15 @@
{
"LazyVim": { "branch": "main", "commit": "25abbf546d564dc484cf903804661ba12de45507" },
"SchemaStore.nvim": { "branch": "main", "commit": "ba7bad63cb96dae5a82e48310beada18e8eeafe5" },
"SchemaStore.nvim": { "branch": "main", "commit": "386bdbf18abb6ca103495c5bdbab65e46f3c361d" },
"blink.cmp": { "branch": "main", "commit": "022521a8910a5543b0251b21c9e1a1e989745796" },
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
"catppuccin": { "branch": "main", "commit": "1bf070129c0b6f77cc23f6a2212dcdc868308c52" },
"conform.nvim": { "branch": "master", "commit": "2b2b30260203af3b93a7470ac6c8457ddd6e32d9" },
"conform.nvim": { "branch": "master", "commit": "a4bb5d6c4ae6f32ab13114e62e70669fa67745b9" },
"crates.nvim": { "branch": "main", "commit": "25f31372ab6f504d4fd7cfee836ad459caed8e68" },
"flash.nvim": { "branch": "main", "commit": "3c942666f115e2811e959eabbdd361a025db8b63" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gitsigns.nvim": { "branch": "main", "commit": "e399f9748d7cfd8859747c8d6c4e9c8b4d50a1bd" },
"grug-far.nvim": { "branch": "main", "commit": "176ba4c42924f4d84ee7d19c9f0081c538f84a88" },
"gitsigns.nvim": { "branch": "main", "commit": "39e0d1cd44eafed5f30c372e377ab1cb1781ec9f" },
"grug-far.nvim": { "branch": "main", "commit": "7df08fff7da6ee08006fe8eaccc3407b89da368b" },
"hop.nvim": { "branch": "v2", "commit": "90db1b2c61b820e230599a04fedcd2679e64bd07" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
@ -32,7 +32,7 @@
"persistence.nvim": { "branch": "main", "commit": "166a79a55bfa7a4db3e26fc031b4d92af71d0b51" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"render-markdown.nvim": { "branch": "main", "commit": "a1b0988f5ab26698afb56b9c2f0525a4de1195c1" },
"rustaceanvim": { "branch": "master", "commit": "cb532f57c1ed2463c66df683468eb3994e554002" },
"rustaceanvim": { "branch": "master", "commit": "3567efce84c223519d0dcbe19ebbfb24683ec493" },
"snacks.nvim": { "branch": "main", "commit": "bc0630e43be5699bb94dadc302c0d21615421d93" },
"supermaven-nvim": { "branch": "main", "commit": "07d20fce48a5629686aefb0a7cd4b25e33947d50" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },

View File

@ -14,7 +14,8 @@ local function set_filetype(patterns, filetype)
pattern = patterns,
callback = function()
local buf = vim.api.nvim_get_current_buf()
vim.api.nvim_buf_set_option(buf, "filetype", filetype)
-- vim.api.nvim_buf_set_option(buf, "filetype", filetype)
vim.bo[buf].filetype = filetype
end,
})
end
@ -25,12 +26,17 @@ set_filetype({ "*.mdx" }, "markdown")
-- 设置 env 文件为 sh 类型
set_filetype({ ".env.example", ".env.local", ".env.development", ".env.production" }, "sh")
-- 设置 json 文件夹为 jsonc 类型
set_filetype({ "*.json" }, "jsonc")
-- 设置终端相关选项
local autocmd = vim.api.nvim_create_autocmd
autocmd({ "TermOpen" }, {
callback = function()
local buf = vim.api.nvim_get_current_buf()
-- vim.bo[buf].relativenumber = false
vim.api.nvim_buf_set_option(buf, "relativenumber", false)
-- vim.bo[buf].number = false
vim.api.nvim_buf_set_option(buf, "number", false)
end,
})
@ -180,6 +186,7 @@ local function update_winbar(bufnr)
-- vim.opt.winbar = winbar
-- 检查缓冲区是否支持设置 winbar
if vim.api.nvim_buf_is_valid(bufnr) then
-- vim.bo[bufnr].winbar = winbar
vim.api.nvim_buf_set_option(bufnr, "winbar", winbar)
end
-- 检查 old_buf 是否有效

View File

@ -89,3 +89,12 @@ map("n", "<leader>fb", function()
},
})
end, { desc = "Grep Open Buffers" })
map("n", "<leader>ct", function()
Snacks.picker.pick({
source = "filetypes",
layout = {
preview = "main",
preset = "ivy",
},
})
end, { desc = "Change file type" })

View File

@ -179,6 +179,7 @@ return {
-- https://github.com/folke/snacks.nvim/discussions/860#discussioncomment-12027395
picker = {
sources = {
-- change explorer to right
explorer = {
include = { "ignored", "hidden" },
layout = {
@ -187,6 +188,34 @@ return {
},
},
},
-- add filetypes source
filetypes = {
name = "filetypes",
format = "text",
preview = "none",
layout = {
preview = "main",
preset = "ivy",
},
confirm = function(picker, item)
picker:close()
if item then
vim.schedule(function()
vim.cmd("setfiletype " .. item.text)
end)
end
end,
finder = function()
local items = {}
local filetypes = vim.fn.getcompletion("", "filetype")
for _, type in ipairs(filetypes) do
items[#items + 1] = {
text = type,
}
end
return items
end,
},
},
},
},