Skip to content

Commit

Permalink
nvim: add git co-authors telescope cmd
Browse files Browse the repository at this point in the history
  • Loading branch information
marcusandre committed May 3, 2024
1 parent 7394fe3 commit f91eedc
Show file tree
Hide file tree
Showing 3 changed files with 60 additions and 9 deletions.
56 changes: 53 additions & 3 deletions nvim/lua/m/utils.lua
Original file line number Diff line number Diff line change
Expand Up @@ -81,9 +81,9 @@ end

-- Telescope
M.find_changed_files = function(opts)
local conf = require('telescope.config').values
local finders = require('telescope.finders')
local pickers = require('telescope.pickers')
local finders = require('telescope.finders')
local sorters = require('telescope.sorters')

opts = opts or {}
pickers
Expand All @@ -95,7 +95,57 @@ M.find_changed_files = function(opts)
'origin/main',
'--name-only',
}, opts),
sorter = conf.generic_sorter(),
sorter = sorters.get_generic_fuzzy_sorter(),
})
:find()
end

M.git_co_authors = function(opts)
local make_entry = require('telescope.make_entry')
local pickers = require('telescope.pickers')
local finders = require('telescope.finders')
local sorters = require('telescope.sorters')
local actions = require('telescope.actions')
local action_state = require('telescope.actions.state')
local command = { 'git', 'log', '--pretty=%aN <%aE>' }

local seen = {}
local string_entry_maker = make_entry.gen_from_string()
opts = opts or {}
opts.entry_maker = function(string)
if not seen[string] then
seen[string] = true
return string_entry_maker(string)
else
return nil
end
end

opts = opts or {}
pickers
.new(opts, {
prompt_title = 'Git Co-Authors',
finder = finders.new_oneshot_job(command, opts),
sorter = sorters.get_generic_fuzzy_sorter(),
attach_mappings = function(bufnr, map)
local insert = function()
local picker = action_state.get_current_picker(bufnr)
local selections = picker:get_multi_selection()
if next(selections) == nil then selections = { picker:get_selection() } end
actions.close(bufnr)

local coauthors = { '', '' }
for _, c in ipairs(selections) do
table.insert(coauthors, 'Co-authored-by: ' .. c[1])
end
vim.api.nvim_put(coauthors, 'l', true, false)
end

map('i', '<CR>', insert)
map('n', '<CR>', insert)

return true
end,
})
:find()
end
Expand Down
8 changes: 4 additions & 4 deletions nvim/lua/plugins/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -23,10 +23,10 @@ return {
'jghauser/mkdir.nvim',
event = 'BufWritePre',
},
{
'm4xshen/hardtime.nvim',
config = true,
},
-- {
-- 'm4xshen/hardtime.nvim',
-- config = true,
-- },
{
'ethanholz/freeze.nvim',
keys = {
Expand Down
5 changes: 3 additions & 2 deletions nvim/lua/plugins/telescope.lua
Original file line number Diff line number Diff line change
Expand Up @@ -56,16 +56,17 @@ return {
local builtin = require('telescope.builtin')
vim.keymap.set('n', '<leader>/', builtin.live_grep, { desc = 'Grep (live)' })
vim.keymap.set('n', '<leader>:', builtin.commands, { desc = 'Commands' })
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = 'Buffers' })
vim.keymap.set('n', '<leader>fF', builtin.find_files, { desc = 'Files' })
vim.keymap.set('n', '<leader>fO', builtin.oldfiles, { desc = 'Files (old)' })
vim.keymap.set('n', '<leader>fb', builtin.buffers, { desc = 'Buffers' })
vim.keymap.set('n', '<leader>fg', builtin.git_status, { desc = 'Files (changed)' })
vim.keymap.set('n', '<leader>fh', builtin.help_tags, { desc = 'Help' })
vim.keymap.set('n', '<leader>fk', builtin.keymaps, { desc = 'Keymaps' })
vim.keymap.set('n', '<leader>fO', builtin.oldfiles, { desc = 'Files (old)' })
vim.keymap.set('n', '<leader>fo', function() builtin.oldfiles({ only_cwd = true }) end, { desc = 'Files (old)' })
vim.keymap.set('n', '<leader>fr', builtin.resume, { desc = 'Resume' })
vim.keymap.set('n', '<leader>ft', builtin.builtin, { desc = 'Builtins' })
vim.keymap.set('n', '<leader>fz', builtin.spell_suggest, { desc = 'Spelling' })
vim.keymap.set('n', '<leader>gc', function() utils.git_co_authors() end, { desc = 'Git Co-Auuthors' })
vim.keymap.set('n', 'gw', builtin.grep_string, { desc = 'Grep (string)' })

vim.keymap.set(
Expand Down

0 comments on commit f91eedc

Please sign in to comment.