diff options
| author | Thomas Vanbesien <tvanbesi@proton.me> | 2026-06-07 14:14:28 +0200 |
|---|---|---|
| committer | Thomas Vanbesien <tvanbesi@proton.me> | 2026-06-07 14:14:28 +0200 |
| commit | f1d0eb4764ed86cc0ebce4c9dd4f5ed963e3d652 (patch) | |
| tree | 2afa79cf3b400b2d8ccff098406a2be336eac40c /init.lua | |
| parent | 09a03951ecfa74f6b5aa01eba082862a4d5d79c9 (diff) | |
| download | nvim-config-f1d0eb4764ed86cc0ebce4c9dd4f5ed963e3d652.tar.gz nvim-config-f1d0eb4764ed86cc0ebce4c9dd4f5ed963e3d652.zip | |
refactor(nvim): make `show_buf_diff_orig()` more robust
Diffstat (limited to 'init.lua')
| -rw-r--r-- | init.lua | 23 |
1 files changed, 18 insertions, 5 deletions
@@ -15,13 +15,26 @@ vim.g.dotfiles = { -- Show the diff between the current buffer and the file it was loaded from local function show_buf_diff_orig() - vim.cmd.new({ mods = { vertical = true } }) - vim.b.buftype = "nofile" - vim.cmd.read("++edit #") - vim.api.nvim_buf_set_lines(0, 0, 2, true, {}) + local bname = vim.api.nvim_buf_get_name(0) + if not vim.uv.fs_stat(bname) then + vim.notify("Cannot diff with original because " .. bname .. " doesn't exist", vim.log.levels.WARN) + return + end + local cwin = vim.api.nvim_get_current_win() vim.cmd.diffthis() - vim.cmd.wincmd("p") + local temp = vim.fn.tempname() + local ok, err = vim.uv.fs_copyfile(bname, temp) + if not ok then + vim.notify("Could not copy file: " .. err, vim.log.levels.ERROR) + return + end + vim.cmd.split({ temp, mods = { vertical = vim.api.nvim_win_get_width(0) >= vim.o.textwidth * 2, keepalt = true } }) vim.cmd.diffthis() + vim.opt_local.bufhidden = "wipe" + vim.opt_local.buftype = "nofile" + vim.opt_local.swapfile = false + vim.opt_local.readonly = true + vim.api.nvim_set_current_win(cwin) end local function reload_buffer() |
