From 99a54b75800b836fe38ac298751c9f0dc44abd5b Mon Sep 17 00:00:00 2001 From: montreal Date: Fri, 20 Feb 2026 12:34:46 +0100 Subject: [PATCH] Added theme --- lua/montreal/init.lua | 945 +++++++++++++++++++++++ lua/montreal/lualine/themes/montreal.lua | 54 ++ 2 files changed, 999 insertions(+) create mode 100644 lua/montreal/init.lua create mode 100644 lua/montreal/lualine/themes/montreal.lua diff --git a/lua/montreal/init.lua b/lua/montreal/init.lua new file mode 100644 index 0000000..6e9f718 --- /dev/null +++ b/lua/montreal/init.lua @@ -0,0 +1,945 @@ +-- settings based on: https://github.com/navarasu/onedark.nvim +local vim = vim -- assign global "vim" to prevent a lot of warnings + +vim.o.termguicolors = true +vim.g.colors_name = "montreal" + +-- CONFIGURATION +local transparent = true; -- whether to use a transparent background +local ending_tildes = false -- whether to show tildes (~) at the end of a buffer +-- possible font_style_* values: "none" or a comma separated combination of :h highlight-args +local font_style_comments = "italic" +local font_style_keywords = "none" +local font_style_functions = "none" +local font_style_strings = "none" +local font_style_variables = "none" +local invert_item_kind_icon_highlights_in_cmp_menu = false + +-- COLORS +local none = "none" +local bg_darker = "#101018" +local bg_dark = "#1D1D2B" +local bg_normal = "#29293D" +local bg_light = "#353550" +local fg_darker = "#7575A3" +local fg_dark = "#A3A3C2" +local fg_normal = "#D1D1E0" +local fg_light = "#FFFFFF" + +local red = "#FF5555" +local orange = "#FF8822" +local yellow = "#FFBB00" +local green = "#44BB44" +local cyan = "#44BBFF" +local blue = "#0099FF" +local violet = "#7788FF" +local purple = "#BB88FF" + +local red_dark = "#DD2222" +--local orange_dark = "#CC4400" +local yellow_dark = "#AA6600" +local green_dark = "#228822" +local cyan_dark = "#334455" +local blue_dark = "#0066FF" +--local purple_dark = "#8855DD" + +-- TERMINAL (darker shades) +vim.g.terminal_color_0 = fg_darker +vim.g.terminal_color_1 = red +vim.g.terminal_color_2 = violet +vim.g.terminal_color_3 = yellow +vim.g.terminal_color_4 = blue +vim.g.terminal_color_5 = purple +vim.g.terminal_color_6 = green +vim.g.terminal_color_7 = cyan +-- (lighter shades) +vim.g.terminal_color_8 = fg_darker +vim.g.terminal_color_9 = red +vim.g.terminal_color_10 = violet +vim.g.terminal_color_11 = yellow +vim.g.terminal_color_12 = blue +vim.g.terminal_color_13 = purple +vim.g.terminal_color_14 = green +vim.g.terminal_color_15 = cyan + +-- HELPER FUNCTION TO SET HIGHLIGHT GROUPS +local function set_highlight_groups(highlight_groups) + for group_name, group_values in pairs(highlight_groups) do + vim.api.nvim_command(string.format("highlight %s guifg=%s guibg=%s guisp=%s gui=%s", group_name, + group_values.fg or "none", + group_values.bg or "none", + group_values.sp or "none", + group_values.fmt or "none")) + end +end + +-- COMMON HIGHLIGHTS +local common_highlights = { + Normal = { fg = fg_normal, bg = transparent and none or bg_normal }, + Terminal = { fg = fg_normal, bg = transparent and none or bg_normal }, + EndOfBuffer = { fg = ending_tildes and bg_light or bg_normal, bg = transparent and none or bg_normal }, + FoldColumn = { fg = fg_normal, bg = transparent and none or bg_normal }, + Folded = { fg = fg_normal, bg = transparent and none or bg_normal }, + SignColumn = { fg = fg_normal, bg = transparent and none or bg_normal }, + ToolbarLine = { fg = fg_normal }, + Cursor = { fmt = "reverse" }, + vCursor = { fmt = "reverse" }, + iCursor = { fmt = "reverse" }, + lCursor = { fmt = "reverse" }, + CursorIM = { fmt = "reverse" }, + CursorColumn = { bg = bg_normal }, + CursorLine = { bg = bg_light }, + ColorColumn = { bg = bg_normal }, + CursorLineNr = { fg = fg_normal }, + LineNr = { fg = fg_darker }, + Conceal = { fg = fg_dark, bg = bg_normal }, + DiffAdd = { fg = none, bg = green_dark }, + DiffChange = { fg = none, bg = yellow_dark }, + DiffDelete = { fg = none, bg = red_dark }, + DiffText = { fg = none, bg = blue_dark }, + DiffAdded = { fg = green }, + DiffRemoved = { fg = red }, + DiffFile = { fg = cyan }, + DiffIndexLine = { fg = fg_dark }, + Directory = { fg = fg_dark }, + ErrorMsg = { fg = red, fmt = "bold" }, + WarningMsg = { fg = yellow, fmt = "bold" }, + MoreMsg = { fg = blue, fmt = "bold" }, + CurSearch = { fg = bg_dark, bg = green }, + IncSearch = { fg = bg_dark, bg = green }, + Search = { fg = bg_dark, bg = green_dark }, + Substitute = { fg = bg_dark, bg = green }, + MatchParen = { fg = none, fmt = "underline" }, + NonText = { fg = fg_dark }, + Whitespace = { fg = fg_dark }, + SpecialKey = { fg = fg_dark }, + Pmenu = { fg = fg_dark, bg = bg_dark }, + PmenuSbar = { bg = bg_dark }, -- scroll bar rail + PmenuThumb = { bg = bg_light }, -- scroll bar + PmenuSel = { fg = fg_light, bg = bg_light }, + PmenuMatch = { fg = blue }, + PmenuMatchSel = { fg = violet }, + WildMenu = { fg = bg_dark, bg = blue }, + Question = { fg = yellow }, + SpellBad = { fg = none, fmt = "undercurl", sp = red }, + SpellCap = { fg = none, fmt = "undercurl", sp = yellow }, + SpellLocal = { fg = none, fmt = "undercurl", sp = blue }, + SpellRare = { fg = none, fmt = "undercurl", sp = purple }, + StatusLine = { fg = fg_normal, bg = bg_light }, + StatusLineTerm = { fg = fg_normal, bg = bg_light }, + StatusLineNC = { fg = fg_dark, bg = bg_normal }, + StatusLineTermNC = { fg = fg_dark, bg = bg_normal }, + TabLine = { fg = fg_normal, bg = bg_normal }, + TabLineFill = { fg = fg_darker, bg = bg_dark }, + TabLineSel = { fg = bg_dark, bg = fg_normal }, + VertSplit = { fg = bg_normal }, + Visual = { fg = none, bg = cyan_dark }, + VisualNOS = { fg = none, bg = green, fmt = "underline" }, + QuickFixLine = { fg = blue, fmt = "underline" }, + Debug = { fg = yellow }, + debugPC = { fg = bg_dark, bg = green }, + debugBreakpoint = { fg = bg_dark, bg = red }, + ToolbarButton = { fg = bg_dark, bg = blue_dark }, + FloatBorder = { fg = fg_dark, bg = bg_normal }, + NormalFloat = { fg = fg_normal, bg = bg_normal }, +} +set_highlight_groups(common_highlights) + +-- SYNTAX HIGHLIGHTS +local syntax_highlights = { + String = { fg = orange, fmt = font_style_strings }, + Character = { fg = green }, + Number = { fg = green }, + Float = { fg = green }, + Boolean = { fg = green }, + Type = { fg = violet }, + Structure = { fg = blue }, + StorageClass = { fg = blue }, + Identifier = { fg = red, fmt = font_style_variables }, + Constant = { fg = green }, + PreProc = { fg = purple }, + PreCondit = { fg = purple }, + Include = { fg = purple }, + Keyword = { fg = purple, fmt = font_style_keywords }, + Define = { fg = purple }, + Typedef = { fg = purple }, + Exception = { fg = purple }, + Conditional = { fg = purple, fmt = font_style_keywords }, + Repeat = { fg = purple, fmt = font_style_keywords }, + Statement = { fg = purple }, + Macro = { fg = red }, + Error = { fg = red }, + Label = { fg = purple }, + Special = { fg = red }, + SpecialChar = { fg = red }, + Function = { fg = yellow, fmt = font_style_functions }, + Operator = { fg = purple }, + Title = { fg = fg_normal, fmt = "bold" }, + Tag = { fg = green }, + Delimiter = { fg = fg_dark }, + Comment = { fg = fg_darker, fmt = font_style_comments }, + SpecialComment = { fg = fg_darker, fmt = font_style_comments }, + Todo = { fg = bg_dark, bg = yellow, fmt = font_style_comments .. ",bold" }, +} +set_highlight_groups(syntax_highlights) + +-- TREESITTER HIGHLIGHTS +local treesitter_highlights +if vim.api.nvim_call_function("has", { "nvim-0.8" }) ~= 1 then + treesitter_highlights = { + TSAnnotation = { fg = fg_normal }, + TSAttribute = { fg = blue }, + TSBoolean = { fg = green }, + TSCharacter = { fg = green }, + TSComment = { fg = fg_darker, fmt = font_style_comments }, + TSConditional = { fg = purple, fmt = font_style_keywords }, + TSConstant = { fg = green }, + TSConstBuiltin = { fg = green }, + TSConstMacro = { fg = green }, + TSConstructor = { fg = violet }, + TSError = { fg = fg_normal }, + TSException = { fg = purple }, + TSField = { fg = blue }, + TSFloat = { fg = green }, + TSFunction = { fg = yellow, fmt = font_style_functions }, + TSFuncBuiltin = { fg = cyan, fmt = font_style_functions }, + TSFuncMacro = { fg = cyan, fmt = font_style_functions }, + TSInclude = { fg = purple }, + TSKeyword = { fg = purple, fmt = font_style_keywords }, + TSKeywordFunction = { fg = purple, fmt = font_style_functions }, + TSKeywordOperator = { fg = purple, fmt = font_style_keywords }, + TSLabel = { fg = red }, + TSMethod = { fg = yellow, fmt = font_style_functions }, + TSNamespace = { fg = yellow }, + TSNone = { fg = fg_normal }, + TSNumber = { fg = green }, + TSOperator = { fg = purple }, + TSParameter = { fg = blue }, + TSParameterReference = { fg = blue }, + TSProperty = { fg = blue }, + TSPunctDelimiter = { fg = fg_dark }, + TSPunctBracket = { fg = fg_dark }, + TSPunctSpecial = { fg = red }, + TSRepeat = { fg = purple, fmt = font_style_keywords }, + TSString = { fg = orange, fmt = font_style_strings }, + TSStringRegex = { fg = yellow, fmt = font_style_strings }, + TSStringEscape = { fg = red, fmt = font_style_strings }, + TSSymbol = { fg = cyan }, + TSTag = { fg = purple }, + TSTagDelimiter = { fg = purple }, + TSText = { fg = fg_normal }, + TSStrong = { fg = fg_normal, fmt = "bold" }, + TSEmphasis = { fg = fg_normal, fmt = "italic" }, + TSUnderline = { fg = fg_normal, fmt = "underline" }, + TSStrike = { fg = fg_normal, fmt = "strikethrough" }, + TSTitle = { fg = fg_normal, fmt = "bold" }, + TSLiteral = { fg = orange }, + TSURI = { fg = orange, fmt = "underline" }, + TSMath = { fg = fg_normal }, + TSTextReference = { fg = blue }, + TSEnvironment = { fg = fg_normal }, + TSEnvironmentName = { fg = fg_normal }, + TSNote = { fg = fg_normal }, + TSWarning = { fg = fg_normal }, + TSDanger = { fg = fg_normal }, + TSType = { fg = violet }, + TSTypeBuiltin = { fg = violet }, + TSVariable = { fg = fg_normal, fmt = font_style_variables }, + TSVariableBuiltin = { fg = red, fmt = font_style_variables }, + } +else + treesitter_highlights = { + ["@annotation"] = { fg = fg_normal }, + ["@attribute"] = { fg = blue }, + ["@attribute.typescript"] = { fg = blue }, + ["@boolean"] = { fg = green }, + ["@character"] = { fg = green }, + ["@comment"] = { fg = fg_darker, fmt = font_style_comments }, + ["@conditional"] = { fg = purple, fmt = font_style_keywords }, + ["@constant"] = { fg = green }, + ["@constant.builtin"] = { fg = green }, + ["@constant.macro"] = { fg = orange }, + ["@constructor"] = { fg = violet }, + ["@error"] = { fg = fg_normal }, + ["@exception"] = { fg = purple }, + ["@field"] = { fg = blue }, + ["@float"] = { fg = green }, + ["@function"] = { fg = yellow, fmt = font_style_functions }, + ["@function.builtin"] = { fg = cyan, fmt = font_style_functions }, + ["@function.macro"] = { fg = blue, fmt = font_style_functions }, + ["@include"] = { fg = purple }, + ["@keyword"] = { fg = purple, fmt = font_style_keywords }, + ["@keyword.function"] = { fg = purple, fmt = font_style_functions }, + ["@keyword.operator"] = { fg = purple, fmt = font_style_keywords }, + ["@label"] = { fg = purple }, + ["@method"] = { fg = yellow, fmt = font_style_functions }, + ["@namespace"] = { fg = yellow }, + ["@none"] = { fg = fg_normal }, + ["@number"] = { fg = green }, + ["@operator"] = { fg = purple }, + ["@parameter"] = { fg = blue }, + ["@parameter.reference"] = { fg = blue }, + ["@preproc"] = { fg = purple }, + ["@property"] = { fg = blue }, + ["@punctuation.delimiter"] = { fg = fg_dark }, + ["@punctuation.bracket"] = { fg = fg_dark }, + ["@punctuation.special"] = { fg = red }, + ["@repeat"] = { fg = purple, fmt = font_style_keywords }, + ["@string"] = { fg = orange, fmt = font_style_strings }, + ["@string.regex"] = { fg = yellow, fmt = font_style_strings }, + ["@string.escape"] = { fg = red, fmt = font_style_strings }, + ["@symbol"] = { fg = cyan }, + ["@tag"] = { fg = purple }, + ["@tag.attribute"] = { fg = blue }, + ["@tag.delimiter"] = { fg = fg_dark }, + ["@text"] = { fg = fg_normal }, + ["@text.strong"] = { fg = fg_normal, fmt = "bold" }, + ["@text.emphasis"] = { fg = fg_normal, fmt = "italic" }, + ["@text.underline"] = { fg = fg_normal, fmt = "underline" }, + ["@text.strike"] = { fg = fg_normal, fmt = "strikethrough" }, + ["@text.title"] = { fg = fg_normal, fmt = "bold" }, + ["@text.literal"] = { fg = orange }, + ["@text.uri"] = { fg = orange, fmt = "underline" }, + ["@text.todo"] = { fg = bg_dark, bg = yellow, fmt = font_style_comments .. ",bold" }, + ["@text.math"] = { fg = fg_normal }, + ["@text.reference"] = { fg = blue }, + ["@text.environment"] = { fg = fg_normal }, + ["@text.environment.name"] = { fg = fg_normal }, + ["@text.diff.add"] = { fg = green }, + ["@text.diff.delete"] = { fg = red }, + ["@note"] = { fg = fg_normal }, + ["@warning"] = { fg = fg_normal }, + ["@danger"] = { fg = fg_normal }, + ["@type"] = { fg = violet }, + ["@type.builtin"] = { fg = violet }, + ["@variable"] = { fg = fg_normal, fmt = font_style_variables }, + ["@variable.builtin"] = { fg = red, fmt = font_style_variables }, + } +end +set_highlight_groups(treesitter_highlights) + +-- LSP HIGHLIGHTS +if vim.api.nvim_call_function("has", { "nvim-0.9" }) == 1 then + local lsp_highlights = { + ["@lsp.type.comment"] = treesitter_highlights["@comment"], + ["@lsp.type.enum"] = treesitter_highlights["@type"], + ["@lsp.type.enumMember"] = treesitter_highlights["@constant.builtin"], + ["@lsp.type.interface"] = treesitter_highlights["@type"], + ["@lsp.type.typeParameter"] = treesitter_highlights["@type"], + ["@lsp.type.keyword"] = treesitter_highlights["@keyword"], + ["@lsp.type.namespace"] = treesitter_highlights["@namespace"], + ["@lsp.type.parameter"] = treesitter_highlights["@parameter"], + ["@lsp.type.property"] = treesitter_highlights["@property"], + ["@lsp.type.variable"] = treesitter_highlights["@variable"], + ["@lsp.type.macro"] = treesitter_highlights["@function.macro"], + ["@lsp.type.method"] = treesitter_highlights["@method"], + ["@lsp.type.number"] = treesitter_highlights["@number"], + ["@lsp.type.generic"] = treesitter_highlights["@text"], + ["@lsp.type.builtinType"] = treesitter_highlights["@type.builtin"], + ["@lsp.typemod.method.defaultLibrary"] = treesitter_highlights["@function"], + ["@lsp.typemod.function.defaultLibrary"] = treesitter_highlights["@function"], + ["@lsp.typemod.operator.injected"] = treesitter_highlights["@operator"], + ["@lsp.typemod.string.injected"] = treesitter_highlights["@string"], + ["@lsp.typemod.variable.defaultLibrary"] = treesitter_highlights["@variable.builtin"], + ["@lsp.typemod.variable.injected"] = treesitter_highlights["@variable"], + ["@lsp.typemod.variable.static"] = treesitter_highlights["@constant"], + } + set_highlight_groups(lsp_highlights) +end + +-- LANGUAGE HIGHLIGHTS +local c_language_highlights = { + cInclude = { fg = blue }, + cStorageClass = { fg = purple }, + cTypedef = { fg = purple }, + cDefine = { fg = cyan }, + cTSInclude = { fg = blue }, + cTSConstant = { fg = green }, + cTSConstMacro = { fg = purple }, + cTSOperator = { fg = purple }, +} +set_highlight_groups(c_language_highlights) + +local cpp_language_highlights = { + cppStatement = { fg = purple, fmt = "bold" }, + cppTSInclude = { fg = blue }, + cppTSConstant = { fg = green }, + cppTSConstMacro = { fg = purple }, + cppTSOperator = { fg = purple }, +} +set_highlight_groups(cpp_language_highlights) + +local markdown_language_highlights = { + markdownBlockquote = { fg = fg_dark }, + markdownBold = { fg = none, fmt = "bold" }, + markdownBoldDelimiter = { fg = fg_dark }, + markdownCode = { fg = green }, + markdownCodeBlock = { fg = green }, + markdownCodeDelimiter = { fg = yellow }, + markdownH1 = { fg = red, fmt = "bold" }, + markdownH2 = { fg = purple, fmt = "bold" }, + markdownH3 = { fg = orange, fmt = "bold" }, + markdownH4 = { fg = red, fmt = "bold" }, + markdownH5 = { fg = purple, fmt = "bold" }, + markdownH6 = { fg = orange, fmt = "bold" }, + markdownHeadingDelimiter = { fg = fg_dark }, + markdownHeadingRule = { fg = fg_dark }, + markdownId = { fg = yellow }, + markdownIdDeclaration = { fg = red }, + markdownItalic = { fg = none, fmt = "italic" }, + markdownItalicDelimiter = { fg = fg_dark, fmt = "italic" }, + markdownLinkDelimiter = { fg = fg_dark }, + markdownLinkText = { fg = red }, + markdownLinkTextDelimiter = { fg = fg_dark }, + markdownListMarker = { fg = red }, + markdownOrderedListMarker = { fg = red }, + markdownRule = { fg = purple }, + markdownUrl = { fg = blue, fmt = "underline" }, + markdownUrlDelimiter = { fg = fg_dark }, + markdownUrlTitleDelimiter = { fg = green } +} +set_highlight_groups(markdown_language_highlights) + +local php_language_highlights = { + phpFunctions = { fg = fg_normal, fmt = font_style_functions }, + phpMethods = { fg = cyan }, + phpStructure = { fg = purple }, + phpOperator = { fg = purple }, + phpMemberSelector = { fg = fg_normal }, + phpVarSelector = { fg = orange, fmt = font_style_variables }, + phpIdentifier = { fg = orange, fmt = font_style_variables }, + phpBoolean = { fg = cyan }, + phpNumber = { fg = orange }, + phpHereDoc = { fg = green }, + phpNowDoc = { fg = green }, + phpSCKeyword = { fg = purple, fmt = font_style_keywords }, + phpFCKeyword = { fg = purple, fmt = font_style_keywords }, + phpRegion = { fg = blue } +} +set_highlight_groups(php_language_highlights) + +local scala_language_highlights = { + scalaNameDefinition = { fg = fg_normal }, + scalaInterpolationBoundary = { fg = purple }, + scalaInterpolation = { fg = purple }, + scalaTypeOperator = { fg = red }, + scalaOperator = { fg = red }, + scalaKeywordModifier = { fg = red, fmt = font_style_keywords }, +} +set_highlight_groups(scala_language_highlights) + +local tex_language_highlights = { + latexTSInclude = { fg = blue }, + latexTSFuncMacro = { fg = fg_normal, fmt = font_style_functions }, + latexTSEnvironment = { fg = cyan, fmt = "bold" }, + latexTSEnvironmentName = { fg = yellow }, + texCmdEnv = { fg = cyan }, + texEnvArgName = { fg = yellow }, + latexTSTitle = { fg = green }, + latexTSType = { fg = violet }, + latexTSMath = { fg = orange }, + texMathZoneX = { fg = orange }, + texMathZoneXX = { fg = orange }, + texMathDelimZone = { fg = fg_light }, + texMathDelim = { fg = purple }, + texMathOper = { fg = red }, + texCmd = { fg = purple }, + texCmdPart = { fg = blue }, + texCmdPackage = { fg = blue }, + texPgfType = { fg = yellow }, +} +set_highlight_groups(tex_language_highlights) + +local vim_language_highlights = { + vimOption = { fg = red }, + vimSetEqual = { fg = yellow }, + vimMap = { fg = purple }, + vimMapModKey = { fg = orange }, + vimNotation = { fg = red }, + vimMapLhs = { fg = fg_normal }, + vimMapRhs = { fg = blue }, + vimVar = { fg = fg_normal, fmt = font_style_variables }, + vimCommentTitle = { fg = fg_light, fmt = font_style_comments }, +} +set_highlight_groups(vim_language_highlights) + +-- ICON PLUGIN HIGHLIGHTS +local item_kind_icon_colors = { + Default = purple, + Array = yellow, + Boolean = green, + Class = blue, + Color = green, + Constant = green, + Constructor = violet, + Enum = purple, + EnumMember = blue, + Event = yellow, + Field = blue, + File = blue, + Folder = orange, + Function = yellow, + Interface = blue, + Key = purple, + Keyword = purple, + Method = yellow, + Module = orange, + Namespace = red, + Null = fg_dark, + Number = green, + Object = red, + Operator = purple, + Package = yellow, + Property = blue, + Reference = orange, + Snippet = red, + String = orange, + Struct = blue, + Text = fg_light, + TypeParameter = red, + Unit = orange, + Value = green, + Variable = cyan, +} +local cmp_plugin_highlights = { + CmpItemAbbr = { fg = fg_normal }, + CmpItemAbbrDeprecated = { fg = fg_light, fmt = "strikethrough" }, + CmpItemAbbrMatch = { fg = cyan }, + CmpItemAbbrMatchFuzzy = { fg = cyan, fmt = "underline" }, + CmpItemMenu = { fg = fg_light }, + CmpItemKind = { fg = purple, fmt = invert_item_kind_icon_highlights_in_cmp_menu and "reverse" }, +} +local navic_plugin_highlights = { + NavicText = { fg = fg_normal }, + NavicSeparator = { fg = fg_light }, +} +local outline_plugin_highlights = { + FocusedSymbol = { fg = purple, bg = bg_light, fmt = "bold" }, + AerialLine = { fg = purple, bg = bg_light, fmt = "bold" }, +} +for kind, color in pairs(item_kind_icon_colors) do + cmp_plugin_highlights["CmpItemKind" .. kind] = { + fg = color, + fmt = invert_item_kind_icon_highlights_in_cmp_menu and + "reverse" + } + navic_plugin_highlights["NavicIcons" .. kind] = { fg = color } + outline_plugin_highlights["Aerial" .. kind .. "Icon"] = { fg = color } +end +set_highlight_groups(cmp_plugin_highlights) +set_highlight_groups(navic_plugin_highlights) +set_highlight_groups(outline_plugin_highlights) + +-- LSP PLUGIN HIGHLIGHTS +local lsp_plugin_highlights = { + LspCxxHlGroupEnumConstant = { fg = green }, + LspCxxHlGroupMemberVariable = { fg = orange }, + LspCxxHlGroupNamespace = { fg = blue }, + LspCxxHlSkippedRegion = { fg = fg_dark }, + LspCxxHlSkippedRegionBeginEnd = { fg = red }, + + DiagnosticError = { fg = red }, + DiagnosticHint = { fg = yellow }, + DiagnosticInfo = { fg = cyan }, + DiagnosticWarn = { fg = yellow }, + + DiagnosticVirtualTextError = { fg = red }, + DiagnosticVirtualTextWarn = { fg = yellow }, + DiagnosticVirtualTextInfo = { fg = cyan }, + DiagnosticVirtualTextHint = { fg = purple }, + + DiagnosticUnderlineError = { fmt = "undercurl", sp = red }, + DiagnosticUnderlineHint = { fmt = "undercurl", sp = purple }, + DiagnosticUnderlineInfo = { fmt = "undercurl", sp = blue }, + DiagnosticUnderlineWarn = { fmt = "undercurl", sp = yellow }, + + LspReferenceText = { bg = bg_light }, + LspReferenceWrite = { bg = bg_light }, + LspReferenceRead = { bg = bg_light }, + + LspCodeLens = { fg = fg_darker, fmt = font_style_comments }, + LspCodeLensSeparator = { fg = fg_dark }, +} +lsp_plugin_highlights.LspDiagnosticsDefaultError = lsp_plugin_highlights.DiagnosticError +lsp_plugin_highlights.LspDiagnosticsDefaultHint = lsp_plugin_highlights.DiagnosticHint +lsp_plugin_highlights.LspDiagnosticsDefaultInformation = lsp_plugin_highlights.DiagnosticInfo +lsp_plugin_highlights.LspDiagnosticsDefaultWarning = lsp_plugin_highlights.DiagnosticWarn +lsp_plugin_highlights.LspDiagnosticsUnderlineError = lsp_plugin_highlights.DiagnosticUnderlineError +lsp_plugin_highlights.LspDiagnosticsUnderlineHint = lsp_plugin_highlights.DiagnosticUnderlineHint +lsp_plugin_highlights.LspDiagnosticsUnderlineInformation = lsp_plugin_highlights.DiagnosticUnderlineInfo +lsp_plugin_highlights.LspDiagnosticsUnderlineWarning = lsp_plugin_highlights.DiagnosticUnderlineWarn +lsp_plugin_highlights.LspDiagnosticsVirtualTextError = lsp_plugin_highlights.DiagnosticVirtualTextError +lsp_plugin_highlights.LspDiagnosticsVirtualTextWarning = lsp_plugin_highlights.DiagnosticVirtualTextWarn +lsp_plugin_highlights.LspDiagnosticsVirtualTextInformation = lsp_plugin_highlights.DiagnosticVirtualTextInfo +lsp_plugin_highlights.LspDiagnosticsVirtualTextHint = lsp_plugin_highlights.DiagnosticVirtualTextHint +set_highlight_groups(lsp_plugin_highlights) + +-- PLUGIN HIGHLIGHTS +local ale_plugin_highlights = { + ALEErrorSign = lsp_plugin_highlights.DiagnosticError, + ALEInfoSign = lsp_plugin_highlights.DiagnosticInfo, + ALEWarningSign = lsp_plugin_highlights.DiagnosticWarn, +} +set_highlight_groups(ale_plugin_highlights) + +local bufferline_plugin_highlights = { + -- visible: the buffer is visible but not selected + -- selected: the buffer is selected + BufferLineFill = {}, + BufferLineBackground = { bg = bg_dark }, -- background of tabs with invisible and unselected buffers + BufferLineSeparator = { fg = bg_light, bg = bg_dark }, -- single character between tabs + + BufferLineBufferVisible = { fg = fg_normal, bg = bg_normal }, + BufferLineBufferSelected = { fg = fg_light, bg = bg_light, fmt = "bold" }, + + BufferLineDuplicate = { fg = fg_dark, bg = bg_dark }, + BufferLineDuplicateVisible = { fg = fg_normal, bg = bg_normal }, + BufferLineDuplicateSelected = { fg = fg_light, bg = bg_light, fmt = "bold" }, + + BufferLineIndicatorVisible = { bg = bg_normal }, -- single character preceding buffer + BufferLineIndicatorSelected = { bg = bg_light }, + + BufferLinePick = { fg = blue, bg = bg_dark, fmt = "bold" }, -- single character identifying a buffer when picking + BufferLinePickVisible = { fg = blue, bg = bg_normal, fmt = "bold" }, + BufferLinePickSelected = { fg = blue, bg = bg_light, fmt = "bold" }, + + BufferLineNumbers = { fg = fg_dark, bg = bg_dark }, + BufferLineNumbersVisible = { fg = fg_normal, bg = bg_dark }, + BufferLineNumbersSelected = { fg = fg_light, bg = bg_dark }, + + -- requires special code to work, see: + -- https://github.com/akinsho/bufferline.nvim/issues/884#issuecomment-2734464291 + BufferLineDevIcon = { fg = fg_dark, bg = bg_dark }, + BufferLineDevIconVisible = { fg = fg_normal, bg = bg_normal }, + BufferLineDevIconSelected = { fg = fg_light, bg = bg_light }, + + BufferLineModified = { fg = fg_dark, bg = bg_dark }, + BufferLineModifiedVisible = { fg = fg_normal, bg = bg_normal }, + BufferLineModifiedSelected = { fg = fg_light, bg = bg_light }, + + BufferLineCloseButton = { fg = fg_dark, bg = bg_dark }, + BufferLineCloseButtonVisible = { fg = fg_dark, bg = bg_normal }, + BufferLineCloseButtonSelected = { fg = fg_normal, bg = bg_light }, + + BufferLineHint = { fg = blue, bg = bg_dark }, + BufferLineHintVisible = { fg = blue, bg = bg_normal, fmt = "bold" }, + BufferLineHintSelected = { fg = blue, bg = bg_light, fmt = "bold" }, + BufferLineHintDiagnostic = { fg = blue, bg = bg_dark }, + BufferLineHintDiagnosticVisible = { fg = blue, bg = bg_normal, fmt = "bold" }, + BufferLineHintDiagnosticSelected = { fg = blue, bg = bg_light, fmt = "bold" }, + + BufferLineInfo = { fg = blue, bg = bg_dark }, + BufferLineInfoVisible = { fg = blue, bg = bg_normal, fmt = "bold" }, + BufferLineInfoSelected = { fg = blue, bg = bg_light, fmt = "bold" }, + BufferLineInfoDiagnostic = { fg = blue, bg = bg_dark }, + BufferLineInfoDiagnosticVisible = { fg = blue, bg = bg_normal, fmt = "bold" }, + BufferLineInfoDiagnosticSelected = { fg = blue, bg = bg_light, fmt = "bold" }, + + BufferLineWarning = { fg = yellow, bg = bg_dark }, + BufferLineWarningVisible = { fg = yellow, bg = bg_normal, fmt = "bold" }, + BufferLineWarningSelected = { fg = yellow, bg = bg_light, fmt = "bold" }, + BufferLineWarningDiagnostic = { fg = yellow, bg = bg_dark }, + BufferLineWarningDiagnosticVisible = { fg = yellow, bg = bg_normal, fmt = "bold" }, + BufferLineWarningDiagnosticSelected = { fg = yellow, bg = bg_light, fmt = "bold" }, + + BufferLineError = { fg = red, bg = bg_dark }, + BufferLineErrorVisible = { fg = red, bg = bg_normal, fmt = "bold" }, + BufferLineErrorSelected = { fg = red, bg = bg_light, fmt = "bold" }, + BufferLineErrorDiagnostic = { fg = red, bg = bg_dark }, + BufferLineErrorDiagnosticVisible = { fg = red, bg = bg_normal, fmt = "bold" }, + BufferLineErrorDiagnosticSelected = { fg = red, bg = bg_light, fmt = "bold" }, + + BufferLineTruncMarker = { fg = fg_normal }, -- the characters to show bufferline overflow to either side + BufferLineOffsetSeparator = { fg = fg_normal }, -- separator between the bufferline and offset windows + + -- BufferLineGroupLabel = {}, + -- BufferLineGroupSeparator = {}, + + -- BufferLineTab = {}, + -- BufferLineTabSelected = {}, + -- BufferLineTabClose = {}, + -- BufferLineTabSeparator = {}, + -- BufferLineTabSeparatorSelected = {}, +} +set_highlight_groups(bufferline_plugin_highlights) + +local barbar_plugin_highlights = { + BufferCurrent = { fmt = "bold" }, + BufferCurrentMod = { fg = yellow, fmt = "bold" }, + BufferCurrentSign = { fg = purple }, + BufferInactiveMod = { fg = fg_light, bg = bg_normal }, + BufferVisible = { fg = fg_light, bg = bg_dark }, + BufferVisibleMod = { fg = yellow, bg = bg_dark }, + BufferVisibleIndex = { fg = fg_light, bg = bg_dark }, + BufferVisibleSign = { fg = fg_light, bg = bg_dark }, + BufferVisibleTarget = { fg = fg_light, bg = bg_dark }, +} +set_highlight_groups(barbar_plugin_highlights) + +local coc_plugin_highlights = { + CocErrorSign = lsp_plugin_highlights.DiagnosticError, + CocHintSign = lsp_plugin_highlights.DiagnosticHint, + CocInfoSign = lsp_plugin_highlights.DiagnosticInfo, + CocWarningSign = lsp_plugin_highlights.DiagnosticWarn, +} +set_highlight_groups(coc_plugin_highlights) + +local dashboard_plugin_highlights = { + DashboardShortCut = { fg = blue }, + DashboardHeader = { fg = yellow }, + DashboardCenter = { fg = cyan }, + DashboardFooter = { fg = red_dark, fmt = "italic" } +} +set_highlight_groups(dashboard_plugin_highlights) + +local diffview_plugin_highlights = { + DiffviewFilePanelTitle = { fg = blue, fmt = "bold" }, + DiffviewFilePanelCounter = { fg = purple, fmt = "bold" }, + DiffviewFilePanelFileName = { fg = fg_normal }, + DiffviewNormal = common_highlights.Normal, + DiffviewCursorLine = common_highlights.CursorLine, + DiffviewVertSplit = common_highlights.VertSplit, + DiffviewSignColumn = common_highlights.SignColumn, + DiffviewStatusLine = common_highlights.StatusLine, + DiffviewStatusLineNC = common_highlights.StatusLineNC, + DiffviewEndOfBuffer = common_highlights.EndOfBuffer, + DiffviewFilePanelRootPath = { fg = fg_dark }, + DiffviewFilePanelPath = { fg = fg_dark }, + DiffviewFilePanelInsertions = { fg = green }, + DiffviewFilePanelDeletions = { fg = red }, + DiffviewStatusAdded = { fg = green }, + DiffviewStatusUntracked = { fg = blue }, + DiffviewStatusModified = { fg = blue }, + DiffviewStatusRenamed = { fg = blue }, + DiffviewStatusCopied = { fg = blue }, + DiffviewStatusTypeChange = { fg = blue }, + DiffviewStatusUnmerged = { fg = blue }, + DiffviewStatusUnknown = { fg = red }, + DiffviewStatusDeleted = { fg = red }, + DiffviewStatusBroken = { fg = red } +} +set_highlight_groups(diffview_plugin_highlights) + +local gitgutter_plugin_highlights = { + GitGutterAdd = { fg = green }, + GitGutterChange = { fg = yellow }, + GitGutterDelete = { fg = red }, +} +set_highlight_groups(gitgutter_plugin_highlights) + +local gitsigns_plugin_highlights = { + GitSignsAdd = { fg = green }, + GitSignsAddLn = { fg = green }, + GitSignsAddNr = { fg = green }, + GitSignsChange = { fg = yellow }, + GitSignsChangeLn = { fg = yellow }, + GitSignsChangeNr = { fg = yellow }, + GitSignsDelete = { fg = red }, + GitSignsDeleteLn = { fg = red }, + GitSignsDeleteNr = { fg = red } +} +set_highlight_groups(gitsigns_plugin_highlights) + +local hop_plugin_highlights = { + HopNextKey = { fg = red, fmt = "bold" }, + HopNextKey1 = { fg = cyan, fmt = "bold" }, + HopNextKey2 = { fg = blue_dark }, + HopUnmatched = { fg = fg_dark }, +} +set_highlight_groups(hop_plugin_highlights) + +local indent_blankline_plugin_highlights = { + IndentBlanklineIndent1 = { fg = blue }, + IndentBlanklineIndent2 = { fg = green }, + IndentBlanklineIndent3 = { fg = cyan }, + IndentBlanklineIndent4 = { fg = fg_light }, + IndentBlanklineIndent5 = { fg = purple }, + IndentBlanklineIndent6 = { fg = red }, + IndentBlanklineChar = { fg = bg_light, fmt = "nocombine" }, + IndentBlanklineContextChar = { fg = fg_darker, fmt = "nocombine" }, + IndentBlanklineContextStart = { sp = fg_darker, fmt = "underline" }, + IndentBlanklineContextSpaceChar = { fmt = "nocombine" }, +} +set_highlight_groups(indent_blankline_plugin_highlights) + +local mini_plugin_highlights = { + MiniCompletionActiveParameter = { fmt = "underline" }, + + MiniCursorword = { fmt = "underline" }, + MiniCursorwordCurrent = { fmt = "underline" }, + + MiniIndentscopeSymbol = { fg = fg_dark }, + MiniIndentscopePrefix = { fmt = "nocombine" }, -- Make it invisible + + MiniJump = { fg = purple, fmt = "underline", sp = purple }, + + MiniJump2dSpot = { fg = red, fmt = "bold,nocombine" }, + + MiniStarterCurrent = { fmt = "nocombine" }, + MiniStarterFooter = { fg = red_dark, fmt = "italic" }, + MiniStarterHeader = { fg = yellow }, + MiniStarterInactive = { fg = fg_darker, fmt = font_style_comments }, + MiniStarterItem = { fg = fg_normal, bg = transparent and none or bg_dark }, + MiniStarterItemBullet = { fg = fg_dark }, + MiniStarterItemPrefix = { fg = yellow }, + MiniStarterSection = { fg = fg_light }, + MiniStarterQuery = { fg = cyan }, + + MiniStatuslineDevinfo = { fg = fg_normal, bg = bg_light }, + MiniStatuslineFileinfo = { fg = fg_normal, bg = bg_light }, + MiniStatuslineFilename = { fg = fg_dark, bg = bg_normal }, + MiniStatuslineInactive = { fg = fg_dark, bg = bg_dark }, + MiniStatuslineModeCommand = { fg = bg_dark, bg = yellow, fmt = "bold" }, + MiniStatuslineModeInsert = { fg = bg_dark, bg = blue, fmt = "bold" }, + MiniStatuslineModeNormal = { fg = bg_dark, bg = green, fmt = "bold" }, + MiniStatuslineModeOther = { fg = bg_dark, bg = cyan, fmt = "bold" }, + MiniStatuslineModeReplace = { fg = bg_dark, bg = red, fmt = "bold" }, + MiniStatuslineModeVisual = { fg = bg_dark, bg = purple, fmt = "bold" }, + + MiniSurround = { fg = bg_dark, bg = orange }, + + MiniTablineCurrent = { fmt = "bold" }, + MiniTablineFill = { fg = fg_dark, bg = bg_normal }, + MiniTablineHidden = { fg = fg_normal, bg = bg_normal }, + MiniTablineModifiedCurrent = { fg = orange, fmt = "bold,italic" }, + MiniTablineModifiedHidden = { fg = fg_light, bg = bg_normal, fmt = "italic" }, + MiniTablineModifiedVisible = { fg = yellow, bg = bg_dark, fmt = "italic" }, + MiniTablineTabpagesection = { fg = bg_dark, bg = yellow_dark }, + MiniTablineVisible = { fg = fg_light, bg = bg_dark }, + + MiniTestEmphasis = { fmt = "bold" }, + MiniTestFail = { fg = red, fmt = "bold" }, + MiniTestPass = { fg = green, fmt = "bold" }, + + MiniTrailspace = { bg = red }, +} +set_highlight_groups(mini_plugin_highlights) + +local nvim_tree_plugin_highlights = { + NvimTreeNormal = { fg = fg_normal, bg = transparent and none or bg_dark }, + NvimTreeVertSplit = { fg = bg_dark, bg = transparent and none or bg_dark }, + NvimTreeEndOfBuffer = { fg = ending_tildes and bg_light or bg_dark, bg = transparent and none or bg_dark }, + NvimTreeRootFolder = { fg = fg_dark, fmt = "bold" }, + NvimTreeGitDirty = { fg = yellow }, + NvimTreeGitNew = { fg = green }, + NvimTreeGitDeleted = { fg = red }, + NvimTreeSpecialFile = { fg = fg_normal, fmt = "underline" }, + NvimTreeIndentMarker = { fg = fg_dark }, + NvimTreeImageFile = { fg = fg_dark }, + NvimTreeSymlink = { fg = purple }, + NvimTreeFolderName = { fg = fg_dark }, +} +set_highlight_groups(nvim_tree_plugin_highlights) + +local neo_tree_plugin_highlights = { + NeoTreeNormal = { fg = fg_normal, bg = transparent and none or bg_dark }, + NeoTreeNormalNC = { fg = fg_normal, bg = transparent and none or bg_dark }, + NeoTreeVertSplit = { fg = bg_normal, bg = transparent and none or bg_normal }, + NeoTreeWinSeparator = { fg = bg_normal, bg = transparent and none or bg_normal }, + NeoTreeEndOfBuffer = { fg = ending_tildes and bg_light or bg_dark, bg = transparent and none or bg_dark }, + NeoTreeRootName = { fg = fg_dark, fmt = "bold" }, + NeoTreeGitAdded = { fg = green }, + NeoTreeGitDeleted = { fg = red }, + NeoTreeGitModified = { fg = yellow }, + NeoTreeGitConflict = { fg = red, fmt = "bold" }, + NeoTreeGitUntracked = { fg = red, fmt = "italic" }, + NeoTreeIndentMarker = { fg = fg_dark }, + NeoTreeSymbolicLinkTarget = { fg = purple }, +} +set_highlight_groups(neo_tree_plugin_highlights) + +local neotest_plugin_highlights = { + NeotestAdapterName = { fg = purple, fmt = "bold" }, + NeotestDir = { fg = cyan }, + NeotestExpandMarker = { fg = fg_dark }, + NeotestFailed = { fg = red }, + NeotestFile = { fg = cyan }, + NeotestFocused = { fmt = "bold,italic" }, + NeotestIndent = { fg = fg_dark }, + NeotestMarked = { fg = orange, fmt = "bold" }, + NeotestNamespace = { fg = blue }, + NeotestPassed = { fg = green }, + NeotestRunning = { fg = yellow }, + NeotestWinSelect = { fg = cyan, fmt = "bold" }, + NeotestSkipped = { fg = fg_light }, + NeotestTarget = { fg = purple }, + NeotestTest = { fg = fg_normal }, + NeotestUnknown = { fg = fg_light }, +} +set_highlight_groups(neotest_plugin_highlights) + +local rainbow_delimiters_plugin_highlights = { + RainbowDelimiterRed = { fg = red }, + RainbowDelimiterOrange = { fg = orange }, + RainbowDelimiterYellow = { fg = yellow }, + RainbowDelimiterGreen = { fg = green }, + RainbowDelimiterCyan = { fg = cyan }, + RainbowDelimiterBlue = { fg = blue }, + RainbowDelimiterViolet = { fg = purple }, +} +set_highlight_groups(rainbow_delimiters_plugin_highlights) + +local telescope_plugin_highlights = { + TelescopeBorder = { fg = red }, + TelescopePromptBorder = { fg = cyan }, + TelescopeResultsBorder = { fg = cyan }, + TelescopePreviewBorder = { fg = cyan }, + TelescopeMatching = { fg = orange, fmt = "bold" }, + TelescopePromptPrefix = { fg = green }, + TelescopeSelection = { bg = bg_light }, + TelescopeSelectionCaret = { fg = yellow } +} +set_highlight_groups(telescope_plugin_highlights) + +local ts_rainbow_plugin_highlights = { + rainbowcol1 = { fg = fg_light }, + rainbowcol2 = { fg = yellow }, + rainbowcol3 = { fg = blue }, + rainbowcol4 = { fg = orange }, + rainbowcol5 = { fg = purple }, + rainbowcol6 = { fg = green }, + rainbowcol7 = { fg = red } +} +set_highlight_groups(ts_rainbow_plugin_highlights) + +local ts_rainbow2_plugin_highlights = { + TSRainbowRed = { fg = red }, + TSRainbowYellow = { fg = yellow }, + TSRainbowBlue = { fg = blue }, + TSRainbowOrange = { fg = orange }, + TSRainbowGreen = { fg = green }, + TSRainbowViolet = { fg = purple }, + TSRainbowCyan = { fg = cyan }, +} +set_highlight_groups(ts_rainbow2_plugin_highlights) + +local whichkey_plugin_highlights = { + WhichKey = { fg = purple }, + WhichKeyDesc = { fg = blue }, + WhichKeyGroup = { fg = violet }, + WhichKeySeparator = { fg = fg_dark } +} +set_highlight_groups(whichkey_plugin_highlights) + + +local lualine_plugin_highlights = { + lualine_a_normal = { fg = fg_normal, bg = bg_light, fmt = "bold" }, + lualine_b_normal = { fg = fg_normal, bg = bg_normal }, + lualine_c_normal = { fg = fg_dark, bg = bg_dark }, + lualine_a_insert = { fg = bg_darker, bg = blue, fmt = "bold" }, + lualine_b_insert = { fg = fg_normal, bg = bg_normal }, + lualine_c_insert = { fg = fg_dark, bg = bg_dark }, + lualine_a_replace = { fg = bg_darker, bg = cyan, fmt = "bold" }, + lualine_b_replace = { fg = fg_normal, bg = bg_normal }, + lualine_c_replace = { fg = fg_dark, bg = bg_dark }, + lualine_a_visual = { fg = bg_darker, bg = purple, fmt = "bold" }, + lualine_b_visual = { fg = fg_normal, bg = bg_normal }, + lualine_c_visual = { fg = fg_dark, bg = bg_dark }, + lualine_a_command = { fg = bg_darker, bg = yellow, fmt = "bold" }, + lualine_b_command = { fg = fg_normal, bg = bg_normal }, + lualine_c_command = { fg = fg_dark, bg = bg_dark }, + lualine_a_terminal = { fg = bg_darker, bg = violet, fmt = "bold" }, + lualine_b_terminal = { fg = fg_normal, bg = bg_normal }, + lualine_c_terminal = { fg = fg_dark, bg = bg_dark }, +} +set_highlight_groups(lualine_plugin_highlights) diff --git a/lua/montreal/lualine/themes/montreal.lua b/lua/montreal/lualine/themes/montreal.lua new file mode 100644 index 0000000..db7faf0 --- /dev/null +++ b/lua/montreal/lualine/themes/montreal.lua @@ -0,0 +1,54 @@ +-- COLORS +local none = "none" +local bg_darker = "#101018" +local bg_dark = "#1D1D2B" +local bg_normal = "#29293D" +local bg_light = "#353550" +local fg_dark = "#A3A3C2" +local fg_normal = "#D1D1E0" + +local yellow = "#FFBB00" +local cyan = "#44BBFF" +local blue = "#0099FF" +local violet = "#7788FF" +local purple = "#BB88FF" + +-- LUALINE PLUGIN +-- https://github.com/nvim-lualine/lualine.nvim/wiki/Writing-a-theme#theme-example +local theme = {} +theme.normal = { + a = { fg = fg_normal, bg = bg_light, gui = 'bold' }, + b = { fg = fg_normal, bg = bg_normal }, + c = { fg = fg_dark, bg = none } +} +theme.insert = { + a = { fg = bg_darker, bg = blue, gui = 'bold' }, + b = { fg = fg_normal, bg = bg_normal }, + c = { fg = fg_dark, bg = none } +} +theme.replace = { + a = { fg = bg_darker, bg = cyan, gui = 'bold' }, + b = { fg = fg_normal, bg = bg_normal }, + c = { fg = fg_dark, bg = none } +} +theme.visual = { + a = { fg = bg_darker, bg = purple, gui = 'bold' }, + b = { fg = fg_normal, bg = bg_normal }, + c = { fg = fg_dark, bg = none } +} +theme.command = { + a = { fg = bg_darker, bg = yellow, gui = 'bold' }, + b = { fg = fg_normal, bg = bg_normal }, + c = { fg = fg_dark, bg = none } +} +theme.terminal = { + a = { fg = bg_darker, bg = violet, gui = 'bold' }, + b = { fg = fg_normal, bg = bg_normal }, + c = { fg = fg_dark, bg = none } +} +theme.inactive = { + a = { fg = fg_dark, bg = bg_dark, gui = 'bold' }, + b = { fg = fg_dark, bg = bg_dark }, + c = { fg = fg_dark, bg = none }, +} +return theme