mirror of
https://github.com/LazyVim/LazyVim.git
synced 2025-06-22 17:03:39 +02:00
- `ctrl-s` search_in_project_files - `ctrl-w` change_working_directory - `ctrl-d` delete_project - `ctrl-r` recent_project_files Co-authored-by: 肖健正 <xiaojianzheng@qq.com>
128 lines
3.1 KiB
Lua
128 lines
3.1 KiB
Lua
local pick = nil
|
|
|
|
pick = function()
|
|
if LazyVim.pick.picker.name == "telescope" then
|
|
return vim.cmd("Telescope projects")
|
|
elseif LazyVim.pick.picker.name == "fzf" then
|
|
local fzf_lua = require("fzf-lua")
|
|
local project = require("project_nvim.project")
|
|
local history = require("project_nvim.utils.history")
|
|
local results = history.get_recent_projects()
|
|
local actions = require("fzf-lua.actions")
|
|
|
|
fzf_lua.fzf_exec(results, {
|
|
actions = {
|
|
["default"] = {
|
|
function(selected)
|
|
fzf_lua.files({ cwd = selected[1] })
|
|
end,
|
|
},
|
|
["ctrl-t"] = actions.file_tabedit,
|
|
["ctrl-s"] = {
|
|
function(selected)
|
|
fzf_lua.live_grep({ cwd = selected[1] })
|
|
end,
|
|
},
|
|
["ctrl-r"] = {
|
|
function(selected)
|
|
fzf_lua.oldfiles({ cwd = selected[1] })
|
|
end,
|
|
},
|
|
["ctrl-w"] = {
|
|
function(selected)
|
|
local path = selected[1]
|
|
local ok = project.set_pwd(path)
|
|
if ok then
|
|
vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<Esc>", true, false, true), "n", true)
|
|
LazyVim.info("Change project dir to " .. path)
|
|
end
|
|
end,
|
|
},
|
|
["ctrl-d"] = function(selected)
|
|
local path = selected[1]
|
|
local choice = vim.fn.confirm("Delete '" .. path .. "' project? ", "&Yes\n&No")
|
|
if choice == 1 then
|
|
history.delete_project({ value = path })
|
|
end
|
|
pick()
|
|
end,
|
|
},
|
|
})
|
|
end
|
|
end
|
|
|
|
return {
|
|
{
|
|
"ahmedkhalf/project.nvim",
|
|
opts = {
|
|
manual_mode = true,
|
|
},
|
|
event = "VeryLazy",
|
|
config = function(_, opts)
|
|
require("project_nvim").setup(opts)
|
|
LazyVim.on_load("telescope.nvim", function()
|
|
require("telescope").load_extension("projects")
|
|
end)
|
|
end,
|
|
},
|
|
|
|
{
|
|
"nvim-telescope/telescope.nvim",
|
|
optional = true,
|
|
keys = {
|
|
{ "<leader>fp", pick, desc = "Projects" },
|
|
},
|
|
},
|
|
|
|
{
|
|
"ibhagwan/fzf-lua",
|
|
optional = true,
|
|
keys = {
|
|
{ "<leader>fp", pick, desc = "Projects" },
|
|
},
|
|
},
|
|
|
|
{
|
|
"goolord/alpha-nvim",
|
|
optional = true,
|
|
opts = function(_, dashboard)
|
|
local button = dashboard.button("p", " " .. " Projects", pick)
|
|
button.opts.hl = "AlphaButtons"
|
|
button.opts.hl_shortcut = "AlphaShortcut"
|
|
table.insert(dashboard.section.buttons.val, 4, button)
|
|
end,
|
|
},
|
|
|
|
{
|
|
"echasnovski/mini.starter",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
local items = {
|
|
{
|
|
name = "Projects",
|
|
action = pick,
|
|
section = string.rep(" ", 22) .. "Telescope",
|
|
},
|
|
}
|
|
vim.list_extend(opts.items, items)
|
|
end,
|
|
},
|
|
|
|
{
|
|
"nvimdev/dashboard-nvim",
|
|
optional = true,
|
|
opts = function(_, opts)
|
|
local projects = {
|
|
action = pick,
|
|
desc = " Projects",
|
|
icon = " ",
|
|
key = "p",
|
|
}
|
|
|
|
projects.desc = projects.desc .. string.rep(" ", 43 - #projects.desc)
|
|
projects.key_format = " %s"
|
|
|
|
table.insert(opts.config.center, 3, projects)
|
|
end,
|
|
},
|
|
}
|