From 29deb8fa68a1b9121b551d3d9530a8c1e4153f9c Mon Sep 17 00:00:00 2001 From: ViViDboarder Date: Mon, 27 Sep 2021 17:41:08 -0700 Subject: [PATCH] Initial commit --- Readme.md | 25 +++ colors/wombuddy.vim | 3 + lua/wombuddy.lua | 375 ++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 403 insertions(+) create mode 100644 Readme.md create mode 100644 colors/wombuddy.vim create mode 100644 lua/wombuddy.lua diff --git a/Readme.md b/Readme.md new file mode 100644 index 0000000..121fa17 --- /dev/null +++ b/Readme.md @@ -0,0 +1,25 @@ +# Wombuddy + +A wombat colorscheme for Neovim. + +This is based on wombat256mod and iTerm2 Wombat. Originally generated with ez.nvim and then later adapted to colorbuddy + + +## Usage + +Packer: +```lua +use { + "", + requires = "tjdevries/colorbuddy.vim", +} +``` + +Enable using: +```lua +require("wombuddy").enable() +``` + +```vimscript +colorscheme wombuddy +``` diff --git a/colors/wombuddy.vim b/colors/wombuddy.vim new file mode 100644 index 0000000..910dc8e --- /dev/null +++ b/colors/wombuddy.vim @@ -0,0 +1,3 @@ +lua require("wombuddy").enable() +" Some colors don't work correctly when using this method of enabling +" lua require("colorbuddy").colorscheme("wombuddy", false, { disable_defaults = true }) diff --git a/lua/wombuddy.lua b/lua/wombuddy.lua new file mode 100644 index 0000000..a80579f --- /dev/null +++ b/lua/wombuddy.lua @@ -0,0 +1,375 @@ +-- Name: Wombuddy +-- Description: Wombat colorscheme for Neovim +-- Author: ViViDboarder +local Color, c, Group, g, s = require("colorbuddy").setup() +local b = s.bold +local i = s.italic +local n = s.inverse +local uc = s.undercurl +local ul = s.underline +local r = s.reverse +local sto = s.standout +local no = s.NONE + +local M = {} + +function M.enable() + vim.g.colors_name = "wombuddy" + -- TODO: Maybe offer a light variant in the future + vim.o.background = "dark" + + -- Create Primary Colors based on iTerm 2 colorscheme + Color.new("Black", "#000000") + Color.new("Red", "#ff786c") + Color.new("DarkRed", c.Red:dark():to_rgb()) + Color.new("Green", "#bde97c") + Color.new('DarkGreen', c.Green:dark():to_rgb()) + Color.new("Yellow", "#efdeab") + Color.new("DarkYellow", c.yellow:dark():to_rgb()) + Color.new("Blue", "#6eb9f8") + Color.new("DarkBlue", c.Blue:dark():to_rgb()) + Color.new("Magenta", "#ee87ff") + Color.new("DarkMagenta", c.Magenta:dark():to_rgb()) + Color.new("Cyan", "#90fdf8") + Color.new("DarkCyan", c.Cyan:dark():to_rgb()) + Color.new("White", "#e4e0d7") + + Color.new("Orange", "#e5786d") + Color.new("DarkOrange", c.Orange:dark():to_rgb()) + Color.new("Purple", "#d787ff") + Color.new('Violet', "#b294bb") + Color.new("Grey", "#574b49") + Color.new("Aqua", c.Cyan:to_rgb()) + Color.new('Pink', c.Red:light():to_rgb()) + + -- A few grey scales + Color.new("grey_1", "#c3c6ca") + Color.new("grey_2", "#9c998e") + Color.new("grey_3", "#636066") + Color.new("grey_4", "#574b49") + Color.new("grey_5", "#444444") + + -- Set some fg/bg colors + Color.new("dark_fg", "#e4e0d7") + Color.new("dark_bg", "#1e1e1e") + + -- Override some colors used in colorbuddy plugins + Color.new("GreenBg", c.darkgreen:to_rgb()) + Color.new("RedBg", c.darkred:to_rgb()) + + --[[ + -- Mostly based on wombat256mod + Color.new("Red", "#ff5f55") + Color.new("DarkRed", "#e06c75") + Color.new("Blue", "#88b8f6") + Color.new("DarkBlue", "#528bff") + Color.new("Green", "#95e454") + Color.new('DarkGreen', "#50a14f") + Color.new("Orange", "#e5786d") + Color.new("DarkOrange", "#c18401") + Color.new("Yellow", "#cae982") + Color.new("DarkYellow", c.yellow:dark():to_rgb()) + Color.new("Purple", "#d787ff") + Color.new('Violet', "#b294bb") + Color.new("Magenta", "#ff80ff") + Color.new("DarkMagenta", "#a626a4") + Color.new("Black", "#242424") + Color.new("Grey", "#a0a8b0") + Color.new("White", "#e3e0d7") + Color.new("Cyan", "#56B6C2") + Color.new("DarkCyan", "#80a0ff") + Color.new("Aqua", "#8ec07c") + Color.new('Pink', "#d291e4") + + Color.new("fg", c.white) + Color.new("bg", c.black) + --]] + + -- Create palette + + -- TODO: Move these refrence groups rather than colors + Color.new("error_red", "#ff2026") + Color.new("line_grey", c.Grey:to_rgb()) + Color.new("gutter_fg_grey", "#857b6f") + Color.new("cursor_grey", "#32322f") + Color.new("visual_grey", "#c3c6ca") -- Alternate #554d4b + Color.new("menu_grey", "#444444") + Color.new("special_grey", "#857b6f") + Color.new("special_yellow", c.DarkYellow:to_rgb()) + Color.new("vertsplit", "#444444") + + -- Determine if we'll use italics + local italics = (function() + if vim.g.wombuddy_disable_italics ~= true then + return i + else + return no + end + end)() + + -- Colors + Group.new("Normal", c.dark_fg, c.dark_bg, no) + Group.new("bold", c.none, c.none, b) + + Group.new("Comment", c.grey_2, c.none, italics) + Group.new("Constant", c.orange, c.none, no) + Group.new("String", c.green, c.none, no) + Group.new("Character", c.green, c.none, no) + Group.new("Number", c.orange, c.none, no) + Group.new("Boolean", c.blue, c.none, no) + Group.new("Float", c.orange, c.none, no) + Group.new("Identifier", c.yellow, c.none, no) + Group.new("Function", c.yellow, c.none, no) + Group.new("Statement", c.blue, c.none, no) + Group.new("Conditional", c.purple, c.none, no) + Group.new("Repeat", c.purple, c.none, no) + Group.new("Label", c.blue, c.none, no) + Group.new("Operator", c.purple, c.none, no) + Group.new("Keyword", c.blue, c.none, no) + Group.new("Exception", c.purple, c.none, no) + Group.new("PreProc", c.orange, c.none, no) + Group.new("Include", c.purple, c.none, no) + Group.new("Define", c.purple, c.none, no) + Group.new("Title", c.cyan, c.none, no) + Group.new("Macro", c.purple, c.none, no) + Group.new("PreCondit", c.blue, c.none, no) + Group.new("Type", c.blue, c.none, no) + Group.new("StorageClass", c.blue, c.none, no) + Group.new("Structure", c.yellow, c.none, no) + Group.new("Typedef", c.yellow, c.none, no) + Group.new("Special", c.special_yellow, c.none, italics) + Group.new("SpecialComment", c.special_yellow, c.none, no) + Group.new("Error", c.error_red, c.none, b + r) + Group.new("Todo", c.purple, c.none, b + italics) + Group.new("Underlined", c.cyan, c.none, u) + Group.new("Cursor", c.none, c.none, r) + + Group.new("ColorColumn", c.none, c.cursor_grey, no) + Group.new("CursorLineNr", c.white, c.none, b) + Group.new("SignColumn", c.none, c.dark_bg:light(), no) + Group.new("Conceal", c.line_grey, c.none, no) + Group.new("CursorColumn", c.none, c.cursor_grey, no) + Group.new("CursorLine", c.none, c.cursor_grey, no) + Group.new("Directory", c.blue, c.none, no) + + Group.new("DiffChange", c.yellow, c.none, u) + Group.new("DiffAdd", c.none, c.greenbg, no) + Group.new("DiffDelete", c.none, c.redbg, no) + Group.new("DiffText", c.black, c.yellow, no) + + Group.new("ErrorMsg", c.error_red, c.none, no) + Group.new("VertSplit", c.vertsplit, c.none, no) + Group.new("Folded", c.line_grey, c.none, no) + Group.new("FoldColumn", c.none, c.none, no) + Group.new("IncSearch", c.yellow, c.line_grey, no) + Group.new("LineNr", c.gutter_fg_grey, c.none, no) + Group.new("MatchParen", c.blue, c.none, u) + Group.new("NonText", c.special_grey, c.none, no) + Group.new("Pmenu", c.white, c.menu_grey, no) + Group.new("PmenuSel", c.black, c.yellow, no) + Group.new("PmenuSbar", c.none, c.special_grey, no) + Group.new("PmenuThumb", c.none, c.white, no) + Group.new("Question", c.purple, c.none, no) + Group.new("QuickFixLine", c.black, c.yellow, no) + Group.new("Search", c.black, c.yellow, no) + Group.new("SpecialKey", c.special_grey, c.none, no) + Group.new("SpellBad", c.error_red, c.none, u) + Group.new("SpellCap", c.yellow, c.none, no) + Group.new("SpellLocal", c.yellow, c.none, no) + Group.new("SpellRare", c.yellow, c.none, no) + Group.new("StatusLine", c.white, c.cursor_grey, no) + Group.new("StatusLineNC", c.line_grey, c.none, no) + Group.new("StatusLineTerm", c.white, c.cursor_grey, no) + Group.new("StatusLineTermNC", c.cursor_grey, c.none, no) + Group.new("TabLine", c.line_grey, c.none, no) + Group.new("TabLineSel", c.white, c.none, no) + Group.new("TabLineFill", c.none, c.bg, no) + Group.new("Terminal", c.white, c.black, no) + Group.new("Visual", c.none, c.visual_grey, no) + Group.new("VisualNOS", c.visual_grey, c.none, no) + Group.new("WarningMsg", c.yellow, c.none, no) + Group.new("WildMenu", c.black, c.blue, no) + Group.new("EndOfBuffer", c.black, c.none, no) + + -- -- Start Treesitter -- + -- Misc + Group.new("TSError", c.error_red, c.none, no) + Group.new("TSPunctDelimiter", c.white, c.none, no) + Group.new("TSPunctBracket", c.white, c.none, no) + Group.new("TSPunctSpecial", c.white, c.none, no) + -- Constants + Group.new("TSConstant", c.blue, c.none, no) + Group.new("TSConstBuiltin", c.orange, c.none, no) + -- Not sure about this guy + Group.new("TSConstMacro", c.cyan, c.none, no) + Group.new("TSStringRegex", c.green, c.none, no) + Group.new("TSString", c.green, c.none, no) + Group.new("TSStringEscape", c.cyan, c.none, no) + Group.new("TSCharacter", c.green, c.none, no) + Group.new("TSNumber", c.orange, c.none, no) + Group.new("TSBoolean", c.orange, c.none, no) + Group.new("TSFloat", c.green, c.none, no) + Group.new("TSAnnotation", c.yellow, c.none, no) + Group.new("TSAttribute", c.cyan, c.none, no) + Group.new("TSNamespace", c.purple, c.none, no) + -- Functions + Group.new("TSFuncBuiltin", c.yellow, c.none, no) + Group.new("TSFunction", c.yellow, c.none, no) + Group.new("TSFuncMacro", c.yellow, c.none, no) + Group.new("TSParameter", c.cyan, c.none, no) + Group.new("TSParameterReference", c.cyan, c.none, no) + Group.new("TSMethod", c.blue, c.none, no) + Group.new("TSField", c.red, c.none, no) + Group.new("TSProperty", c.yellow, c.none, no) + Group.new("TSConstructor", c.cyan, c.none, no) + -- Keywords + Group.new("TSConditional", c.purple, c.none, no) + Group.new("TSRepeat", c.purple, c.none, no) + Group.new("TSLabel", c.blue, c.none, no) + -- Does not work for yield and return they should be diff then class and def + Group.new("TSKeyword", c.purple, c.none, no) + Group.new("TSKeywordFunction", c.blue, c.none, no) + Group.new("TSKeywordOperator", c.purple, c.none, no) + Group.new("TSOperator", c.white, c.none, no) + Group.new("TSException", c.purple, c.none, no) + Group.new("TSType", c.blue, c.none, no) + Group.new("TSTypeBuiltin", c.blue, c.none, no) + Group.new("TSStructure", c.purple, c.none, no) + Group.new("TSInclude", c.purple, c.none, no) + -- Variable + Group.new("TSVariable", c.cyan, c.none, no) + Group.new("TSVariableBuiltin", c.yellow, c.none, no) + -- Text + Group.new("TSText", c.pink, c.none, no) + Group.new("TSStrong", c.pink, c.none, no) + Group.new("TSEmphasis", c.pink, c.none, no) + Group.new("TSUnderline", c.pink, c.none, no) + Group.new("TSTitle", c.pink, c.none, no) + Group.new("TSLiteral", c.pink, c.none, no) + Group.new("TSURI", c.pink, c.none, no) + Group.new("TSComment", g.comment, c.none, no) + -- Tags + Group.new("TSTag", c.red, c.none, no) + Group.new("TSTagDelimiter", c.line_grey, c.none, no) + -- -- END Treesitter -- + + -- -- START Languages -- + -- HTML (keep consistent with Markdown, below) + Group.new("htmlArg", c.yellow, c.none, no) + Group.new("htmlBold", c.yellow, c.none, b) + Group.new("htmlEndTag", c.white, c.none, no) + Group.new("htmlH1", c.blue, c.none, no) + Group.new("htmlH2", c.blue:light(), c.none, no) + Group.new("htmlH3", c.blue:light(), c.none, no) + Group.new("htmlH4", c.blue:light(), c.none, no) + Group.new("htmlH5", c.blue:light(), c.none, no) + Group.new("htmlH6", c.blue:light(), c.none, no) + Group.new("htmlItalic", c.purple, c.none, i) + Group.new("htmlLink", c.cyan, c.none, u) + Group.new("htmlSpecialChar", c.yellow, c.none, no) + Group.new("htmlSpecialTagName", c.blue, c.none, no) + Group.new("htmlTag", c.white, c.none, no) + Group.new("htmlTagN", c.blue, c.none, no) + Group.new("htmlTagName", c.blue, c.none, no) + Group.new("htmlTitle", c.white, c.none, no) + + -- Markdown + Group.new("markdownBlockquote", c.line_grey, c.none, no) + Group.new("markdownBold", g.htmlBold.fg, g.htmlBold.bg, b) + Group.new("markdownCode", c.green, c.none, no) + Group.new("markdownCodeBlock", c.green, c.none, i) + Group.new("markdownCodeDelimiter", c.green, c.none, i) + Group.new("markdownH1", g.htmlH1.fg, g.htmlH1.bg, b + italics) + Group.new("markdownH2", g.htmlH2.fg, g.htmlH2.bg, b) + Group.new("markdownH3", g.htmlH3.fg, g.htmlH3.bg, italics) + Group.new("markdownH4", g.htmlH4.fg, g.htmlH4.bg, no) + Group.new("markdownH5", g.htmlH5.fg, g.htmlH5.bg, no) + Group.new("markdownH6", g.htmlH6.fg, g.htmlH6.bg, no) + Group.new("markdownHeadingDelimiter", c.red, c.none, no) + Group.new("markdownHeadingRule", c.line_grey, c.none, no) + Group.new("markdownId", c.purple, c.none, no) + Group.new("markdownIdDeclaration", c.blue, c.none, no) + Group.new("markdownIdDelimiter", c.purple, c.none, no) + Group.new("markdownItalic", g.htmlItalic.fg, g.htmlItalic.bg, i) + Group.new("markdownLinkDelimiter", c.purple, c.none, no) + Group.new("markdownLinkText", g.htmlLink.fg, g.htmlLink.bg, no) + Group.new("markdownListMarker", c.red, c.none, no) + Group.new("markdownOrderedListMarker", c.red, c.none, no) + Group.new("markdownRule", c.line_grey, c.none, no) + Group.new("markdownUrl", c.cyan, c.none, u) + -- -- END Languages -- + + -- -- START CoC -- + Group.new("CocExplorerIndentLine", c.line_grey, c.none, no) + Group.new("CocExplorerBufferRoot", c.cyan, c.none, no) + Group.new("CocExplorerFileRoot", c.cyan, c.none, no) + Group.new("CocExplorerBufferFullPath", c.line_grey, c.none, no) + Group.new("CocExplorerFileFullPath", c.line_grey, c.none, no) + Group.new("CocExplorerBufferReadonly", c.purple, c.none, no) + Group.new("CocExplorerBufferModified", c.purple, c.none, no) + Group.new("CocExplorerBufferNameVisible", c.green, c.none, no) + Group.new("CocExplorerFileReadonly", c.purple, c.none, no) + Group.new("CocExplorerFileModified", c.purple, c.none, no) + Group.new("CocExplorerFileHidden", c.line_grey, c.none, no) + Group.new("CocExplorerHelpLine", c.purple, c.none, no) + -- -- END CoC -- + + -- -- START Easymotion -- + Group.new("EasyMotionTarget", c.error_red, c.none, b) + Group.new("EasyMotionTarget2First", c.error_red, c.none, b) + Group.new("EasyMotionTarget2Second", c.error_red, c.none, b) + -- EasyMotionShade: "" + -- EasyMotionIncSearch: + -- EasyMotionMoveHL: + + -- -- END Easymotion -- + + -- -- START Startify -- + Group.new("StartifyNumber", c.orange, c.none, no) + Group.new("StartifySelect", c.green, c.none, no) + Group.new("StartifyBracket", c.blue, c.none, no) + Group.new("StartifySpecial", c.cyan, c.none, no) + Group.new("StartifyVar", c.blue, c.none, no) + Group.new("StartifyPath", c.cyan, c.none, no) + Group.new("StartifyFile", c.yellow, c.none, no) + Group.new("StartifySlash", c.white, c.none, no) + Group.new("StartifyHeader", c.green, c.none, no) + Group.new("StartifySection", c.purple, c.none, no) + Group.new("StartifyFooter", c.green, c.none, no) + -- -- END Startify -- + + -- -- START WhichKey -- + Group.new("WhichKey", c.purple, c.none, no) + Group.new("WhichKeySeperator", c.green, c.none, no) + Group.new("WhichKeyGroup", c.blue, c.none, no) + Group.new("WhichKeyDesc", c.blue, c.none, no) + -- -- END WhichKey -- + + -- old stuff + Group.new("diffAdded", c.green, c.none, no) + Group.new("diffRemoved", c.red, c.none, no) + Group.new("diffFileId", c.blue, c.none, br) + Group.new("diffFile", c.special_grey, c.none, no) + Group.new("diffNewFile", c.green, c.none, no) + Group.new("diffOldFile", c.red, c.none, no) + + Group.new("debugPc", c.none, c.cyan, no) + Group.new("debugBreakpoint", c.red, c.none, r) + + -- VimWiki + Group.new("VimwikiHeader1", c.orange, c.none, b) + Group.new("VimwikiHeader2", c.green, c.none, b) + Group.new("VimwikiHeader3", c.blue, c.none, b) + Group.new("VimwikiHeader4", c.cyan, c.none, b) + Group.new("VimwikiHeader5", c.yellow, c.none, b) + Group.new("VimwikiHeader6", c.purple, c.none, b) + Group.new("VimwikiLink", c.cyan, c.none, no) + Group.new("VimwikiHeaderChar", c.line_grey, c.none, no) + Group.new("VimwikiHR", c.yellow, c.none, no) + Group.new("VimwikiList", c.orange, c.none, no) + Group.new("VimwikiTag", c.orange, c.none, no) + Group.new("VimwikiMarkers", c.line_grey, c.none, no) +end + +-- Return module that allows ren-enabling +return M