summary refs log tree commit diff
path: root/.config/nvim/lua/plugins/diff.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lua/plugins/diff.lua')
-rw-r--r--.config/nvim/lua/plugins/diff.lua47
1 files changed, 47 insertions, 0 deletions
diff --git a/.config/nvim/lua/plugins/diff.lua b/.config/nvim/lua/plugins/diff.lua
new file mode 100644
index 0000000..d758522
--- /dev/null
+++ b/.config/nvim/lua/plugins/diff.lua
@@ -0,0 +1,47 @@
+return {
+  {
+    enabled = true,
+    'https://github.com/sindrets/diffview.nvim',
+    cmd = {
+      'DiffviewOpen',
+      'DiffviewFileHistory',
+    },
+    init = function()
+      vim.keymap.set(
+        'n',
+        '<leader>g-',
+        vim.cmd.DiffviewFileHistory,
+        { desc = 'DiffviewFileHistory' }
+      )
+
+      vim.api.nvim_create_autocmd('Filetype', {
+        pattern = { 'git', 'gitcommit', 'gitrebase' },
+        callback = function()
+          vim.keymap.set('n', 'K', function()
+            vim.cmd.DiffviewOpen(vim.fn.expand('<cword>') .. '^!')
+          end, { buffer = 0, desc = 'DiffviewOpen' })
+        end,
+      })
+    end,
+    config = function()
+      vim.api.nvim_create_autocmd('User', {
+        pattern = { 'DiffviewViewEnter' },
+        callback = function()
+          vim.keymap.set('n', 'q', '<cmd>DiffviewClose<cr>', { buffer = 0 })
+          vim.keymap.set(
+            'n',
+            '<a-j>',
+            require('diffview.actions').select_next_entry,
+            { buffer = 0 }
+          )
+          vim.keymap.set(
+            'n',
+            '<a-k>',
+            require('diffview.actions').select_prev_entry,
+            { buffer = 0 }
+          )
+        end,
+      })
+    end,
+  },
+}