summaryrefslogtreecommitdiff
path: root/.config/nvim/after/ftplugin/gitrebase.lua
blob: 3a81d62fa28df7c6759df01f74adced233a688b6 (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
local ts_utils = require('nvim-treesitter.ts_utils')

local function map(lhs, rhs)
	vim.keymap.set('n', lhs, function()
		local node = ts_utils.get_node_at_cursor()
		if node == nil then
			error('No tree-sitter parser found.')
		end

		while node ~= nil and node:type() ~= 'operation' do
			node = node:parent()
		end

		if node == nil or node:type() ~= 'operation' then
			return
		end

		local sr, sc, er, ec = node:child(0):range()
		vim.api.nvim_buf_set_text(0, sr, sc, er, ec, { rhs })
	end, {
		buffer = true,
		noremap = true,
		silent = true,
	})
end

map('p', 'pick')
map('r', 'reword')
map('s', 'squash')
map('f', 'fixup')