summary refs log tree commit diff
path: root/.config/nvim/lua/plugins/git.lua
blob: 04f0c9fa0bde489aa27c6bbac29a2197fd509e5e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
return {
  {
    'lewis6991/gitsigns.nvim',
    opts = {
      debug_mode = false,
    },
    keys = {
      {
        ']c',
        function()
          if vim.wo.diff then
            vim.cmd.normal({ ']c', bang = true })
          else
            require('gitsigns').nav_hunk('next')
          end
        end,
        desc = 'Gitsigns: next hunk',
      },
      {
        '[c',
        function()
          if vim.wo.diff then
            vim.cmd.normal({ '[c', bang = true })
          else
            require('gitsigns').nav_hunk('prev')
          end
        end,
        desc = 'Gitsigns: prev hunk',
      },
      { '<leader>g', '<nop>', desc = 'git' },
      { '<leader>g<space>', '<cmd>Gitsigns<cr>', desc = 'Gitsigns: select action' },
      { '<leader>gb', '<cmd>Gitsigns blame<cr>', desc = 'Gitsigns: blame' },
      { '<leader>ga', '<cmd>Gitsigns stage_hunk<cr>', desc = 'Gitsigns: stage hunk' },
      { '<leader>ga', ':Gitsigns stage_hunk<cr>', desc = 'Gitsigns: stage hunk', mode = 'x' },
      { '<leader>gd', ':Gitsigns diffthis<cr>', desc = 'Gitsigns: diff' },
      {
        ';c',
        function()
          require('gitsigns').setqflist('all', { open = false })
          require('fzf-lua').quickfix({ prompt = 'Git changesets' })
        end,
        desc = 'Gitsigns: list hunks',
      },
    },
  },

  {
    'linrongbin16/gitlinker.nvim',
    cmd = { 'GitLink' },
    dependencies = { 'nvim-lua/plenary.nvim' },
    opts = {
      message = true,
    },
    keys = {
      {
        '<leader>gl',
        vim.cmd.GitLink,
        desc = 'GitLinker: clipboard',
      },
    },
  },

  {
    enabled = false,
    'moyiz/git-dev.nvim',
    lazy = true,
    cmd = { 'GitDevOpen', 'GitDevCleanAll' },
    opts = {
      read_only = false,
    },
  },

  {
    enabled = false,
    'isakbm/gitgraph.nvim',
    dependencies = { 'sindrets/diffview.nvim' },
    opts = {
      symbols = {
        merge_commit = 'M',
        commit = '∙',
      },
      format = {
        timestamp = '%d-%m-%Y %H:%M:%S %z',
        fields = { 'hash', 'timestamp', 'author', 'branch_name', 'tag' },
      },
    },
    init = vim.schedule_wrap(function()
      vim.api.nvim_set_hl(0, 'GitGraphBranch1', { fg = 'NvimLightGray1' })
      vim.api.nvim_set_hl(0, 'GitGraphBranch2', { fg = 'NvimLightMagenta' })
      vim.api.nvim_set_hl(0, 'GitGraphBranch3', { fg = 'NvimLightRed' })
      vim.api.nvim_set_hl(0, 'GitGraphBranch4', { fg = 'NvimDarkCyan' })
      vim.api.nvim_set_hl(0, 'GitGraphBranch5', { fg = 'NvimDarkYellow' })
      vim.api.nvim_set_hl(0, 'GitGraphHash', { fg = 'NvimLightMagenta' })
      vim.api.nvim_set_hl(0, 'GitGraphAuthor', { fg = 'NvimLightGray4', italic = true })
      vim.api.nvim_set_hl(0, 'GitGraphTimestamp', { fg = 'NvimLightCyan' })
      vim.api.nvim_set_hl(0, 'GitGraphBranchName', { fg = 'NvimLightYellow' })
      vim.api.nvim_set_hl(0, 'GitGraphBranchTag', { fg = 'NvimLightYellow' })
      vim.api.nvim_set_hl(0, 'GitGraphBranchMsg', { link = 'Normal' })
      -- vim.api.nvim_create_autocmd('FileType', {
      --   pattern = { 'gitgraph' },
      --   callback = function()
      --     vim.keymap.set('n', 'q', '<cmd>bdel!<cr>', { silent = true, buffer = 0 })
      --   end,
      --   group = vim.api.nvim_create_augroup('GitGraph'),
      -- })
    end),
    keys = {
      {
        'g-',
        function()
          require('gitgraph').draw({}, { all = true, max_count = 5000 })
        end,
        desc = 'GitGraph: view log',
      },
    },
  },
}