added git_status

main
bhagwan 3 years ago
parent 1257eadb7c
commit fd390cdcea

@ -135,6 +135,7 @@ nnoremap <c-P> <cmd>lua require('fzf-lua').files()<CR>
|`colorschemes`|color schemes| |`colorschemes`|color schemes|
|`builtin`|fzf-lua builtin methods| |`builtin`|fzf-lua builtin methods|
|`git_files`|`git ls-files`| |`git_files`|`git ls-files`|
|`git_status`|`git status`|
|`git_commits`|git commit log (project)| |`git_commits`|git commit log (project)|
|`git_bcommits`|git commit log (buffer)| |`git_bcommits`|git commit log (buffer)|
|`git_branch`|git branches| |`git_branch`|git branches|
@ -223,6 +224,10 @@ require'fzf-lua'.setup {
cmd = "head", cmd = "head",
args = nil, args = nil,
}, },
git_diff = {
cmd = "git diff",
args = "--color",
},
}, },
-- provider setup -- provider setup
files = { files = {
@ -249,6 +254,14 @@ require'fzf-lua'.setup {
file_icons = true, -- show file icons? file_icons = true, -- show file icons?
color_icons = true, -- colorize file|git icons color_icons = true, -- colorize file|git icons
}, },
status = {
prompt = 'GitStatus ',
cmd = "git status -s",
previewer = "git_diff",
file_icons = true,
git_icons = true,
color_icons = true,
},
commits = { commits = {
prompt = 'Commits ', prompt = 'Commits ',
cmd = "git log --pretty=oneline --abbrev-commit --color", cmd = "git log --pretty=oneline --abbrev-commit --color",

@ -94,6 +94,11 @@ M.globals = {
args = nil, args = nil,
_new = function() return require 'fzf-lua.previewer'.head end, _new = function() return require 'fzf-lua.previewer'.head end,
}, },
git_diff = {
cmd = "git diff",
args = "--color",
_new = function() return require 'fzf-lua.previewer'.cmd_async end,
},
builtin = { builtin = {
treesitter = true, treesitter = true,
_new = function() return require 'fzf-lua.previewer'.builtin end, _new = function() return require 'fzf-lua.previewer'.builtin end,
@ -131,6 +136,15 @@ M.globals.git = {
git_icons = true, git_icons = true,
actions = M.globals.files.actions, actions = M.globals.files.actions,
}, },
status = {
prompt = 'GitStatus> ',
cmd = "git status -s",
previewer = "git_diff",
file_icons = true and M._has_devicons,
color_icons = true,
git_icons = true,
actions = M.globals.files.actions,
},
commits = { commits = {
prompt = 'Commits> ', prompt = 'Commits> ',
cmd = "git log --pretty=oneline --abbrev-commit --color", cmd = "git log --pretty=oneline --abbrev-commit --color",
@ -356,8 +370,8 @@ M.winopts = function(opts)
} }
end end
M.preview_window = function() M.preview_window = function(opts)
local o = M.globals local o = vim.tbl_deep_extend("keep", opts, M.globals)
local preview_veritcal = string.format('%s:%s:%s:%s', local preview_veritcal = string.format('%s:%s:%s:%s',
o.preview_opts, o.preview_border, o.preview_wrap, o.preview_vertical) o.preview_opts, o.preview_border, o.preview_wrap, o.preview_vertical)
local preview_horizontal = string.format('%s:%s:%s:%s', local preview_horizontal = string.format('%s:%s:%s:%s',

@ -30,7 +30,7 @@ M.build_fzf_cli = function(opts, debug_print)
utils._if(opts.fzf_binds, opts.fzf_binds, utils._if(opts.fzf_binds, opts.fzf_binds,
vim.fn.shellescape(table.concat(config.globals.fzf_binds, ','))), vim.fn.shellescape(table.concat(config.globals.fzf_binds, ','))),
vim.fn.shellescape(opts.prompt), vim.fn.shellescape(opts.prompt),
utils._if(opts.preview_window, opts.preview_window, config.preview_window()), utils._if(opts.preview_window, opts.preview_window, config.preview_window(opts)),
utils._if(#opts.preview_offset>0, ":"..opts.preview_offset, ''), utils._if(#opts.preview_offset>0, ":"..opts.preview_offset, ''),
utils._if(opts.preview and #opts.preview>0, opts.preview, "''"), utils._if(opts.preview and #opts.preview>0, opts.preview, "''"),
-- HACK: support skim (rust version of fzf) -- HACK: support skim (rust version of fzf)
@ -167,10 +167,12 @@ M.fzf_files = function(opts)
end end
local preview_opts = config.globals.previewers[opts.previewer] if not opts.preview then
if preview_opts then local preview_opts = config.globals.previewers[opts.previewer]
local preview = preview_opts._new()(preview_opts, opts) if preview_opts then
opts.preview = preview:cmdline() local preview = preview_opts._new()(preview_opts, opts)
opts.preview = preview:cmdline()
end
end end
local selected = fzf.fzf(opts.fzf_fn, local selected = fzf.fzf(opts.fzf_fn,

@ -56,6 +56,7 @@ M.grep_cWORD = require'fzf-lua.providers.grep'.grep_cWORD
M.grep_visual = require'fzf-lua.providers.grep'.grep_visual M.grep_visual = require'fzf-lua.providers.grep'.grep_visual
M.grep_curbuf = require'fzf-lua.providers.grep'.grep_curbuf M.grep_curbuf = require'fzf-lua.providers.grep'.grep_curbuf
M.git_files = require'fzf-lua.providers.git'.files M.git_files = require'fzf-lua.providers.git'.files
M.git_status = require'fzf-lua.providers.git'.status
M.git_commits = require'fzf-lua.providers.git'.commits M.git_commits = require'fzf-lua.providers.git'.commits
M.git_bcommits = require'fzf-lua.providers.git'.bcommits M.git_bcommits = require'fzf-lua.providers.git'.bcommits
M.git_branches = require'fzf-lua.providers.git'.branches M.git_branches = require'fzf-lua.providers.git'.branches

@ -30,6 +30,19 @@ M.files = function(opts)
return core.fzf_files(opts) return core.fzf_files(opts)
end end
M.status = function(opts)
if not git_status() then return end
opts = config.normalize_opts(opts, config.globals.git.status)
if opts.preview then opts.preview = vim.fn.shellescape(opts.preview) end
opts.fzf_fn = fzf_helpers.cmd_line_transformer(opts.cmd,
function(x)
-- greedy match anything after last space
x = x:match("[^ ]*$")
return core.make_entry_file(opts, x)
end)
return core.fzf_files(opts)
end
local function git_cmd(opts) local function git_cmd(opts)
if not git_status() then return end if not git_status() then return end
coroutine.wrap(function () coroutine.wrap(function ()

Loading…
Cancel
Save