this post was submitted on 18 Aug 2024
25 points (100.0% liked)

Neovim

2100 readers
11 users here now

founded 1 year ago
MODERATORS
25
submitted 1 month ago* (last edited 3 weeks ago) by sxwpb to c/[email protected]
 

Hello, I wanted to share a small keymap I made. It lets you inspect unsaved changes in the current file. It uses diff mode, in a vertical split.

To close the diff mode, just press q in the scratch buffer.

vim.keymap.set(
	'n',
	'<M-C-D>',
	function()
		local tmpft = vim.bo.filetype
		vim.cmd.vnew()
		vim.bo.filetype = tmpft
		vim.bo.buftype = 'nofile'
		vim.keymap.set(
			'n',
			'q',
			'<cmd>bw<cr>',
			{ noremap = true, silent = true, buffer = true }
		)
		vim.cmd('silent r#|0d_')
		vim.bo.modifiable = false
		vim.cmd('diffthis|wincmd p|diffthis')
	end,
	{ noremap = true }
)

edit: I discovered that this functionality is actually documented in the help pages (:h :DiffOrig). It’s basically the same action but bound to a command

you are viewing a single comment's thread
view the rest of the comments
[–] [email protected] 2 points 1 month ago (1 children)

Ah shit, here's a use-case, to see exactly what you've "undo'd". I often remember that I had something in one state a while ago, undo until I see it, then have to carefully go back to ensure I return everything I did between the two states.

With this, I save, using, press the binding, and see the diff clear as day.

Now that binding is increadibly useful for me. Indobuae undo-tree but this'd be much more intuitive, atleast for me

[–] GreyCat 2 points 3 weeks ago

Yeah havn't checked how to use undo-tree yet, gotta do that at some point, seems really useful.

But I have put this post's keymap in my config and first impressions are pretty good. Now I just have to remember to use it haha