refactor(project): use header descriptions without using fzf-lua.actions

This commit is contained in:
Iordanis Petkakis 2024-06-26 23:50:52 +03:00
parent 5e1c474192
commit 4cb63c4168

View file

@ -8,71 +8,76 @@ pick = function()
local project = require("project_nvim.project") local project = require("project_nvim.project")
local history = require("project_nvim.utils.history") local history = require("project_nvim.utils.history")
local results = history.get_recent_projects() local results = history.get_recent_projects()
local actions = require("fzf-lua.actions")
local core = require("fzf-lua.core")
-- local path = require("fzf-lua.path")
local utils = require("fzf-lua.utils") local utils = require("fzf-lua.utils")
local function hl_validate(hl) local function hl_validate(hl)
return not utils.is_hl_cleared(hl) and hl or nil return not utils.is_hl_cleared(hl) and hl or nil
end end
function actions.project_files(selected) local function ansi_from_hl(hl, s)
fzf_lua.files({ cwd = selected[1] }) return utils.ansi_from_hl(hl_validate(hl), s)
end end
function actions.project_live_grep(selected)
fzf_lua.live_grep({ cwd = selected[1] })
end
function actions.project_oldfiles(selected)
fzf_lua.oldfiles({ cwd = selected[1] })
end
function actions.project_cd_cwd(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
function actions.project_delete(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
-- core.ACTION_DEFINITIONS[actions.project_files] = { "find project files" }
core.ACTION_DEFINITIONS[actions.file_tabedit] = { "tabedit" }
core.ACTION_DEFINITIONS[actions.project_live_grep] = { "live_grep" }
core.ACTION_DEFINITIONS[actions.project_oldfiles] = { "oldfiles" }
core.ACTION_DEFINITIONS[actions.project_cd_cwd] = { "change dir" }
core.ACTION_DEFINITIONS[actions.project_delete] = { "delete" }
local opts = { local opts = {
fzf_opts = {}, fzf_opts = {
hls = { ["--header"] = string.format(
header_bind = hl_validate("FzfLuaHeaderBind"), ":: <%s> to %s | <%s> to %s | <%s> to %s | <%s> to %s | <%s> to %s",
header_text = hl_validate("FzfLuaHeaderText"), ansi_from_hl("FzfLuaHeaderBind", "ctrl-t"),
ansi_from_hl("FzfLuaHeaderText", "tabedit"),
ansi_from_hl("FzfLuaHeaderBind", "ctrl-s"),
ansi_from_hl("FzfLuaHeaderText", "live_grep"),
ansi_from_hl("FzfLuaHeaderBind", "ctrl-r"),
ansi_from_hl("FzfLuaHeaderText", "oldfiles"),
ansi_from_hl("FzfLuaHeaderBind", "ctrl-w"),
ansi_from_hl("FzfLuaHeaderText", "change_dir"),
ansi_from_hl("FzfLuaHeaderBind", "ctrl-d"),
ansi_from_hl("FzfLuaHeaderText", "delete")
),
}, },
fzf_colors = true, fzf_colors = true,
header_separator = " | ",
actions = { actions = {
["default"] = actions.project_files, ["default"] = {
["ctrl-t"] = actions.file_tabedit, function(selected)
["ctrl-s"] = actions.project_live_grep, fzf_lua.files({ cwd = selected[1] })
["ctrl-r"] = actions.project_oldfiles, end,
["ctrl-w"] = actions.project_cd_cwd, },
["ctrl-d"] = actions.project_delete, ["ctrl-t"] = {
function(selected)
vim.cmd("tabedit")
fzf_lua.files({ cwd = selected[1] })
end,
},
["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,
}, },
} }
opts = core.set_header(opts, { "actions" })
fzf_lua.fzf_exec(results, opts) fzf_lua.fzf_exec(results, opts)
end end
end end