diff options
| author | Ellison Leão <ellisonleao@gmail.com> | 2021-02-23 11:42:55 -0300 |
|---|---|---|
| committer | Ellison Leão <ellisonleao@gmail.com> | 2021-02-23 11:42:55 -0300 |
| commit | 939a21c94bf1d1efbdf527ac9c0b312d606679cb (patch) | |
| tree | d8ce8be80436bf2f26a50fe5179bc60d42248bf9 /lua/theme/init.lua | |
| parent | a034fdca2a52e31296684d7e10f131a0c3e8e606 (diff) | |
| download | gruvbox-939a21c94bf1d1efbdf527ac9c0b312d606679cb.tar.gz gruvbox-939a21c94bf1d1efbdf527ac9c0b312d606679cb.tar.xz | |
adding more highlight groups
Diffstat (limited to 'lua/theme/init.lua')
| -rw-r--r-- | lua/theme/init.lua | 910 |
1 files changed, 910 insertions, 0 deletions
diff --git a/lua/theme/init.lua b/lua/theme/init.lua new file mode 100644 index 0000000..b14e022 --- /dev/null +++ b/lua/theme/init.lua @@ -0,0 +1,910 @@ +local lush = require("lush") +local hsl = lush.hsl +-- gruvbox palette +local colors = { + dark0_hard = "#1d2021", + dark0 = "#282828", + dark0_soft = "#32302f", + dark1 = "#3c3836", + dark2 = "#504945", + dark3 = "#665c54", + dark4 = "#7c6f64", + light0_hard = "#f9f5d7", + light0 = "#fbf1c7", + light0_soft = "#f2e5bc", + light1 = "#ebdbb2", + light2 = "#d5c4a1", + light3 = "#bdae93", + light4 = "#a89984", + bright_red = "#fb4934", + bright_green = "#b8bb26", + bright_yellow = "#fabd2f", + bright_blue = "#83a598", + bright_purple = "#d3869b", + bright_aqua = "#8ec07c", + bright_orange = "#fe8019", + neutral_red = "#cc241d", + neutral_green = "#98971a", + neutral_yellow = "#d79921", + neutral_blue = "#458588", + neutral_purple = "#b16286", + neutral_aqua = "#689d6a", + neutral_orange = "#d65d0e", + faded_red = "#9d0006", + faded_green = "#79740e", + faded_yellow = "#b57614", + faded_blue = "#076678", + faded_purple = "#8f3f71", + faded_aqua = "#427b58", + faded_orange = "#af3a03", + gray = "#928374", +} +-- options (dark mode by default) +local bg0 = colors.dark0 +local bg1 = colors.dark1 +local bg2 = colors.dark2 +local bg3 = colors.dark3 +local bg4 = colors.dark4 + +local fg0 = colors.light0 +local fg1 = colors.light1 +local fg2 = colors.light2 +local fg3 = colors.light3 +local fg4 = colors.light4 + +local red = colors.bright_red +local green = colors.bright_green +local yellow = colors.bright_yellow +local blue = colors.bright_blue +local purple = colors.bright_purple +local aqua = colors.bright_aqua +local orange = colors.bright_orange +local sign_column = bg1 +local gray = colors.gray + +-- global settings +local settings = { + contrast_dark = "medium", + contrart_light = "medium", + bold = true, + italic = true, + undercurl = true, + underline = true, + improved_strings = false, + improved_warnings = false, + invert_signs = false, + invert_selection = true, + invert_tabline = false, + italicize_comments = true, + italicize_strings = false, +} + +local styles = { + italic = "italic", + inverse = "inverse", + bold = "bold", + undercurl = "undercurl", + underline = "underline", +} + +-- setting default values +for k, val in pairs(settings) do + local key = "gruvbox_" .. k + if vim.g[key] == nil then + vim.g[key] = val + end +end + +-- handle light/dark contrast settings +local bg = vim.o.background +local contrast = vim.g["gruvbox_contrast_" .. bg] +if contrast == "hard" then + bg0 = colors[bg .. "0_hard"] +elseif contrast == "soft" then + bg0 = colors[bg .. "0_soft"] +end + +-- swap colors if light mode +if bg == "light" then + bg0 = colors.light0 + bg1 = colors.light1 + bg2 = colors.light2 + bg3 = colors.light3 + bg4 = colors.light4 + fg0 = colors.dark0 + fg1 = colors.dark1 + fg2 = colors.dark2 + fg3 = colors.dark3 + fg4 = colors.dark4 + red = colors.faded_red + green = colors.faded_green + yellow = colors.faded_yellow + blue = colors.faded_blue + purple = colors.faded_purple + aqua = colors.faded_aqua + orange = colors.faded_orange +end + +local hls_cursor = orange +if vim.g.gruvbox_hls_cursor ~= nil then + hls_cursor = colors[vim.g.gruvbox_hls_cursor] +end + +local hls_highlight = yellow +if vim.g.gruvbox_hls_cursor ~= nil then + hls_cursor = colors[vim.g.gruvbox_hls_highlight] +end + +local number_column +if vim.g.gruvbox_number_column ~= nil then + number_column = hsl(colors[vim.g.gruvbox_number_column]) +end + +local color_column = bg1 +if vim.g.gruvbox_color_column ~= nil then + color_column = colors[vim.g.gruvbox_color_column] +end + +local vert_split = bg0 +if vim.g.gruvbox_vert_split ~= nil then + vert_split = colors[vim.g.gruvbox_vert_split] +end + +local invert_signs +if vim.g.gruvbox_invert_signs then + invert_signs = styles.inverse +end + +local invert_selection = styles.inverse +if not vim.g.gruvbox_invert_selection then + invert_selection = nil +end + +local invert_tabline +if vim.g.gruvbox_invert_tabline then + invert_tabline = styles.inverse +end + +local tabline_sel = green +if vim.g.gruvbox_tabline_sel then + tabline_sel = colors[vim.g.gruvbox_tabline_sel] +end + +local italic_comments = settings.italic +if not vim.g.gruvbox_italicize_comments then + italic_comments = nil +end + +local italic_strings +if vim.g.gruvbox_italicize_strings then + italic_strings = styles.italic +end + +local special = {fg = hsl(orange), bg = hsl(bg1), gui = italic_strings} +local special_string = {fg = hsl(fg1), bg = hsl(bg1), italic_strings} +if not vim.g.gruvbox_improved_strings then + special = {fg = hsl(orange)} + special_string = {fg = hsl(green), gui = italic_strings} +end + +local theme = lush(function() + return { + -- EndOfBuffer { }, + -- TermCursor { }, + -- TermCursorNC { }, + -- Substitute { }, + -- MsgArea { }, + -- MsgSeparator { }, + -- Whitespace { }, + -- Base groups + ColorColumn {bg = hsl(color_column)}, + Conceal {bg = hsl(blue)}, + Cursor {gui = styles.inverse}, + lCursor {Cursor}, + CursorIM {Cursor}, + CursorColumn {bg = bg1}, + CursorLine {CursorColumn}, + Directory {fg = hsl(green), gui = styles.bold}, + DiffAdd {fg = hsl(green), bg = hsl(bg1), gui = invert_signs}, + DiffChange {fg = hsl(aqua), bg = hsl(bg1), gui = invert_signs}, + DiffDelete {fg = hsl(red), bg = hsl(bg1), gui = invert_signs}, + DiffText {fg = hsl(yellow), bg = hsl(bg1), gui = invert_signs}, + ErrorMsg {fg = hsl(bg0), bg = hsl(red), gui = styles.bold}, + VertSplit {fg = hsl(bg3), bgb = hsl(vert_split)}, + Folded {fg = hsl(gray), bg = hsl(bg1), gui = styles.italic}, + FoldColumn {fg = hsl(gray), bg = hsl(bg1)}, + SignColumn {bg = hsl(sign_column)}, + IncSearch {fg = hsl(hls_cursor), bg = hsl(bg0), gui = styles.inverse}, + LineNr {fg = hsl(bg4), bg = number_column}, + CursorLineNr {fg = hsl(yellow), bg = hsl(bg1)}, + MatchParen {bg = hsl(bg3), gui = styles.bold}, + ModeMsg {fg = hsl(yellow), gui = styles.bold}, + MoreMsg {fg = hsl(yellow), gui = styles.bold}, + NonText {fg = hsl(bg2)}, + Normal {fg = hsl(fg1), bg = hsl(bg0)}, + NormalFloat {Normal}, + NormalNC {Normal}, + Pmenu {fg = hsl(fg1), bg = hsl(bg2)}, + PmenuSel {fg = hsl(bg2), bg = hsl(blue), gui = styles.bold}, + PmenuSbar {bg = hsl(bg2)}, + PmenuThumb {bg = hsl(bg4)}, + Question {fg = hsl(orange), gui = styles.bold}, + QuickFixLine {fg = hsl(fg0), bg = hsl(yellow), gui = styles.bold}, + Search {fg = hsl(hls_highlight), bg = hsl(bg0), gui = styles.inverse}, + SpecialKey {fg = hsl(fg4)}, + SpellRare {gui = styles.undercurl, sep = hsl(purple)}, + SpellBad {fg = hsl(red), gui = styles.underline}, + StatusLine {fg = hsl(bg2), bg = hsl(fg1), gui = styles.inverse}, + StatusLineNC {fg = hsl(bg1), bg = hsl(fg4), gui = styles.inverse}, + TabLine {fg = hsl(bg4), bg = hsl(bg1), gui = invert_tabline}, + TabLineFill {fg = hsl(bg4), bg = hsl(bg1), gui = invert_tabline}, + TabLineSel {fg = hsl(tabline_sel), bg = hsl(bg1), gui = invert_tabline}, + Title {fg = hsl(green), gui = styles.bold}, + Visual {bg = hsl(bg3), gui = invert_selection}, + VisualNOS {bg = hsl(bg3), gui = invert_selection}, + WarningMsg {fg = hsl(red), gui = styles.bold}, + WildMenu {fg = hsl(blue), bg = hsl(bg2), gui = styles.bold}, + Constant {fg = hsl(purple)}, + String {unpack(special_string)}, + Character {fg = hsl(purple)}, + Number {Character}, + Boolean {Character}, + Float {Character}, + Identifier {fg = hsl(blue)}, + Function {fg = hsl(green), gui = styles.bold}, + Statement {fg = hsl(red)}, + Conditional {fg = hsl(red)}, + Repeat {fg = hsl(red)}, + Label {fg = hsl(red)}, + Keyword {fg = hsl(red)}, + Exception {fg = hsl(red)}, + Operator {fg = hsl(fg1)}, + PreProc {fg = hsl(aqua)}, + Include {fg = hsl(aqua)}, + Define {fg = hsl(aqua)}, + Macro {fg = hsl(aqua)}, + PreCondit {fg = hsl(aqua)}, + Type {fg = hsl(yellow)}, + StorageClass {fg = hsl(orange)}, + Structure {fg = hsl(aqua)}, + Typedef {fg = hsl(yellow)}, + Special {unpack(special)}, + SpecialChar {fg = hsl(red)}, + Tag {fg = hsl(aqua), gui = styles.bold}, + Delimiter {fg = hsl(fg0)}, + SpecialComment {fg = hsl(gray), gui = styles.italic}, + Debug {fg = hsl(red)}, + Underlined {gui = styles.underline}, + Bold {gui = styles.bold}, + Italic {gui = styles.italic}, + Ignore {}, + Error {fg = hsl(red), gui = styles.bold .. "," .. styles.underline}, -- TODO: check if we have some abstraction to merge two styles + Todo {fg = hsl(fg0), gui = styles.bold .. "," .. styles.italic}, + + -- LSP + LspDiagnosticsError {Error}, + LspDiagnosticsErrorSign {fg = hsl(red), bg = hsl(sign_column), gui = invert_signs}, + LspDiagnosticsErrorFloating {LspDiagnosticsError}, + LspDiagnosticsWarning {fg = hsl(yellow)}, + LspDiagnosticsWarningSign { + LspDiagnosticsWarning, + bg = hsl(sign_column), + gui = styles.undercurl, + sp = hsl(yellow), + }, + LspDiagnosticsWarningFloating {LspDiagnosticsWarning}, + LspDiagnosticsInformation {fg = hsl(blue)}, + LspDiagnosticsInformationSign { + LspDiagnosticsInformation, + bg = hsl(sign_column), + gui = invert_signs, + }, + LspDiagnosticsInformationFloating {LspDiagnosticsInformation}, + LspDiagnosticsHint {fg = hsl(aqua)}, + LspDiagnosticsHintSign { + LspDiagnosticsHint, + bg = hsl(sign_column), + gui = invert_signs, + }, + LspDiagnosticsHintFloating {LspDiagnosticsHint}, + + -- Treesitter + TSNone {}, + TSError {Error}, + TSPunctDelimiter {Delimiter}, + TSPunctBracket {Delimiter}, + TSPunctSpecial {Delimiter}, + TSConstant {Constant}, + TSConstBuiltin {Special}, + TSConstMacro {Define}, + TSString {String}, + TSStringRegex {String}, + TSStringEscape {SpecialChar}, + TSCharacter {Character}, + TSNumber {Number}, + TSBoolean {Boolean}, + TSFloat {Float}, + TSFunction {Function}, + TSFuncBuiltin {Special}, + TSFuncMacro {Macro}, + TSParameter {Identifier}, + TSParameterReference {TSParameter}, + TSMethod {Function}, + TSField {Identifier}, + TSProperty {Identifier}, + TSConstructor {Special}, + TSConditional {Conditional}, + TSRepeat {Repeat}, + TSLabel {Label}, + TSOperator {Operator}, + TSKeyword {Keyword}, + TSKeywordFunction {Keyword}, + TSException {Exception}, + TSType {Type}, + TSTypeBuiltin {Type}, + TSNamespace {Include}, + TSInclude {Include}, + TSAnnotation {PreProc}, + TSText {TSNone}, + TSStrong {gui = styles.bold}, + TSEmphasis {gui = styles.italic}, + TSUnderline {gui = styles.underline}, + TSTitle {Title}, + TSLiteral {String}, + TSURI {Underlined}, + TSVariable {Special}, + TSVariableBuiltin {Special}, + + -- netrw + netrwDir {fg = hsl(aqua)}, + netrwClassify {netrwDir}, + netrwLink {fg = hsl(gray)}, + netrwSymLink {fg = hsl(fg1)}, + netrwExe {fg = hsl(yellow)}, + netrwComment {netrwLink}, + netrwList {fg = hsl(blue)}, + netrwHelpCmd {netrwDir}, + netrwCmdSep {fg = hsl(fg3)}, + netrwVersion {fg = hsl(green)}, + + -- vim-startify + StartifyBracket {fg = hsl(fg3)}, + StartifyFile {fg = hsl(fg1)}, + StartifyNumber {fg = hsl(blue)}, + StartifyPath {fg = hsl(gray)}, + StartifySlash {StartifyPath}, + StartifySection {fg = hsl(yellow)}, + StartifySpecial {fg = hsl(bg2)}, + StartifyHeader {fg = hsl(orange)}, + StartifyFooter {fg = hsl(bg2)}, + + -- vim-signify + SignifySignAdd {fg = hsl(green), bg = hsl(sign_column), gui = invert_signs}, + SignifySignChange {fg = hsl(aqua), bg = hsl(sign_column), gui = invert_signs}, + SignifySignDelete {fg = hsl(red), bg = hsl(sign_column), gui = invert_signs}, + + -- lua + luaIn {fg = hsl(red)}, + luaFunction {fg = hsl(aqua)}, + luaTable {fg = hsl(orange)}, + + -- golang + goDirective {fg = hsl(aqua)}, + goConstants {fg = hsl(purple)}, + goDeclaration {fg = hsl(red)}, + goDeclType {fg = hsl(blue)}, + goBuiltins {fg = hsl(orange)}, + + -- java + javaAnnotation {fg = hsl(blue)}, + javaDocTags {fg = hsl(aqua)}, + javaCommentTitle {SpecialComment}, + javaParen {fg = hsl(fg3)}, + javaParen1 {fg = hsl(fg3)}, + javaParen2 {fg = hsl(fg3)}, + javaParen3 {fg = hsl(fg3)}, + javaParen4 {fg = hsl(fg3)}, + javaParen5 {fg = hsl(fg3)}, + javaOperator {fg = hsl(orange)}, + + -- xml + xmlTag {fg = hsl(aqua), gui = styles.bold}, + xmlEndTag {fg = hsl(aqua), gui = styles.bold}, + xmlTagName {fg = hsl(blue)}, + xmlEqual {fg = hsl(blue)}, + docbkKeyword {fg = hsl(aqua), gui = styles.bold}, + xmlDocTypeDecl {fg = hsl(gray)}, + xmlDocTypeKeyword {fg = hsl(purple)}, + xmlCdataStart {fg = hsl(gray)}, + xmlCdataCdata {fg = hsl(purple)}, + dtdFunction {fg = hsl(gray)}, + dtdTagName {fg = hsl(purple)}, + xmlAttrib {fg = hsl(orange)}, + xmlProcessingDelim {fg = hsl(gray)}, + dtdParamEntityPunct {fg = hsl(gray)}, + dtdParamEntityDPunct {fg = hsl(gray)}, + xmlAttribPunct {fg = hsl(gray)}, + xmlEntity {fg = hsl(red)}, + xmlEntityPunct {fg = hsl(red)}, + + -- viml + vimNotation {fg = hsl(orange)}, + vimBracket {fg = hsl(orange)}, + vimMapModKey {fg = hsl(orange)}, + vimFuncSID {fg = hsl(fg3)}, + vimSetSep {fg = hsl(fg3)}, + vimSep {fg = hsl(fg3)}, + vimContinue {fg = hsl(fg3)}, + + -- c + cOperator {fg = hsl(purple)}, + cppOperator {fg = hsl(purple)}, + cStructure {fg = hsl(orange)}, + + -- python + pythonBuiltin {fg = hsl(orange)}, + pythonBuiltinObj {fg = hsl(orange)}, + pythonBuiltinFunc {fg = hsl(orange)}, + pythonFunction {fg = hsl(aqua)}, + pythonDecorator {fg = hsl(red)}, + pythonInclude {fg = hsl(blue)}, + pythonImport {fg = hsl(blue)}, + pythonRun {fg = hsl(blue)}, + pythonCoding {fg = hsl(blue)}, + pythonOperator {fg = hsl(red)}, + pythonException {fg = hsl(red)}, + pythonExceptions {fg = hsl(purple)}, + pythonBoolean {fg = hsl(purple)}, + pythonDot {fg = hsl(fg3)}, + pythonConditional {fg = hsl(red)}, + pythonRepeat {fg = hsl(red)}, + pythonDottedName {fg = hsl(green), gui = styles.bold}, + + -- clojure + clojureRegexpCharClass {fg = hsl(fg3), gui = styles.bold}, + clojureKeyword {fg = hsl(blue)}, + clojureCond {fg = hsl(orange)}, + clojureSpecial {fg = hsl(orange)}, + clojureDefine {fg = hsl(orange)}, + + clojureFunc {fg = hsl(yellow)}, + clojureRepeat {fg = hsl(yellow)}, + clojureCharacter {fg = hsl(aqua)}, + clojureStringEscape {fg = hsl(aqua)}, + clojureException {fg = hsl(red)}, + + clojureRegexp {fg = hsl(aqua)}, + clojureRegexpEscape {fg = hsl(aqua)}, + clojureRegexpMod {clojureRegexpCharClass}, + clojureRegexpQuantifier {clojureRegexpCharClass}, + + clojureParen {fg = hsl(fg3)}, + clojureAnonArg {fg = hsl(yellow)}, + clojureVariable {fg = hsl(blue)}, + clojureMacro {fg = hsl(orange)}, + + clojureMeta {fg = hsl(yellow)}, + clojureDeref {fg = hsl(yellow)}, + clojureQuote {fg = hsl(yellow)}, + clojureUnquote {fg = hsl(yellow)}, + + -- html + htmlTag {fg = hsl(aqua), gui = styles.bold}, + htmlEndTag {fg = hsl(aqua), gui = styles.bold}, + htmlTagName {fg = hsl(blue)}, + htmlArg {fg = hsl(orange)}, + htmlScriptTag {fg = hsl(purple)}, + htmlTagN {fg = hsl(fg1)}, + htmlSpecialTagName {fg = hsl(blue)}, + htmlSpecialChar {fg = hsl(red)}, + htmlLink {fg = hsl(fg4), gui = styles.underline}, + htmlBold {fg = hsl(fg1), gui = styles.bold}, + htmlBoldUnderline {fg = hsl(fg1), gui = styles.bold .. "," .. styles.underline}, + htmlBoldItalic {fg = hsl(fg1), gui = styles.bold .. "," .. styles.italic}, + htmlBoldUnderlineItalic { + fg = hsl(fg1), + gui = styles.bold .. "," .. styles.underline .. "," .. styles.italic, + }, + htmlItalic {fg = hsl(fg1), gui = styles.italic}, + + -- special diffs + diffAdded {fg = hsl(green)}, + diffRemoved {fg = hsl(red)}, + diffChanged {fg = hsl(aqua)}, + diffFile {fg = hsl(orange)}, + diffNewFile {fg = hsl(yellow)}, + diffLine {fg = hsl(blue)}, + + -- css + cssBraces {fg = hsl(blue)}, + cssFunctionName {fg = hsl(yellow)}, + cssIdentifier {fg = hsl(orange)}, + cssClassName {fg = hsl(green)}, + cssColor {fg = hsl(blue)}, + cssSelectorOp {fg = hsl(blue)}, + cssSelectorOp2 {fg = hsl(blue)}, + cssImportant {fg = hsl(green)}, + cssVendor {fg = hsl(fg1)}, + cssTextProp {fg = hsl(aqua)}, + cssAnimationProp {fg = hsl(aqua)}, + cssUIProp {fg = hsl(yellow)}, + cssTransformProp {fg = hsl(aqua)}, + cssTransitionProp {fg = hsl(aqua)}, + cssPrintProp {fg = hsl(aqua)}, + cssPositioningProp {fg = hsl(yellow)}, + cssBoxProp {fg = hsl(aqua)}, + cssFontDescriptorProp {fg = hsl(aqua)}, + cssFlexibleBoxProp {fg = hsl(aqua)}, + cssBorderOutlineProp {fg = hsl(aqua)}, + cssBackgroundProp {fg = hsl(aqua)}, + cssMarginProp {fg = hsl(aqua)}, + cssListProp {fg = hsl(aqua)}, + cssTableProp {fg = hsl(aqua)}, + cssFontProp {fg = hsl(aqua)}, + cssPaddingProp {fg = hsl(aqua)}, + cssDimensionProp {fg = hsl(aqua)}, + cssRenderProp {fg = hsl(aqua)}, + cssColorProp {fg = hsl(aqua)}, + cssGeneratedContentProp {fg = hsl(aqua)}, + + -- js + javaScriptBraces {fg = hsl(fg1)}, + javaScriptFunction {fg = hsl(aqua)}, + javaScriptIdentifier {fg = hsl(red)}, + javaScriptMember {fg = hsl(blue)}, + javaScriptNumber {fg = hsl(purple)}, + javaScriptNull {fg = hsl(purple)}, + javaScriptParens {fg = hsl(fg3)}, + javascriptImport {fg = hsl(aqua)}, + javascriptExport {fg = hsl(aqua)}, + javascriptClassKeyword {fg = hsl(aqua)}, + javascriptClassExtends {fg = hsl(aqua)}, + javascriptDefault {fg = hsl(aqua)}, + javascriptClassName {fg = hsl(yellow)}, + javascriptClassSuperName {fg = hsl(yellow)}, + javascriptGlobal {fg = hsl(yellow)}, + javascriptEndColons {fg = hsl(fg1)}, + javascriptFuncArg {fg = hsl(fg1)}, + javascriptGlobalMethod {fg = hsl(fg1)}, + javascriptNodeGlobal {fg = hsl(fg1)}, + javascriptBOMWindowProp {fg = hsl(fg1)}, + javascriptArrayMethod {fg = hsl(fg1)}, + javascriptArrayStaticMethod {fg = hsl(fg1)}, + javascriptCacheMethod {fg = hsl(fg1)}, + javascriptDateMethod {fg = hsl(fg1)}, + javascriptMathStaticMethod {fg = hsl(fg1)}, + javascriptProp {fg = hsl(fg1)}, + javascriptURLUtilsProp {fg = hsl(fg1)}, + javascriptBOMNavigatorProp {fg = hsl(fg1)}, + javascriptDOMDocMethod {fg = hsl(fg1)}, + javascriptDOMDocProp {fg = hsl(fg1)}, + javascriptBOMLocationMethod {fg = hsl(fg1)}, + javascriptBOMWindowMethod {fg = hsl(fg1)}, + javascriptStringMethod {fg = hsl(fg1)}, + javascriptVariable {fg = hsl(orange)}, + javascriptClassSuper {fg = hsl(orange)}, + javascriptFuncKeyword {fg = hsl(aqua)}, + javascriptAsyncFunc {fg = hsl(aqua)}, + javascriptClassStatic {fg = hsl(orange)}, + javascriptOperator {fg = hsl(red)}, + javascriptForOperator {fg = hsl(red)}, + javascriptYield {fg = hsl(red)}, + javascriptExceptions {fg = hsl(red)}, + javascriptMessage {fg = hsl(red)}, + javascriptTemplateSB {fg = hsl(aqua)}, + javascriptTemplateSubstitution {fg = hsl(fg1)}, + javascriptLabel {fg = hsl(fg1)}, + javascriptObjectLabel {fg = hsl(fg1)}, + javascriptPropertyName {fg = hsl(fg1)}, + javascriptLogicSymbols {fg = hsl(fg1)}, + javascriptArrowFunc {fg = hsl(yellow)}, + javascriptDocParamName {fg = hsl(fg4)}, + javascriptDocTags {fg = hsl(fg4)}, + javascriptDocNotation {fg = hsl(fg4)}, + javascriptDocParamType {fg = hsl(fg4)}, + javascriptDocNamedParamType {fg = hsl(fg4)}, + javascriptBrackets {fg = hsl(fg1)}, + javascriptDOMElemAttrs {fg = hsl(fg1)}, + javascriptDOMEventMethod {fg = hsl(fg1)}, + javascriptDOMNodeMethod {fg = hsl(fg1)}, + javascriptDOMStorageMethod {fg = hsl(fg1)}, + javascriptHeadersMethod {fg = hsl(fg1)}, + javascriptAsyncFuncKeyword {fg = hsl(red)}, + javascriptAwaitFuncKeyword {fg = hsl(red)}, + jsClassKeyword {fg = hsl(aqua)}, + jsExtendsKeyword {fg = hsl(aqua)}, + jsExportDefault {fg = hsl(aqua)}, + jsTemplateBraces {fg = hsl(aqua)}, + jsGlobalNodeObjects {fg = hsl(blue)}, + jsGlobalObjects {fg = hsl(blue)}, + jsObjectKey {fg = hsl(green), gui = styles.bold}, + jsFunction {fg = hsl(aqua)}, + jsFuncCall {fg = hsl(blue)}, + jsFuncParens {fg = hsl(fg3)}, + jsParens {fg = hsl(fg3)}, + jsNull {fg = hsl(purple)}, + jsUndefined {fg = hsl(purple)}, + jsClassDefinition {fg = hsl(yellow)}, + jsOperatorKeyword {fg = hsl(red)}, + + -- typescript + typescriptReserved {fg = hsl(aqua)}, + typescriptLabel {fg = hsl(aqua)}, + typescriptFuncKeyword {fg = hsl(aqua)}, + typescriptIdentifier {fg = hsl(orange)}, + typescriptBraces {fg = hsl(fg1)}, + typescriptEndColons {fg = hsl(fg1)}, + typescriptDOMObjects {fg = hsl(fg1)}, + typescriptAjaxMethods {fg = hsl(fg1)}, + typescriptLogicSymbols {fg = hsl(fg1)}, + typescriptDocSeeTag {SpecialComment}, + typescriptDocParam {SpecialComment}, + typescriptDocTags {SpecialComment}, + typescriptGlobalObjects {fg = hsl(fg1)}, + typescriptParens {fg = hsl(fg3)}, + typescriptOpSymbols {fg = hsl(fg3)}, + typescriptHtmlElemProperties {fg = hsl(fg1)}, + typescriptNull {fg = hsl(purple)}, + typescriptInterpolationDelimiter {fg = hsl(aqua)}, + + -- jsx + jsxTagName {fg = hsl(aqua)}, + jsxComponentName {fg = hsl(green)}, + jsxCloseString {fg = hsl(fg4)}, + jsxAttrib {fg = hsl(yellow)}, + jsxEqual {fg = hsl(aqua)}, + + -- purescript + purescriptModuleKeyword {fg = hsl(aqua)}, + purescriptModuleName {fg = hsl(fg1)}, + purescriptWhere {fg = hsl(aqua)}, + purescriptDelimiter {fg = hsl(fg4)}, + purescriptType {fg = hsl(fg1)}, + purescriptImportKeyword {fg = hsl(aqua)}, + purescriptHidingKeyword {fg = hsl(aqua)}, + purescriptAsKeyword {fg = hsl(aqua)}, + purescriptStructure {fg = hsl(aqua)}, + purescriptOperator {fg = hsl(blue)}, + purescriptTypeVar {fg = hsl(fg1)}, + purescriptConstructor {fg = hsl(fg1)}, + purescriptFunction {fg = hsl(fg1)}, + purescriptConditional {fg = hsl(orange)}, + purescriptBacktick {fg = hsl(orange)}, + + -- coffeescript + coffeeExtendedOp {fg = hsl(fg3)}, + coffeeSpecialOp {fg = hsl(fg3)}, + coffeeCurly {fg = hsl(orange)}, + coffeeParen {fg = hsl(fg3)}, + coffeeBracket {fg = hsl(orange)}, + + -- ruby + rubyStringDelimiter {fg = hsl(green)}, + rubyInterpolationDelimiter {fg = hsl(aqua)}, + + -- obj-c + objcTypeModifier {fg = hsl(red)}, + objcDirective {fg = hsl(blue)}, + + -- moonscript + moonSpecialOp {fg = hsl(fg3)}, + moonExtendedOp {fg = hsl(fg3)}, + moonFunction {fg = hsl(fg3)}, + moonObject {fg = hsl(yellow)}, + + -- elixir + elixirDocString {SpecialComment}, + elixirStringDelimiter {fg = hsl(green)}, + elixirInterpolationDelimiter {fg = hsl(aqua)}, + elixirModuleDeclaration {fg = hsl(yellow)}, + + -- scala + scalaNameDefinition {fg = hsl(fg1)}, + scalaCaseFollowing {fg = hsl(fg1)}, + scalaCapitalWord {fg = hsl(fg1)}, + scalaTypeExtension {fg = hsl(fg1)}, + scalaKeyword {fg = hsl(red)}, + scalaKeywordModifier {fg = hsl(red)}, + scalaSpecial {fg = hsl(aqua)}, + scalaOperator {fg = hsl(fg1)}, + scalaTypeDeclaration {fg = hsl(yellow)}, + scalaTypeTypePostDeclaration {fg = hsl(yellow)}, + scalaInstanceDeclaration {fg = hsl(fg1)}, + scalaInterpolation {fg = hsl(aqua)}, + + -- markdown + markdownItalic {fg = hsl(fg3), gui = styles.italic}, + markdownH1 {fg = hsl(green), gui = styles.bold}, + markdownH2 {markdownH1}, + markdownH3 {fg = hsl(yellow), gui = styles.bold}, + markdownH4 {markdownH3}, + markdownH5 {fg = hsl(yellow)}, + markdownH6 {markdownH5}, + markdownCode {fg = hsl(aqua)}, + markdownCodeBlock {fg = hsl(aqua)}, + markdownCodeDelimiter {fg = hsl(aqua)}, + markdownBlockquote {fg = hsl(gray)}, + markdownListMarker {fg = hsl(gray)}, + markdownOrderedListMarker {fg = hsl(gray)}, + markdownRule {fg = hsl(gray)}, + markdownHeadingRule {fg = hsl(gray)}, + markdownUrlDelimiter {fg = hsl(fg3)}, + markdownLinkDelimiter {fg = hsl(fg3)}, + markdownLinkTextDelimiter {fg = hsl(fg3)}, + markdownHeadingDelimiter {fg = hsl(orange)}, + markdownUrl {fg = hsl(purple)}, + markdownUrlTitleDelimiter {fg = hsl(green)}, + markdownLinkText {fg = hsl(gray), gui = styles.underline}, + markdownIdDeclaration {markdownLinkText}, + + -- haskell + haskellType {fg = hsl(blue)}, + haskellIdentifier {fg = hsl(aqua)}, + haskellSeparator {fg = hsl(fg4)}, + haskellDelimiter {fg = hsl(orange)}, + haskellOperators {fg = hsl(purple)}, + haskellBacktick {fg = hsl(orange)}, + haskellStatement {fg = hsl(purple)}, + haskellConditional {fg = hsl(purple)}, + haskellLet {fg = hsl(red)}, + haskellDefault {fg = hsl(red)}, + haskellWhere {fg = hsl(red)}, + haskellBottom {fg = hsl(red), gui = styles.bold}, + haskellImportKeywords {fg = hsl(purple), gui = styles.bold}, + haskellDeclKeyword {fg = hsl(orange)}, + haskellDecl {fg = hsl(orange)}, + haskellDeriving {fg = hsl(purple)}, + haskellAssocType {fg = hsl(aqua)}, + haskellNumber {fg = hsl(aqua)}, + haskellPragma {fg = hsl(red), gui = styles.bold}, + haskellTH {fg = hsl(aqua), gui = styles.bold}, + haskellForeignKeywords {fg = hsl(green)}, + haskellKeyword {fg = hsl(red)}, + haskellFloat {fg = hsl(aqua)}, + haskellInfix {fg = hsl(purple)}, + haskellQuote {fg = hsl(green), gui = styles.bold}, + haskellShebang {fg = hsl(yellow), gui = styles.bold}, + haskellLiquid {fg = hsl(purple), gui = styles.bold}, + haskellQuasiQuoted {fg = hsl(blue), gui = styles.bold}, + haskellRecursiveDo {fg = hsl(purple)}, + haskellQuotedType {fg = hsl(red)}, + haskellPreProc {fg = hsl(fg4)}, + haskellTypeRoles {fg = hsl(red), gui = styles.bold}, + haskellTypeForall {fg = hsl(red)}, + haskellPatternKeyword {fg = hsl(blue)}, + + -- json + jsonKeyword {fg = hsl(green)}, + jsonQuote {fg = hsl(green)}, + jsonBraces {fg = hsl(fg1)}, + jsonString {fg = hsl(fg1)}, + + -- mail.vim + mailQuoted1 {fg = hsl(aqua)}, + mailQuoted2 {fg = hsl(purple)}, + mailQuoted3 {fg = hsl(yellow)}, + mailQuoted4 {fg = hsl(green)}, + mailQuoted5 {fg = hsl(red)}, + mailQuoted6 {fg = hsl(orange)}, + mailSignature {SpecialComment}, + + -- csharp + csBraces {fg = hsl(fg1)}, + csEndColon {fg = hsl(fg1)}, + csLogicSymbols {fg = hsl(fg1)}, + csParens {fg = hsl(fg3)}, + csOpSymbols {fg = hsl(fg3)}, + csInterpolationDelimiter {fg = hsl(fg3)}, + csInterpolationAlignDel {fg = hsl(aqua), gui = styles.bold}, + csInterpolationFormat {fg = hsl(aqua)}, + csInterpolationFormatDel {fg = hsl(aqua), gui = styles.bold}, + + -- rust + rustSigil {fg = hsl(orange)}, + rustEscape {fg = hsl(aqua)}, + rustStringContinuation {fg = hsl(aqua)}, + rustEnum {fg = hsl(aqua)}, + rustStructure {fg = hsl(aqua)}, + rustModPathSep {fg = hsl(fg2)}, + rustCommentLineDoc {SpecialComment}, + rustDefault {fg = hsl(aqua)}, + + -- ocaml + ocamlOperator {fg = hsl(fg1)}, + ocamlKeyChar {fg = hsl(orange)}, + ocamlArrow {fg = hsl(orange)}, + ocamlInfixOpKeyword {fg = hsl(red)}, + ocamlConstructor {fg = hsl(orange)}, + + -- coc.nvim + CocErrorSign {fg = hsl(red), bg = hsl(sign_column)}, + CocWarningSign {fg = hsl(orange), bg = hsl(sign_column)}, + CocInfoSign {fg = hsl(blue), bg = hsl(sign_column)}, + CocHintSign {fg = hsl(aqua), bg = hsl(sign_column)}, + CocErrorFloat {fg = hsl(red)}, + CocWarningFloat {fg = hsl(orange)}, + CocInfoFloat {fg = hsl(blue)}, + CocHintFloat {fg = hsl(aqua)}, + CocDiagnosticsError {fg = hsl(red)}, + CocDiagnosticsWarning {fg = hsl(orange)}, + CocDiagnosticsInfo {fg = hsl(blue)}, + CocDiagnosticsHint {fg = hsl(aqua)}, + CocSelectedText {fg = hsl(red)}, + CocCodeLens {fg = hsl(gray)}, + CocErrorHighlight {fg = hsl(red), gui = styles.underline}, + CocWarningHighlight {fg = hsl(orange), gui = styles.underline}, + CocInfoHighlight {fg = hsl(blue), gui = styles.underline}, + CocHintHighlight {fg = hsl(aqua), gui = styles.underline}, + + -- nerdtree + NERDTreeDir {fg = hsl(aqua)}, + NERDTreeDirSlash {fg = hsl(aqua)}, + NERDTreeOpenable {fg = hsl(orange)}, + NERDTreeClosable {fg = hsl(orange)}, + NERDTreeFile {fg = hsl(fg1)}, + NERDTreeExecFile {fg = hsl(yellow)}, + NERDTreeUp {fg = hsl(gray)}, + NERDTreeCWD {fg = hsl(green)}, + NERDTreeHelp {fg = hsl(fg1)}, + NERDTreeToggleOn {fg = hsl(green)}, + NERDTreeToggleOff {fg = hsl(red)}, + + -- vim dirvish + DirvishPathTail {fg = hsl(aqua)}, + DirvishArg {fg = hsl(yellow)}, + + -- ale.vim + ALEError {fg = hsl(red), gui = styles.underline}, + ALEWarning {fg = hsl(yellow), gui = styles.underline}, + ALEInfo {fg = hsl(blue), gui = styles.underline}, + ALEErrorSign {fg = hsl(red), bg = hsl(sign_column)}, + ALEWarningSign {fg = hsl(yellow), bg = hsl(sign_column)}, + ALEInfoSign {fg = hsl(blue), bg = hsl(sign_column)}, + ALEVirtualTextError {fg = hsl(red)}, + ALEVirtualTextWarning {fg = hsl(yellow)}, + ALEVirtualTextInfo {fg = hsl(blue)}, + + -- BufTabLine + BufTabLineCurrent {fg = hsl(bg0), bg = hsl(fg4)}, + BufTabLineActive {fg = hsl(fg4), bg = hsl(bg2)}, + BufTabLineHidden {fg = hsl(bg4), bg = hsl(bg1)}, + BufTabLineFill {fg = hsl(bg0), bg = hsl(bg0)}, + + -- fzf + Fzf1 {fg = hsl(blue), bg = hsl(bg1)}, + Fzf2 {fg = hsl(orange), bg = hsl(bg1)}, + Fzf3 {fg = hsl(fg4), bg = hsl(bg1)}, + + -- ctrlP + CtrlPMatch {fg = hsl(yellow)}, + CtrlPNoEntries {fg = hsl(red)}, + CtrlPPrtBase {fg = hsl(bg2)}, + CtrlPPrtCursor {fg = hsl(blue)}, + CtrlPLinePre {fg = hsl(bg2)}, + CtrlPMode1 {fg = hsl(blue), bg = hsl(bg2), gui = styles.bold}, + CtrlPMode2 {fg = hsl(bg0), bg = hsl(blue), gui = styles.bold}, + CtrlPStats {fg = hsl(fg4), bg = hsl(bg2), gui = styles.bold}, + + -- showmarks + ShowMarksHLl {fg = hsl(blue), bg = hsl(sign_column)}, + ShowMarksHLu {fg = hsl(blue), bg = hsl(sign_column)}, + ShowMarksHLo {fg = hsl(blue), bg = hsl(sign_column)}, + ShowMarksHLm {fg = hsl(blue), bg = hsl(sign_column)}, + + -- signature + SignatureMarkText {fg = hsl(blue), bg = hsl(sign_column)}, + SignatureMarkerText {fg = hsl(purple), bg = hsl(sign_column)}, + + -- gitgutter + GitGutterAdd {fg = hsl(green), bg = hsl(sign_column)}, + GitGutterChange {fg = hsl(aqua), bg = hsl(sign_column)}, + GitGutterDelete {fg = hsl(red), bg = hsl(sign_column)}, + GitGutterChangeDelete {fg = hsl(aqua), bg = hsl(sign_column)}, + + -- gitcommit + gitcommitSelectedFile {fg = hsl(green)}, + gitcommitDiscardedFile {fg = hsl(red)}, + } +end) + +return theme |
