diffview.nvim icon indicating copy to clipboard operation
diffview.nvim copied to clipboard

How to setup diff view colorscheme like the one in the readme (the screenshot)?

Open gaoxiaoliangz opened this issue 1 year ago • 10 comments

I know it's not an issue of the project, but I really can't find any place to discuss this. The diff view in the screen shot looks really cool. Especially the diff color schemes.

vim diff highlight groups are DiffAdd, DiffDelete, DiffChange and DiffText. And I noticed that in the screenshot, the DiffAdd are rendered as red on the left, just like what vscode does. On the right side it's bluish.

Is there any config reference you can provide, so that I can achieve the same diff color scheme?

gaoxiaoliangz avatar Dec 09 '24 06:12 gaoxiaoliangz

I am also curious about the specific values set for the fg/bg of the highlight group. I'm currently setting them in the diff_buf_win_enter hook but cannot get the values to match.

jdela22 avatar Dec 14 '24 04:12 jdela22

@gaoxiaoliangz I was able to figure it out. The example in the screenshot is just using the existing hl group provided by the tokyonight theme (I believe the 'night' variation specifically). In my case, I was already using this theme but the hl groups and a few other background-related colors were not showing up right due to my use of tmux. If that's what's happening to you, try disabling tmux and viewing the diff.

jdela22 avatar Dec 19 '24 00:12 jdela22

Thanks for opening this, I was wondering the same thing. I use gruvbox, but want to figure out how to get those fancy empty line symbols. Mine show up as ugly -----!

jamesgour avatar Jan 11 '25 16:01 jamesgour

@jamesgour You can try this vim.opt.fillchars:append("diff:╱")

gaoxiaoliangz avatar Jan 12 '25 09:01 gaoxiaoliangz

Thanks @gaoxiaoliangz, that's pretty close! Doesn't look exact on my terminal but maybe it's because I'm using Wezterm :D

jamesgour avatar Jan 12 '25 13:01 jamesgour

Hey! Based on @jdela22 comments above, I manually changed my colors to follow the tokyonight color schemes for the diff sections in my init.lua:

vim.api.nvim_set_hl(0, "DiffAdd", {bg = "#20303b"})
vim.api.nvim_set_hl(0, "DiffDelete", {bg = "#37222c"})
vim.api.nvim_set_hl(0, "DiffChange", {bg = "#1f2231"})
vim.api.nvim_set_hl(0, "DiffText", {bg = "#394b70"})

Just posting it here as a reference if anyone want to copy paste!

phdah avatar Jan 12 '25 14:01 phdah

This is what I have in my highlights configuration:

vim.api.nvim_set_hl(0, 'DiffAdd', { bg = '#34462F' })
vim.api.nvim_set_hl(0, 'DiffDelete', { bg = '#462F2F' })
vim.api.nvim_set_hl(0, 'DiffChange', { bg = '#2F4146' })
vim.api.nvim_set_hl(0, 'DiffText', { bg = '#463C2F' })

vim.api.nvim_set_hl(0, 'DiffAdded', { fg = colors[3], bold = true })
vim.api.nvim_set_hl(0, 'DiffRemoved', { fg = colors[2], bold = true })
vim.api.nvim_set_hl(0, 'DiffChanged', { fg = colors[4], bold = true })

vim.api.nvim_set_hl(0, 'DiffviewWinSeparator', { fg = colors[9] })
vim.api.nvim_set_hl(0, 'DiffviewDiffDelete', { fg = colors[9] })
vim.api.nvim_set_hl(0, 'DiffviewFilePanelSelected', { fg = colors[6] })

vim.api.nvim_set_hl(0, 'DiffviewStatusAdded', { fg = colors[3], bold = true })
vim.api.nvim_set_hl(0, 'DiffviewStatusUntracked', { fg = colors[8], bold = true })
vim.api.nvim_set_hl(0, 'DiffviewStatusModified', { fg = colors[4], bold = true })
vim.api.nvim_set_hl(0, 'DiffviewStatusRenamed', { fg = colors[3], bold = true })
vim.api.nvim_set_hl(0, 'DiffviewStatusDeleted', { fg = colors[2], bold = true })
vim.api.nvim_set_hl(0, 'DiffviewStatusIgnored', { fg = colors[9], bold = true })

charbelnicolas avatar Jan 19 '25 22:01 charbelnicolas

vim.api.nvim_set_hl(0, 'DiffAdd', { bg = '#34462F' }) vim.api.nvim_set_hl(0, 'DiffDelete', { bg = '#462F2F' }) vim.api.nvim_set_hl(0, 'DiffChange', { bg = '#2F4146' }) vim.api.nvim_set_hl(0, 'DiffText', { bg = '#463C2F' })

These are not the colors from the image tho... But also nice.

phdah avatar Jan 21 '25 12:01 phdah

I was looking for this exact discussion lol. The whole neovim environment in the screenshot looks so good!

Can someone point to what's being used? i.e. Statusbar, Tabsbar, fonts, theme (judging from the discussion, it seems to be TokyoNight-Night), etc.?

I have diffview installed and running off the supplied configuration in the readme but it looks no where near what it looks like in the screenshot lol. I'm still pretty new to neovim so any pointers would be greatly appreciated!!

Image

JonA02 avatar Feb 18 '25 14:02 JonA02

Based on these lines

https://github.com/sindrets/diffview.nvim/blob/4516612fe98ff56ae0415a259ff6361a89419b0a/lua/diffview/hl.lua#L465-L468

I believe, it should be possible to customize this way

vim.api.nvim_set_hl(0, 'DiffAdd', { ... })
vim.api.nvim_set_hl(0, 'DiffDelete', { ... })
vim.api.nvim_set_hl(0, 'DiffChange', { ... })
vim.api.nvim_set_hl(0, 'DiffText', { ... })

or you might try

vim.api.nvim_set_hl(0, 'DiffviewDiffAdd', { ... })
vim.api.nvim_set_hl(0, 'DiffviewDiffDelete', { ... })
vim.api.nvim_set_hl(0, 'DiffviewDiffChange', { ... })
vim.api.nvim_set_hl(0, 'DiffviewDiffText', { ... })

feryardiant avatar Feb 28 '25 15:02 feryardiant