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

  • @[email protected]
    link
    fedilink
    English
    229 days ago

    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

    • Grey Cat
      link
      226 days 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