An advanced git search extension for Telescope
and fzf-lua
.
Search your git history by commit message, content and author in Neovim
_� Open a picker
:AdvancedGitSearch
or :AdvancedGitSearch {command}
_� Enter a query
Your usual search experience. See the individual commands for the grep behaviour.
✏️ Further search on commit author with @
The prompt is split on @
. Everything following the @
is the pattern for
the author name.
Opens a window with a list of all previous commit.
Grep behaviour: filter on added, updated or removed code (log content: -G
option in git).
<CR>
Opens a diff of the current file with the selected commit<C-e>
show the entire commit for all files in neovim with diff plugin<C-o>
Open the selected commit in the browser<C-y>
copy the commit hash to clipboard<C-w>
toggle date and author in entryOpens a window with a list of git commits that changed the current file (renames included).
Grep behaviour: filter on added, updated or removed code (log content: -G
option in git).
<CR>
Opens a diff of the current file with the selected commit<C-e>
show the entire commit for all files in neovim with diff plugin<C-o>
Open the selected commit in the browser<C-y>
copy the commit hash to clipboard<C-w>
toggle date and author in entryOpens a window with a list of git commits that changed the current file (renames included).
Grep behaviour: filter on commit message.
<CR>
Opens a diff of the current file with the selected commit<C-e>
show the entire commit for all files in neovim with diff plugin<C-o>
Open the selected commit in the browser<C-y>
copy the commit hash to clipboard<C-w>
toggle date and author in entryOpens a window with a list of previous commit logs with respect to selected lines
Grep behaviour: filter on commit message.
Use
:'<,'>AdvancedGitSearch diff_commit_line
(with a visual range).
<CR>
opens a diff for the current file with the corresponding file on the selected commit<C-e>
show the entire commit for all files in neovim with diff plugin<C-o>
opens a the selected commit in the browser<C-y>
copy the commit hash to clipboard<C-w>
toggle date and author in entryOpens a window with a list of local branches
Grep behaviour: filter on branch name.
<CR>
opens a diff for the current file with the selected branchOpens a window with a list of changed files on the current branch (including staged files). The fork point of the current branch is determined with the following command:
git show-branch | \
sed "s/].*//" | \
grep "*" | \
grep -v "$(git rev-parse --abbrev-ref HEAD)" | \
head -n1 | \
sed "s/^.*\\[//"
Note: this only works if there is already a commit on the current branch, otherwise the base branch can not be detected.
Grep behaviour: filter on filename.
<CR>
opens the selected file.Opens a window with all reflog entries
<CR>
checkout the reflog entryA telescope picker for all functions above.
Enable show_builtin_git_pickers
to additionally show builtin git pickers.
{
-- Browse command to open commits in browser. Default fugitive GBrowse.
-- {commit_hash} is the placeholder for the commit hash.
browse_command = "GBrowse {commit_hash}",
-- when {commit_hash} is not provided, the commit will be appended to the specified command seperated by a space
-- browse_command = "GBrowse",
-- => both will result in calling `:GBrowse commit`
-- fugitive or diffview
diff_plugin = "fugitive",
-- customize git in previewer
-- e.g. flags such as { "--no-pager" }, or { "-c", "delta.side-by-side=false" }
git_flags = {},
-- customize git diff in previewer
-- e.g. flags such as { "--raw" }
git_diff_flags = {},
-- Show builtin git pickers when executing "show_custom_functions" or :AdvancedGitSearch
show_builtin_git_pickers = false,
entry_default_author_or_date = "author", -- one of "author" or "date"
keymaps = {
-- following keymaps can be overridden
toggle_date_author = "<C-w>",
open_commit_in_browser = "<C-o>",
copy_commit_hash = "<C-y>",
show_entire_commit = "<C-e>",
}
-- Telescope layout setup
telescope_theme = {
function_name_1 = {
-- Theme options
},
function_name_2 = "dropdown"
-- e.g. realistic example
show_custom_functions = {
layout_config = { width = 0.4, height = 0.4 },
},
}
}
{
"nvim-telescope/telescope.nvim",
-- to show diff splits and open commits in browser
"tpope/vim-fugitive",
-- to open commits in browser with fugitive
"tpope/vim-rhubarb",
-- optional: to replace the diff from fugitive with diffview.nvim
-- (fugitive is still needed to open in browser)
-- "sindrets/diffview.nvim",
}
{
"aaronhallaert/advanced-git-search.nvim",
cmd = { "AdvancedGitSearch" },
config = function()
-- optional: setup telescope before loading the extension
require("telescope").setup{
-- move this to the place where you call the telescope setup function
extensions = {
advanced_git_search = {
-- See Config
}
}
}
require("telescope").load_extension("advanced_git_search")
end,
dependencies = {
--- See dependencies
},
}
To complete this snippet, see Config and Dependencies.
use({
"aaronhallaert/advanced-git-search.nvim",
config = function()
-- optional: setup telescope before loading the extension
require("telescope").setup{
-- move this to the place where you call the telescope setup function
extensions = {
advanced_git_search = {
-- Insert Config here
}
}
}
require("telescope").load_extension("advanced_git_search")
end,
requires = {
-- Insert Dependencies here
},
})
{
"aaronhallaert/advanced-git-search.nvim",
cmd = { "AdvancedGitSearch" },
config = function()
require("advanced_git_search.fzf").setup{
-- Insert Config here
}
end,
dependencies = {
-- Insert Dependencies here
},
}
To complete this snippet, see Config and Dependencies.
use({
"aaronhallaert/advanced-git-search.nvim",
config = function()
require("advanced_git_search.fzf").setup{
-- Insert Config here
}
}
end,
requires = {
-- Insert Dependencies here
},
})