summaryrefslogtreecommitdiffhomepage
path: root/src/blog/nvim-ts/final.lua
blob: 948ee30ad40e9a938e1e18bac496e6a989076aa5 (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
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 then
			local sr, sc, er, ec = node:child(0):range()
			vim.api.nvim_buf_set_text(0, sr, sc, er, ec, { rhs })
		end
	end, {
		buffer = true,
		noremap = true,
		silent = true,
	})
end

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