" enable 24-bit colors if has('termguicolors') set termguicolors endif " gruvbox-material (dark, hard) let g:color#fg = '#d4be98' let g:color#fg_pum = '#ddc7a1' let g:color#red = '#ea6962' let g:color#orange = '#e78a4e' let g:color#yellow = '#d8a657' let g:color#green = '#a9b665' let g:color#aqua = '#89b482' let g:color#blue = '#7daea3' let g:color#purple = '#d3869b' let g:color#grey = '#928374' let g:color#bg = '#1d2021' let g:color#bg_pum = '#3c3836' let g:color#bg_red = '#ea6962' let g:color#bg_green = '#a9b665' let g:color#bg_yellow = '#d8a657' let s:highlights = #{ \ Normal: [ g:color#fg ], \ \ Grey: [ g:color#grey ], \ Red: [ g:color#red ], \ Orange: [ g:color#orange ], \ Yellow: [ g:color#yellow ], \ Green: [ g:color#green ], \ Blue: [ g:color#blue ], \ Cyan: [ g:color#aqua ], \ Purple: [ g:color#purple ], \ \ NormalFloat: [ g:color#fg, g:color#bg ], \ FloatBorder: [ g:color#grey, g:color#bg ], \ Pmenu: [ g:color#fg_pum, g:color#bg_pum ], \ PmenuSbar: [ 'none', g:color#bg_pum ], \ PmenuSel: [ 'none', g:color#grey ], \ \ Cursor: [ 'none', 'none', 'reverse' ], \ Visual: [ 'none', g:color#grey ], \ Search: [ g:color#bg, g:color#bg_green ], \ IncSearch: [ g:color#bg, g:color#bg_red ], \ MatchParen: [ 'none', g:color#bg_pum ], \ \ Todo: [ g:color#bg, g:color#yellow, 'bold' ], \ Underlined: [ 'none', 'none', 'underline' ], \ \ DiffAdd: [ 'none', g:color#green ], \ DiffChange: [ 'none', g:color#blue ], \ DiffDelete: [ 'none', g:color#bg_red ], \ DiffText: [ g:color#bg, g:color#blue ], \ \ TSStrong: [ 'none', 'none', 'bold' ], \ TSEmphasis: [ 'none', 'none', 'italic' ], \ TSUnderline: [ 'none', 'none', 'underline' ], \ TSNote: [ g:color#bg, g:color#green, 'bold' ], \ TSWarning: [ g:color#bg, g:color#yellow, 'bold' ], \ TSDanger: [ g:color#bg, g:color#red, 'bold' ], \ } " execute `highlight` command for each highlight for [ group, highlight ] in items(s:highlights) let fg = len(highlight) >= 1 ? highlight[0] : 'none' let bg = len(highlight) >= 2 ? highlight[1] : 'none' let gui = len(highlight) >= 3 ? highlight[2] : 'none' execute 'highlight! ' . group . ' guifg=' . fg . ' guibg=' . bg . ' gui=' . gui . ' blend=' . 15 endfor let s:links = #{ \ SignColumn: 'Normal', \ LineNr: 'Grey', \ \ ToolbarLine: 'Normal', \ StatusLine: 'Grey', \ StatusLineTerm: 'Grey', \ StatusLineNC: 'Grey', \ StatusLineTermNC: 'Grey', \ \ Folded: 'Grey', \ Conceal: 'Grey', \ NonText: 'Grey', \ WhiteSpace: 'Grey', \ SpecialKey: 'Grey', \ \ CurSearch: 'IncSearch', \ \ ErrorMsg: 'Red', \ WarningMsg: 'Yellow', \ MoreMsg: 'Yellow', \ \ Directory: 'Green', \ \ Boolean: 'Purple', \ Number: 'Purple', \ Float: 'Purple', \ \ PreProc: 'Purple', \ PreCondit: 'Purple', \ Include: 'Purple', \ Define: 'Purple', \ Conditional: 'Red', \ Repeat: 'Red', \ Keyword: 'Red', \ Typedef: 'Red', \ Exeption: 'Red', \ Statement: 'Red', \ \ Error: 'Red', \ StorageClass: 'Orange', \ Tag: 'Orange', \ Label: 'Orange', \ Structure: 'Orange', \ Operator: 'Orange', \ Title: 'Orange', \ Special: 'Yellow', \ SpecialChar: 'Yellow', \ Type: 'Yellow', \ Function: 'Green', \ String: 'Green', \ Character: 'Green', \ Constant: 'Cyan', \ Macro: 'Cyan', \ Identifier: 'Blue', \ \ Comment: 'Grey', \ SpecialComment: 'Grey', \ \ Delimiter: 'Normal', \ Ignore: 'Grey', \ } " execute `highlight link` command for each link for [ group, link ] in items(s:links) execute 'highlight! link ' . group . ' ' . link endfor