LunarVim/lua/lv-themes/spacegray.lua
2021-07-02 11:30:42 -04:00

364 lines
16 KiB
Lua

local lush = require('lush')
local hsl = lush.hsl
local theme = lush(function()
local c = {
bg = hsl("#212121"),
bg1 = hsl("#2a2a2a"),
-- bg2 = hsl("#3a3a3a"),
bg2 = hsl("#383d45"),
white = hsl("#c8c9d1"),
gray = hsl("#858585"),
light_gray = hsl("#c8c9c1"),
error_red = hsl("#F44747"),
warning_orange = hsl("#ff8800"),
info_yellow = hsl("#ffcc66"),
hint_blue = hsl("#4fc1ff"),
red = hsl("#f07178"),
blue = hsl("#5486c0"),
gray_blue = hsl("#66899d"),
-- yellow = hsl("#ffcb6b"),
yellow = hsl("#eeba5a"),
-- orange = hsl("#c98a75"),
orange = hsl("#c6735a"),
green = hsl("#87b379"),
light_green = hsl("#b2d77c"),
-- aqua = hsl("#46b1d0"),
aqua = hsl("#65a7c5"),
purple = hsl("#bf83c1"),
pale_purple = hsl("#7199ee"),
sign_add = hsl("#587C0C"),
sign_change = hsl("#0C7D9D"),
sign_delete = hsl("#94151B"),
test = hsl("#ff00ff")
}
return {
Normal {bg = c.bg, fg = c.white, gui = "NONE"}, -- used for the columns set with 'colorcolumn'
SignColumn {Normal},
ModeMsg {Normal},
MsgArea {Normal},
MsgSeparator {Normal},
SpellBad {bg = "NONE", fg = c.white, gui = "underline", sp = c.red},
SpellCap {bg = "NONE", fg = c.white, gui = "underline", sp = c.yellow},
SpellLocal {bg = "NONE", fg = c.white, gui = "underline", sp = c.green},
SpellRare {bg = "NONE", fg = c.white, gui = "underline", sp = c.blue},
NormalNC {Normal},
Pmenu {bg = c.bg2, fg = c.white, gui = "NONE"},
PmenuSel {bg = c.gray_blue, fg = c.bg1.da(5), gui = "NONE"},
WildMenu {PmenuSel}, -- Non Defaults
CursorLineNr {bg = "NONE", fg = c.light_gray, gui = "bold"},
Comment {bg = "NONE", fg = c.gray, gui = "italic"}, -- any comment
Folded {bg = c.bg1, fg = c.gray, gui = "NONE"},
FoldColumn {Normal, fg = c.gray, gui = "NONE"},
LineNr {bg = "NONE", fg = c.gray, gui = "NONE"},
FloatBorder {bg = c.bg1, fg = c.gray, gui = "NONE"},
Whitespace {bg = "NONE", fg = c.gray.da(35), gui = "NONE"},
VertSplit {bg = "NONE", fg = c.bg2, gui = "NONE"},
CursorLine {bg = c.bg1, fg = "NONE", gui = "NONE"},
CursorColumn {CursorLine},
ColorColumn {CursorLine},
NormalFloat {bg = c.bg2.da(30), fg = "NONE", gui = "NONE"},
Visual {bg = c.bg2.da(25), fg = "NONE", gui = "NONE"},
VisualNOS {Visual}, WarningMsg {bg = "NONE", fg = c.red, gui = "NONE"},
DiffText {bg = "NONE", fg = "NONE", gui = "NONE"},
DiffAdd {bg = c.sign_add, fg = "NONE", gui = "NONE"},
DiffChange {bg = c.sign_change, fg = "NONE", gui = "NONE"},
DiffDelete {bg = c.sign_delete, fg = "NONE", gui = "NONE"},
QuickFixLine {CursorLine},
PmenuSbar {bg = c.bg2.li(15), fg = "NONE", gui = "NONE"},
PmenuThumb {bg = c.white, fg = "NONE", gui = "NONE"},
MatchParen {CursorLine, fg = "NONE", gui = "underline"},
Cursor {fg = "NONE", bg = "NONE", gui = "reverse"},
lCursor {Cursor},
CursorIM {Cursor},
TermCursor {Cursor}, TermCursorNC {Cursor},
Conceal {bg = "NONE", fg = c.blue, gui = "NONE"},
Directory {bg = "NONE", fg = c.blue, gui = "NONE"},
SpecialKey {bg = "NONE", fg = c.blue, gui = "bold"},
Title {bg = "NONE", fg = c.blue, gui = "bold"},
ErrorMsg {bg = "NONE", fg = c.error_red, gui = "NONE"},
Search {bg = c.gray_blue, fg = c.white},
IncSearch {Search},
Substitute {Search},
MoreMsg {bg = "NONE", fg = c.aqua, gui = "NONE"},
Question {MoreMsg},
EndOfBuffer {bg = "NONE", fg = c.bg, gui = "NONE"},
NonText {EndOfBuffer},
String {fg = c.green},
Character {fg = c.light_green},
Constant {fg = c.orange},
Number {fg = c.red},
Boolean {fg = c.red},
Float {fg = c.red},
Identifier {fg = c.white},
Function {fg = c.yellow},
Operator {fg = c.gray_blue},
Type {fg = c.purple},
StorageClass {Type},
Structure {Type},
Typedef {Type},
Keyword {fg = c.blue},
Statement {Keyword },
Conditional {Keyword},
Repeat {Keyword},
Label {Keyword},
Exception {Keyword},
Include {Keyword},
PreProc {fg = c.aqua},
Define {PreProc},
Macro {PreProc},
PreCondit {PreProc},
Special {fg = c.orange},
SpecialChar {Character},
Tag {fg = c.pale_purple},
Debug {fg = c.red},
Delimiter {fg = c.white.da(25)},
SpecialComment {fg = c.gray},
Underlined {fg = "NONE", gui = "underline"},
Bold {fg = "NONE", gui = "bold"},
Italic {fg = "NONE", gui = "italic"},
-- Todo
-- ("Ignore", below, may be invisible...)
Ignore {fg = c.white},
Todo {bg = "NONE", fg = c.red, gui = "bold"},
Error {fg = c.error_red},
-- Treesitter
TSComment {Comment}, -- comment blocks.
luaTSConstructor {bg = "NONE", fg = c.white.da(25)}, -- override Lua curly braces
TSAnnotation {bg = "NONE", fg = c.aqua}, -- For C++/Dart attributes, annotations that can be attached to the code to denote some kind of meta information.
TSAttribute {bg = "NONE", fg = c.aqua}, -- (unstable) TODO: docs
TSConstructor {Type}, -- For constructor calls and definitions: `{ }` in Lua, and Java constructors.
TSType {Type}, -- types.
TSTypeBuiltin {Type}, -- builtin types.
TSConditional {Conditional}, -- keywords related to conditionnals.
TSException {Exception}, -- exception related keywords.
TSInclude {Include}, -- includes: `#include` in C, `use` or `extern crate` in Rust, or `require` in Lua.
TSKeyword {Keyword}, -- keywords that don't fall in previous categories.
TSKeywordFunction {Keyword}, -- keywords used to define a fuction.
TSLabel {Label}, -- labels: `label:` in C and `:label:` in Lua.
TSNamespace {bg = "NONE", fg = c.blue}, -- For identifiers referring to modules and namespaces.
TSRepeat {Repeat}, -- keywords related to loops.
TSConstant {Constant}, -- constants
TSConstBuiltin {Constant}, -- constant that are built in the language: `nil` in Lua.
TSFloat {Float}, -- floats.
TSNumber {Number}, -- all numbers
TSBoolean {Boolean}, -- booleans.
TSCharacter {Character}, -- characters.
TSError {bg = "NONE", fg = "NONE"}, -- For syntax/parser errors.
TSFunction {Function}, -- function (calls and definitions).
TSFuncBuiltin {Function}, -- builtin functions: `table.insert` in Lua.
TSMethod {Function}, -- method calls and definitions.
TSConstMacro {Macro}, -- constants that are defined by macros: `NULL` in C.
TSFuncMacro {Macro}, -- macro defined fuctions (calls and definitions): each `macro_rules` in Rust.
TSVariableBuiltin {bg = "NONE", fg = c.aqua}, -- Variable names that are defined by the languages, like `this` or `self`.
TSProperty {fg = c.aqua},
TSOperator {Operator}, -- any operator: `+`, but also `->` and `*` in C.
TSVariable {bg = "NONE", fg = c.white}, -- Any variable name that does not have another highlight.
TSField {bg = "NONE", fg = c.white}, -- For fields.
TSParameter {TSField}, -- parameters of a function.
TSParameterReference {TSParameter}, -- references to parameters of a function.
TSSymbol {Identifier}, -- identifiers referring to symbols or atoms.
TSText {fg = c.white}, -- strings considered text in a markup language.
TSPunctDelimiter {Delimiter}, -- delimiters ie: `.`
TSTagDelimiter {Delimiter}, -- Tag delimiter like `<` `>` `/`
TSPunctBracket {Delimiter}, -- brackets and parens.
TSPunctSpecial {Delimiter}, -- special punctutation that does not fall in the catagories before.
TSString {String}, -- strings.
TSStringRegex {TSString}, -- regexes.
TSStringEscape {Character}, -- escape characters within a string.
TSWarning {Todo}, -- Variable names that are defined by the languages, like `this` or `self`.
TSTag {Tag}, -- Tags like html tag names.
TSEmphasis {gui = "italic"}, -- text to be represented with emphasis.
TSUnderline {gui = "underline"}, -- text to be represented with an underline.
TSStrike {gui = "strikethrough"}, -- strikethrough text.
TSTitle {Title}, -- Text that is part of a title.
TSLiteral {String}, -- Literal text.
TSURI {fg = c.aqua}, -- Any URI like a link or email.
-- TSNone { }, -- TODO: docs
-- These groups are for the native LSP client. Some other LSP clients may
-- use these groups, or use their own. Consult your LSP client's
-- documentation.
LspDiagnosticsDefaultError {bg = "NONE", fg = c.error_red, gui = "underline"},
LspDiagnosticsDefaultWarning {bg = "NONE", fg = c.warning_orange, gui = "underline"},
LspDiagnosticsDefaultInformation {bg = "NONE", fg = c.info_yellow, gui = "underline"},
LspDiagnosticsDefaultHint {bg = "NONE", fg = c.hint_blue, gui = "underline"},
LspDiagnosticsVirtualTextError {LspDiagnosticsDefaultError},
LspDiagnosticsVirtualTextWarning {LspDiagnosticsDefaultWarning},
LspDiagnosticsVirtualTextInformation {LspDiagnosticsDefaultInformation},
LspDiagnosticsVirtualTextHint {LspDiagnosticsDefaultHint},
LspDiagnosticsFloatingError {fg = c.error_red, gui = "NONE"},
LspDiagnosticsFloatingWarning {fg = c.warning_orange, gui = "NONE"},
LspDiagnosticsFloatingInformation {fg = c.info_yellow, gui = "NONE"},
LspDiagnosticsFloatingHint {fg = c.hint_blue, gui = "NONE"},
LspDiagnosticsSignError {fg = c.error_red, gui = "NONE"},
LspDiagnosticsSignWarning {fg = c.warning_orange, gui = "NONE"},
LspDiagnosticsSignInformation {fg = c.info_yellow, gui = "NONE"},
LspDiagnosticsSignHint {fg = c.hint_blue, gui = "NONE"}, -- Tree-Sitter
LspDiagnosticsError {LspDiagnosticsSignError},
LspDiagnosticsWarning {LspDiagnosticsSignWarning},
LspDiagnosticsInformation {LspDiagnosticsSignInformation},
LspDiagnosticsHint {LspDiagnosticsSignHint},
LspReferenceText {bg = c.bg1, fg = "NONE", gui = "underline"},
LspReferenceRead {bg = c.bg1, fg = "NONE", gui = "underline"},
LspReferenceWrite {bg = c.bg1, fg = "NONE", gui = "underline"},
LspDiagnosticsUnderlineError {fg = "NONE", gui = "underline", sp = c.red},
LspDiagnosticsUnderlineWarning {fg = "NONE", gui = "underline", sp = c.yellow},
LspDiagnosticsUnderlineInformation {fg = "NONE", gui = "underline", sp = c.blue},
LspDiagnosticsUnderlineHint {fg = "NONE", gui = "underline", sp = c.green},
-- gitsigns.nvim
SignAdd {fg = c.sign_add},
SignChange {fg = c.sign_change},
SignDelete {fg = c.sign_delete}, -- Any URI like a link or email.
GitSignsAdd {fg = c.sign_add},
GitSignsChange { fg = c.sign_change},
GitSignsDelete {fg = c.sign_delete},
-- telescope.nvim
TelescopeSelection {bg = "NONE", fg = c.aqua},
TelescopeMatching {bg = "NONE", fg = c.red, gui = "bold"},
TelescopeBorder {bg = c.bg1, fg = c.gray}, -- nvim-tree.lua
-- Nvimtree
NvimTreeFolderIcon {fg = c.blue},
NvimTreeIndentMarker {fg = c.gray},
NvimTreeNormal {fg = c.white.da(10), bg = c.bg1},
NvimTreeFolderName {fg = c.blue},
NvimTreeOpenedFolderName {fg = c.aqua.da(10), gui = "italic"},
NvimTreeOpenedFile {NvimTreeOpenedFolderName},
NvimTreeRootFolder {fg = c.blue.da(20)},
NvimTreeExecFile {fg = c.green},
NvimTreeImageFile {fg = c.purple},
NvimTreeSpecialFile {fg = c.aqua},
NvimTreeGitStaged {fg = c.sign_add},
NvimTreeGitNew {fg = c.sign_add},
NvimTreeGitDirty {fg = c.sign_add},
NvimTreeGitRenamed {fg = c.sign_change},
NvimTreeGitMerge {fg = c.sign_change},
NvimTreeGitDelete {fg = c.sign_delete},
NvimTreeVertSplit {fg = c.bg1, bg = c.bg1},
-- BarBar
TabLine {bg = c.bg1, fg = c.white, gui = "NONE"},
TabLineFill {bg = c.bg1, fg = c.white, gui = "NONE"},
TabLineSel {bg = c.blue, fg = c.bg1, gui = "NONE"},
BufferCurrent {fg = c.fg, bg = c.bg},
BufferCurrentIndex {fg = c.aqua, bg = c.bg},
BufferCurrentMod {fg = c.info_yellow, bg = c.bg},
BufferCurrentSign {fg = c.aqua, bg = c.bg},
BufferCurrentTarget {fg = c.red, bg = c.bg, gui = "bold"},
BufferVisible {fg = c.fg, bg = c.bg},
BufferVisibleIndex {fg = c.fg, bg = c.bg},
BufferVisibleMod {fg = c.info_yellow, bg = c.bg},
BufferVisibleSign {fg = c.info_yellow, bg = c.bg},
BufferVisibleTarget {fg = c.red, bg = c.bg, gui = "bold"},
BufferInactive {fg = c.gray, bg = c.bg1},
BufferInactiveIndex {fg = c.gray, bg = c.bg1},
BufferInactiveMod {fg = c.info_yellow, bg = c.bg1},
BufferInactiveSign {fg = c.gray, bg = c.bg1},
BufferInactiveTarget {fg = c.red, bg = c.bg1},
-- some fix for html related stuff
htmlH1 {Title}, -- markdown stuff
mkdLink {fg = c.aqua, gui = "underline"},
mkdLineBreak {bg = "NONE", fg = "NONE", gui = "NONE"},
mkdHeading {fg = c.white},
mkdInlineURL {mkdLink},
mkdUnderline {fg = c.gray},
markdownUrl {mkdLink},
markdownCode {fg = c.orange, bg = "NONE"},
markdownLinkTextDelimiter {Delimiter},
markdownLinkDelimiter {Delimiter},
markdownIdDelimiter {Delimiter},
markdownLinkText {fg = c.aqua},
markdownItalic {fg = "NONE", gui = "italic"}, -- flutter-tools.nvim
FlutterWidgetGuides {fg = c.gray.li(10)}, -- statusline
StatusLine {bg = c.bg1, fg = c.white},
StatusLineNC {bg = c.bg1, fg = c.gray},
StatusLineMode {bg = c.gray, fg = c.bg, gui = "bold"},
StatusLineDeco {bg = c.bg2, fg = c.yellow},
StatusLineLCol {bg = c.bg2, fg = c.white},
StatusLineLColAlt {bg = c.bg1, fg = c.white},
StatusLineFT {bg = c.bg2, fg = c.white},
StatusLineFTAlt {bg = c.bg2, fg = c.white},
StatusLineGit {bg = c.gray, fg = c.bg},
StatusLineGitAlt {bg = c.gray, fg = c.bg},
StatusLineLSP {bg = c.bg1, fg = c.gray.li(25)},
StatusLineFileName {bg = c.bg1, fg = c.white, gui = "bold"},
-- lsp-trouble.nvim
LspTroubleIndent {fg = c.gray.li(10)}, -- tabline stuff
-- tabline diagnostic
TabLineError {LspDiagnosticsSignError},
TabLineWarning {LspDiagnosticsSignWarning},
TabLineHint {LspDiagnosticsSignHint},
TabLineInformation {LspDiagnosticsSignInformation}, -- which-key.nvim
WhichKey {fg = c.purple}, -- nvim-compe
WhichKeySeperator {fg = c.green}, -- nvim-compe
WhichKeyGroup {fg = c.blue}, -- nvim-compe
WhichKeyDesc {fg = c.aqua}, -- nvim-compe
WhichKeyFloat {bg = c.bg1}, -- nvim-compe
CompeDocumentation {Pmenu, fg = "NONE"}, -- diffview
DiffviewNormal {NvimTreeNormal},
DiffviewStatusAdded {SignAdd},
DiffviewStatusModified {SignChange},
DiffviewStatusRenamed {SignChange},
DiffviewStatusDeleted {SignDelete},
DiffviewFilePanelInsertion {SignAdd},
DiffviewFilePanelDeletion {SignDelete},
DiffviewVertSplit {fg = c.gray, bg = c.bg},
DashboardHeader {fg = c.blue},
DashboardCenter {fg = c.purple},
DashboardFooter {fg = c.aqua},
IndentBlanklineContextChar {fg = c.gray.da(20)},
CodiVirtualText {fg = c.hint_blue}
}
end)
-- return our parsed theme for extension or use else where.
return theme
-- vi:nowrap