This repository has been archived on 2022-08-21. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/home/.config/nvim/lua/themes/nord/init.lua

393 lines
15 KiB
Lua

local cmd = vim.api.nvim_command
local M = {}
local c = require('themes.nord.colors')
local hi = require('util').highlight
-- Set terminal colors
function M.set_vim_termcolors()
vim.g.terminal_color_0 = c.grey1
vim.g.terminal_color_1 = c.red
vim.g.terminal_color_2 = c.green
vim.g.terminal_color_3 = c.yellow
vim.g.terminal_color_4 = c.blue
vim.g.terminal_color_5 = c.purple
vim.g.terminal_color_6 = c.cyan
vim.g.terminal_color_7 = c.white1
vim.g.terminal_color_8 = c.grey_bright
vim.g.terminal_color_9 = c.red
vim.g.terminal_color_10 = c.green
vim.g.terminal_color_11 = c.yellow
vim.g.terminal_color_12 = c.blue
vim.g.terminal_color_13 = c.purple
vim.g.terminal_color_14 = c.teal
vim.g.terminal_color_15 = c.white2
end
-- Editor related groups
function M.highlight_editor()
-- Color groups for other uses
hi('Red', c.red, '', '', '')
hi('Green', c.green, '', '', '')
hi('Yellow', c.yellow, '', '', '')
hi('Blue', c.blue, '', '', '')
hi('Purple', c.purple, '', '', '')
hi('Cyan', c.cyan, '', '', '')
hi('Orange', c.orange, '', '', '')
hi('White', c.fg, '', '', '')
-- Attributes
hi('Bold' , '', '', 'bold' , '')
hi('Italic' , '', '', 'italic' , '')
hi('Underline', '', '', 'underline', '')
-- Editor
hi('ColorColumn', '' , c.grey1, '', '')
hi('Cursor' , c.black , c.fg , '', '')
hi('CursorLine' , '' , c.grey1, '', '')
hi('Error' , c.fg , c.red , '', '')
hi('iCursor' , c.black , c.fg , '', '')
hi('LineNr' , c.grey3 , '' , '', '')
hi('MatchParen' , c.cyan , c.grey3, '', '')
hi('NonText' , c.grey2 , '' , '', '')
hi('Normal' , c.fg , c.black, '', '')
hi('Pmenu' , c.fg , c.grey2, '', '')
hi('PmenuSbar' , c.fg , c.grey2, '', '')
hi('PmenuSel' , c.cyan , c.grey3, '', '')
hi('PmenuThumb' , c.cyan , c.grey3, '', '')
hi('SpecialKey' , c.grey3 , '' , '', '')
hi('SpellBad' , c.red , c.black, 'undercurl', c.red)
hi('SpellCap' , c.yellow, c.black, 'undercurl', c.yellow)
hi('SpellLocal' , c.white1, c.black, 'undercurl', c.white1)
hi('SpellRare' , c.white2, c.black, 'undercurl', c.white2)
hi('Visual' , '' , c.grey2 , '', '')
hi('VisualNOS' , '' , c.grey2 , '', '')
-- Neovim support
hi('healthError' , c.red , c.grey1, '', '')
hi('healthSuccess', c.green , c.grey1, '', '')
hi('healthWarning', c.yellow, c.grey1, '', '')
hi('TermCursorNC' , '' , c.grey1, '', '')
-- Gutter
hi('CursorColumn', '' , c.grey1, '', '')
hi('CursorLineNr', c.fg , '' , '', '')
hi('Folded' , c.grey3, c.grey1, '', '')
hi('FoldColumn' , c.grey3, c.black, '', '')
hi('SignColumn' , c.grey1, c.black, '', '')
-- Navigation
hi('Directory', c.cyan, '', '', '')
-- Prompt
hi('EndOfBuffer', c.grey1, '' , '', '')
hi('ErrorMsg' , c.fg , c.red , '', '')
hi('ModeMsg' , c.fg , '' , '', '')
hi('MoreMsg' , c.cyan , '' , '', '')
hi('Question' , c.fg , '' , '', '')
hi('WarningMsg' , c.black, c.yellow, '', '')
hi('WildMenu' , c.cyan , c.grey1 , '', '')
-- Statusline
hi('StatusLine' , c.cyan, c.grey3, '', '')
hi('StatusLineNC' , c.fg , c.grey3, '', '')
hi('StatusLineTerm' , c.cyan, c.grey3, '', '')
hi('StatusLineTermNC', c.fg , c.grey3, '', '')
-- Search
hi('IncSearch', c.white2, c.dark_blue, 'underline', '')
hi('Search' , c.grey1 , c.cyan , '' , '')
-- Tabline
hi('TabLine' , c.fg , c.grey1, '', '')
hi('TabLineFill', c.fg , c.grey1, '', '')
hi('TabLineSel' , c.cyan, c.grey3, '', '')
-- Window
hi('Title', c.fg, '', '', '')
hi('VertSplit', c.grey2, c.black, '', '')
end
-- Syntax groups
function M.highlight_syntax()
-- Base syntax
hi('Boolean', c.blue, '', '', '')
hi('Character', c.fg, '', '', '')
hi('Comment', c.grey_bright, '', 'italic', '')
hi('Conceal', '', '', '', '')
hi('Conditional', c.blue, '', '', '')
hi('Constant', c.fg, '', '', '')
hi('Decorator', c.orange, '', '', '')
hi('Define', c.blue, '', '', '')
hi('Delimiter', c.white2, '', '', '')
hi('Exception', c.blue, '', '', '')
hi('Float', c.purple, '', '', '')
hi('Function', c.cyan, '', '', '')
hi('Identifier', c.fg, '', '', '')
hi('Include', c.blue, '', '', '')
hi('Keyword', c.blue, '', 'bold', '')
hi('Label', c.blue, '', '', '')
hi('Number', c.purple, '', '', '')
hi('Operator', c.blue, '', '', '')
hi('PreProc', c.blue, '', '', '')
hi('Repeat', c.blue, '', '', '')
hi('Special', c.fg, '', '', '')
hi('SpecialChar', c.yellow, '', '', '')
hi('SpecialComment', c.cyan, '', 'italic', '')
hi('Statement', c.blue, '', '', '')
hi('StorageClass', c.blue, '', '', '')
hi('String', c.green, '', '', '')
hi('Structure', c.blue, '', '', '')
hi('Tag', c.fg, '', '', '')
hi('Todo', c.yellow, '', '', '')
hi('Type', c.blue, '', '', '')
hi('Typedef', c.blue, '', '', '')
cmd('hi! link Annotation Decorator')
cmd('hi! link Macro Define')
cmd('hi! link PreCondit PreProc')
cmd('hi! link Variable Identifier')
-- Diff
hi('DiffAdd' , c.green , c.grey1, '', '')
hi('DiffChange', c.yellow, c.grey1, '', '')
hi('DiffDelete', c.red , c.grey1, '', '')
hi('DiffText' , c.blue , c.grey1, '', '')
-- Legacy diff groups for some plugins
hi('diffOldFile', c.dark_blue, c.grey1, '', '')
hi('diffNewFile', c.blue, c.grey1, '', '')
hi('diffFile', c.cyan, c.grey1, '', '')
hi('diffLine', c.purple, c.grey1, '', '')
hi('diffIndexLine', c.fg, c.grey1, '', '')
cmd('hi! link diffAdded DiffAdd')
cmd('hi! link diffRemoved DiffDelete')
cmd('hi! link diffChanged DiffChange')
end
-- Things that still don't look right with nvim-treesitter
function M.highlight_languages()
-- sql
cmd('hi! link sqlKeyword Keyword')
cmd('hi! link sqlSpecial Keyword')
-- markdown
hi('markdownCode', c.fg, '', 'italic', '')
hi('markdownCodeBlock', c.fg, '', 'italic', '')
hi('markdownH1', c.purple, '', 'bold', '')
cmd('hi! link markdownH1Delimiter markdownH1')
hi('markdownH2', c.dark_blue, '', 'bold', '')
cmd('hi! link markdownH2Delimiter markdownH2')
hi('markdownH3', c.blue, '', 'bold', '')
cmd('hi! link markdownH3Delimiter markdownH3')
hi('markdownH4', c.cyan, '', 'bold', '')
cmd('hi! link markdownH4Delimiter markdownH4')
hi('markdownH5', c.teal, '', 'bold', '')
cmd('hi! link markdownH5Delimiter markdownH5')
hi('markdownH6', c.green, '', 'bold', '')
cmd('hi! link markdownH6Delimiter markdownH6')
-- html
hi('htmlLink', c.green, '', 'underline', '')
cmd('hi! link htmlH1 markdownH1')
cmd('hi! link htmlH2 markdownH2')
cmd('hi! link htmlH3 markdownH3')
cmd('hi! link htmlH4 markdownH4')
cmd('hi! link htmlH5 markdownH5')
cmd('hi! link htmlH6 markdownH6')
end
-- Treesitter (:h nvim-treesitter-highlights)
function M.highlight_treesitter()
cmd('hi! link TSAnnotation Annotation')
hi('TSCharacter', c.green, '', '', '')
hi('TSConstructor', c.blue, '', '', '')
hi('TSConstant', c.yellow, '', '', '')
hi('TSFloat', c.purple, '', '', '')
hi('TSNumber', c.purple, '', '', '')
hi('TSString', c.green, '', '', '')
hi('TSAttribute', c.purple, '', '', '')
cmd('hi! link TSBoolean Boolean')
hi('TSConstBuiltin', c.teal, '', '', '')
hi('TSConstMacro', c.teal, '', '', '')
hi('TSError', c.red, '', '', '')
hi('TSException', c.purple, '', '', '')
hi('TSField', c.teal, '', '', '')
hi('TSFuncMacro', c.teal, '', '', '')
hi('TSInclude', c.blue, '', '', '')
hi('TSLabel', c.purple, '', '', '')
hi('TSNamespace', c.fg, '', '', '')
hi('TSOperator', c.blue, '', '', '')
hi('TSParameter', c.purple, '', 'italic', '')
hi('TSParameterReference', c.purple, '', 'italic', '')
hi('TSProperty', c.teal, '', '', '')
hi('TSPunctDelimiter', c.fg, '', '', '')
hi('TSPunctBracket', c.cyan, '', '', '')
hi('TSPunctSpecial', c.cyan, '', '', '')
hi('TSStringRegex', c.teal, '', '', '')
hi('TSStringEscape', c.purple, '', '', '')
hi('TSSymbol', c.purple, '', '', '')
hi('TSType', c.blue, '', '', '')
hi('TSTypeBuiltin', c.blue, '', '', '')
hi('TSTag', c.fg, '', '', '')
hi('TSTagDelimiter', c.purple, '', '', '')
hi('TSText', c.fg, '', '', '')
hi('TSTextReference', c.purple, '', '', '')
hi('TSEmphasis', c.fg, '', 'bold,italic', '')
cmd('hi! link TSUnderline Underline')
hi('TSTitle', c.dark_blue, '', 'bold', '')
hi('TSLiteral', c.fg, '', '', '')
hi('TSURI', c.green, '', 'underline', '')
cmd('hi! link TSComment Comment')
hi('TSConditional', c.blue, '', 'bold', '')
hi('TSKeyword', c.blue, '', 'bold', '')
hi('TSRepeat', c.blue, '', 'bold', '')
hi('TSKeywordFunction', c.blue, '', 'bold', '')
hi('TSKeywordOperator', c.blue, '', 'bold', '')
cmd('hi! link TSFunction Function')
hi('TSMethod', c.teal, '', '', '')
cmd('hi! link TSFuncBuiltin Function')
cmd('hi! link TSVariable Variable')
cmd('hi! link TSVariableBuiltin Variable')
cmd('hi! link TSStrong Bold')
cmd('hi! link TSStructure Structure')
hi('TSNote', c.blue, '', 'bold', '')
hi('TSWarning', c.yellow, '', 'bold', '')
hi('TSDanger', c.red, '', 'bold', '')
end
-- LSP groups
function M.highlight_lsp()
hi('LspDiagnosticsDefaultError', c.red, '', '', '')
hi('LspDiagnosticsSignError', c.red, '', '', '')
hi('LspDiagnosticsFloatingError', c.red, '', '', '')
hi('LspDiagnosticsVirtualTextError', c.red, '', 'italic', '')
hi('LspDiagnosticsUnderlineError', '', '', 'undercurl', c.red)
hi('LspDiagnosticsDefaultWarning', c.yellow, '', '', '')
hi('LspDiagnosticsSignWarning', c.yellow, '', '', '')
hi('LspDiagnosticsFloatingWarning', c.yellow, '', '', '')
hi('LspDiagnosticsVirtualTextWarning', c.yellow, '', 'italic', '')
hi('LspDiagnosticsUnderlineWarning', '', '', 'undercurl', c.yellow)
hi('LspDiagnosticsDefaultInformation', c.blue, '', '', '')
hi('LspDiagnosticsSignInformation', c.blue, '', '', '')
hi('LspDiagnosticsFloatingInformation', c.blue, '', '', '')
hi('LspDiagnosticsVirtualTextInformation', c.blue, '', 'italic', '')
hi('LspDiagnosticsUnderlineInformation', '', '', 'undercurl', c.blue)
hi('LspDiagnosticsDefaultHint', c.cyan, '', '', '')
hi('LspDiagnosticsSignHint', c.cyan, '', '', '')
hi('LspDiagnosticsFloatingHint', c.cyan, '', '', '')
hi('LspDiagnosticsVirtualTextHint', c.cyan, '', 'italic', '')
hi('LspDiagnosticsUnderlineHint', '', '', 'undercurl', c.cyan)
hi('LspReferenceText', c.fg, c.grey_bright, '', '')
hi('LspReferenceRead', c.fg, c.grey_bright, '', '')
hi('LspReferenceWrite', c.fg, c.grey_bright, '', '')
cmd('hi! link LspCodeLens Comment')
end
-- Specify groups for plugins
function M.highlight_plugins()
-- nvim-cmp
hi('CmpItemAbbr', c.fg, '', '', '')
hi('CmpItemAbbrMatch', c.yellow, '', '', '')
hi('CmpItemAbbrMatchFuzzy', c.yellow, '', '', '')
hi('CmpItemKind', c.orange, '', '', '')
hi('CmpItemMenu', c.blue, '', '', '')
-- Gitsigns
hi('GitSignsAddNr' , c.green , '', '', '')
hi('GitSignsChangeNr', c.yellow, '', '', '')
hi('GitSignsDeleteNr', c.red , '', '', '')
hi('GitSignsCurrentLineBlame', c.grey_bright, '', 'italic,bold', '')
-- ts-rainbow
hi('rainbowcol1', c.red, '', 'bold', '')
hi('rainbowcol2', c.orange, '', 'bold', '')
hi('rainbowcol3', c.yellow, '', 'bold', '')
hi('rainbowcol4', c.green, '', 'bold', '')
hi('rainbowcol5', c.cyan, '', 'bold', '')
hi('rainbowcol6', c.blue, '', 'bold', '')
hi('rainbowcol7', c.purple, '', 'bold', '')
-- hop.nvim
hi('HopNextKey', c.red, '', 'bold', '')
hi('HopNextKey1', c.cyan, '', 'bold', '')
hi('HopNextKey2', c.dark_blue, '', '', '')
cmd('hi! link HopUnmatched LineNr')
-- vim-eft
hi('EftChar', c.orange, '', 'bold,underline', '')
cmd('hi! link EftSubChar LineNr')
-- dashboard-nvim / alpha-nvim
hi('DashboardHeader' , c.blue , '', 'bold' , '')
hi('DashboardCenter' , c.green , '', 'bold' , '')
hi('DashboardShortcut', c.grey_bright, '', 'bold,italic', '')
hi('DashboardFooter' , c.purple , '', 'bold' , '')
-- symbols-outline.nvim
hi('FocusedSymbol', c.black, c.yellow, 'bold', '')
-- NvimTree
hi('NvimTreeIndentMarker' , c.grey3 , '', '', '')
hi('NvimTreeFolderIcon' , c.fg , '', '', '')
hi('NvimTreeRootFolder' , c.teal , '', 'bold', '')
hi('NvimTreeFolderName' , c.blue , '', '', '')
hi('NvimTreeEmptyFolderName', c.grey_bright, '', '', '')
hi('NvimTreeImageFile' , c.yellow , '', '', '')
hi('NvimTreeExecFile' , c.green , '', '', '')
hi('NvimTreeSpecialFile' , c.dark_blue , '', 'underline', '')
hi('NvimTreeGitDirty' , c.yellow , '', '', '')
hi('NvimTreeGitNew' , c.green , '', '', '')
hi('NvimTreeGitDeleted' , c.red , '', '', '')
-- WhichKey
hi('WhichKey' , c.green , '', 'bold', '')
hi('WhichKeyGroup' , c.cyan , '', '' , '')
hi('WhichKeyDesc' , c.blue , '', '' , '')
hi('WhichKeySeperator', c.grey3 , '', '' , '')
hi('WhichKeyFloating' , c.fg , '', '' , '')
hi('WhichKeyFloat' , c.grey_bright, '', '' , '')
-- Indent Blankline
hi('IndentBlanklineChar', c.grey1, '', '', '')
hi('IndentBlanklineContextChar', c.grey_bright, '', '', '')
-- window-picker.nvim
hi('WindowPicker', c.fg, c.blue, 'bold', '')
hi('WindowPickerSwap', c.fg, c.orange, 'bold', '')
-- vim-illuminate
cmd('hi! link illuminatedWord Underline')
cmd('hi! link illuminatedCurWord Underline')
-- trouble.nvim
hi('LspTroubleText', c.blue, '', 'bold', '')
-- Telescope
hi('TelescopePromptBorder', c.cyan, '', 'bold', '')
hi('TelescopeResultsBorder', c.blue, '', 'bold', '')
hi('TelescopePreviewBorder', c.green, '', 'bold', '')
hi('TelescopeSelection', c.fg, c.grey2, '', '')
hi('TelescopeMultiSelection', c.fg, c.grey2, 'bold', '')
hi('TelescopeSelectionCaret', c.red, c.grey2, 'bold', '')
hi('TelescopeMatching', c.yellow, '', 'bold', '')
-- Neogit
hi('NeogitBranch', c.purple, '', '', '')
hi('NeogitRemote', c.blue, '', '', '')
hi('NeogitHunkHeader', c.cyan, c.grey2, 'bold', '')
hi('NeogitHunkHeaderHighlight', c.yellow, c.grey2, 'bold', '')
hi('NeogitDiffContextHighlight', c.fg, c.grey2, '', '')
hi('NeogitDiffDeleteHighlight', c.red, c.grey2, '', '')
hi('NeogitDiffAddHighlight', c.green, c.grey2, '', '')
hi('NeogitNotificationInfo', c.green, '', '', '')
hi('NeogitNotificationWarning', c.yellow, '', '', '')
hi('NeogitNotificationError', c.red, '', '', '')
end
return M