commit f0c2be8d63b14bfd62c8cff8f3d962da9311c372
Author: mvllow
Date: Tue May 18 11:15:39 2021 -0500
init
diff --git a/colors/rose-pine.vim b/colors/rose-pine.vim
new file mode 100644
index 0000000..7f305f5
--- /dev/null
+++ b/colors/rose-pine.vim
@@ -0,0 +1,9 @@
+lua << EOF
+package.loaded['rose-pine'] = nil
+package.loaded['rose-pine.util'] = nil
+package.loaded['rose-pine.palette'] = nil
+package.loaded['rose-pine.theme'] = nil
+package.loaded['rose-pine.functions'] = nil
+
+require('rose-pine').set()
+EOF
diff --git a/lua/rose-pine/functions.lua b/lua/rose-pine/functions.lua
new file mode 100644
index 0000000..4f00681
--- /dev/null
+++ b/lua/rose-pine/functions.lua
@@ -0,0 +1,22 @@
+if vim.g.rose_pine_variant_switch == nil then
+ vim.g.rose_pine_variant_switch = 0
+end
+
+local select_variant = function(variant)
+ vim.g.rose_pine_variant = variant
+ print("Rosé Pine", variant)
+ vim.cmd([[colorscheme rose-pine]])
+end
+
+local toggle_variant = function(variants)
+ local options = variants or { "base", "moon", "dawn" }
+
+ vim.g.rose_pine_variant_switch = (vim.g.rose_pine_variant_switch % table.getn(options)) + 1
+
+ select_variant(options[vim.g.rose_pine_variant_switch])
+end
+
+return {
+ select_variant = select_variant,
+ toggle_variant = toggle_variant,
+}
diff --git a/lua/rose-pine/init.lua b/lua/rose-pine/init.lua
new file mode 100644
index 0000000..5ea43df
--- /dev/null
+++ b/lua/rose-pine/init.lua
@@ -0,0 +1,7 @@
+local util = require('rose-pine.util')
+
+local set = function()
+ util.load()
+end
+
+return { set = set }
diff --git a/lua/rose-pine/palette.lua b/lua/rose-pine/palette.lua
new file mode 100644
index 0000000..2d13fea
--- /dev/null
+++ b/lua/rose-pine/palette.lua
@@ -0,0 +1,58 @@
+local palette = {
+ base = '#191724',
+ surface = '#1f1d2e',
+ overlay = '#26233a',
+ inactive = '#555169',
+ subtle = '#6e6a86',
+ text = '#e0def4',
+ love = '#eb6f92',
+ gold = '#f6c177',
+ rose = '#ebbcba',
+ pine = '#31748f',
+ foam = '#9ccfd8',
+ iris = '#c4a7e7',
+ highlight = '#2a2837',
+ highlight_inactive = '#211f2d',
+ highlight_overlay = '#3a384a',
+ none = 'NONE',
+}
+
+if vim.g.rose_pine_variant == 'dawn' then
+ palette = {
+ base = '#faf4ed',
+ surface = '#fffaf3',
+ overlay = '#f2e9de',
+ inactive = '#9893a5',
+ subtle = '#6e6a86',
+ text = '#575279',
+ love = '#b4637a',
+ gold = '#ea9d34',
+ rose = '#d7827e',
+ pine = '#286983',
+ foam = '#56949f',
+ iris = '#907aa9',
+ highlight = '#eee9e6',
+ highlight_inactive = '#f2ede9',
+ highlight_overlay = '#e4dfde',
+ }
+elseif vim.g.rose_pine_variant == 'moon' then
+ palette = {
+ base = '#232136',
+ surface = '#2a273f',
+ overlay = '#393552',
+ inactive = '#59546d',
+ subtle = '#817c9c',
+ text = '#e0def4',
+ love = '#eb6f92',
+ gold = '#f6c177',
+ rose = '#ea9a97',
+ pine = '#3e8fb0',
+ foam = '#9ccfd8',
+ iris = '#c4a7e7',
+ highlight = '#312f44',
+ highlight_inactive = '#2a283d',
+ highlight_overlay = '#3f3c53',
+ }
+end
+
+return palette
diff --git a/lua/rose-pine/theme.lua b/lua/rose-pine/theme.lua
new file mode 100644
index 0000000..85d5923
--- /dev/null
+++ b/lua/rose-pine/theme.lua
@@ -0,0 +1,259 @@
+local p = require('rose-pine.palette')
+
+local theme = {}
+
+theme.loadSyntax = function()
+ local syntax = {
+ Boolean = { fg = p.gold },
+ Character = { fg = p.gold },
+ Comment = { fg = p.subtle, style = 'italic' },
+ Conditional = { fg = p.pine },
+ Constant = { fg = p.gold },
+ Debug = { fg = p.rose },
+ Define = { fg = p.iris },
+ Delimiter = { fg = p.rose },
+ Error = { fg = p.love },
+ Exception = { fg = p.pine },
+ Float = { fg = p.gold },
+ Function = { fg = p.rose },
+ Identifier = { fg = p.rose },
+ -- Ignore = { fg = '' },
+ Include = { fg = p.iris },
+ Keyword = { fg = p.pine },
+ Label = { fg = p.pine },
+ Macro = { fg = p.iris },
+ Number = { fg = p.gold },
+ Operator = { fg = p.pine },
+ PreCondit = { fg = p.iris },
+ PreProc = { fg = p.iris },
+ Repeat = { fg = p.pine },
+ Special = { fg = p.rose },
+ SpecialChar = { fg = p.rose },
+ SpecialComment = { fg = p.iris },
+ Statement = { fg = p.pine },
+ StorageClass = { fg = p.foam },
+ String = { fg = p.gold },
+ Structure = { fg = p.foam },
+ Tag = { fg = p.rose },
+ Todo = { fg = p.iris },
+ Type = { fg = p.foam },
+ Typedef = { fg = p.foam },
+ Underlined = { fg = p.foam, style = 'underline' },
+
+ -- htmlH1 = { fg = '' },
+ -- htmlH2 = { fg = '' },
+ -- htmlH3 = { fg = '' },
+ -- htmlH4 = { fg = '' },
+ -- htmlH5 = { fg = '' },
+ -- htmlLink = { fg = '' },
+ -- markdownH1 = { fg = '' },
+ -- markdownH1Delimeter = { fg = '' },
+ -- markdownH2 = { fg = '' },
+ -- markdownH2Delimeter = { fg = '' },
+ -- markdownH3 = { fg = '' },
+ -- markdownH3Delimeter = { fg = '' },
+ }
+
+ return syntax
+end
+
+theme.loadEditor = function()
+ local editor = {
+ -- ColorColumn = {},
+ -- Conceal = {},
+ -- Cursor = {},
+ -- CursorColumn = {},
+ -- CursorIM = {},
+ CursorLine = { bg = p.highlight_inactive },
+ CursorLineNr = { fg = p.text },
+ DiffAdd = { fg = '', bg = '' },
+ DiffChange = { fg = '', bg = '' },
+ DiffDelete = { fg = '', bg = '' },
+ DiffText = { fg = '', bg = '' },
+ Directory = { fg = p.foam },
+ -- EndOfBuffer = {},
+ ErrorMsg = { fg = p.love, style = 'bold' },
+ -- FoldColumn = {},
+ -- Folded = {},
+ IncSearch = { bg = p.highlight },
+ LineNr = { fg = p.inactive },
+ MatchParen = { fg = p.text, bg = p.overlay },
+ -- ModeMsg = {},
+ MoreMsg = { fg = p.iris },
+ NonText = { fg = p.inactive },
+ Normal = { fg = p.text },
+ -- NormalFloat = {},
+ Pmenu = { fg = p.subtle, bg = p.surface },
+ PmenuSbar = { bg = p.overlay },
+ PmenuSel = { fg = p.text, bg = p.overlay },
+ PmenuThumb = { bg = p.inactive },
+ Question = { fg = p.gold },
+ -- QuickFixLine = {},
+ Search = { fg = p.iris, bg = p.highlight_overlay },
+ SpecialKey = { fg = p.foam },
+ -- SpellBad = {},
+ -- SpellCap = {},
+ -- SpellLocal = {},
+ -- SpellRare = {},
+ SignColumn = {},
+ -- StatusLine = {},
+ -- StatusLineNC = {},
+ -- StatusLineTerm = {},
+ -- StatusLineTermNC = {},
+ -- TabLine = {},
+ -- TabLineFill = {},
+ -- TabLineSel = {},
+ Title = { fg = p.rose },
+ VertSplit = { fg = p.overlay },
+ Visual = { bg = p.highlight },
+ -- VisualNOS = {},
+ WarningMsg = { fg = p.gold },
+ -- Whitespace = {},
+ -- WildMenu = {},
+ }
+
+ if vim.g.rose_pine_disable_background == true then
+ editor.Normal = { fg = p.text, bg = p.none }
+ editor.SignColumn = { fg = p.text, bg = p.none }
+ else
+ editor.Normal = { fg = p.text, bg = p.base }
+ editor.SignColumn = { fg = p.text, bg = p.base }
+ end
+
+ return editor
+end
+
+theme.loadTerminal = function()
+ -- black
+ vim.g.terminal_color_0 = p.overlay
+ vim.g.terminal_color_8 = p.subtle
+ -- red
+ vim.g.terminal_color_4 = p.love
+ vim.g.terminal_color_12 = p.love
+ -- green
+ vim.g.terminal_color_2 = p.pine
+ vim.g.terminal_color_10 = p.pine
+ -- yellow
+ vim.g.terminal_color_6 = p.gold
+ vim.g.terminal_color_14 = p.gold
+ -- blue
+ vim.g.terminal_color_1 = p.foam
+ vim.g.terminal_color_9 = p.foam
+ -- magenta
+ vim.g.terminal_color_5 = p.iris
+ vim.g.terminal_color_13 = p.iris
+ -- cyan
+ vim.g.terminal_color_3 = p.rose
+ vim.g.terminal_color_11 = p.rose
+ -- white
+ vim.g.terminal_color_7 = p.text
+ vim.g.terminal_color_15 = p.text
+end
+
+theme.loadTreesitter = function()
+ local treesitter = {
+ -- TSAnnotation = {},
+ -- TSAttribute = {},
+ -- TSBoolean = {},
+ -- TSCharacter = {},
+ TSComment = { fg = p.subtle },
+ -- TSConditional = {},
+ TSConstBuiltin = { fg = p.love },
+ -- TSConstMacro = {},
+ -- TSConstant = {},
+ TSConstructor = { fg = p.text },
+ -- TSEmphasis = {},
+ -- TSError = {},
+ -- TSException = {},
+ -- TSField = {},
+ -- TSFloat = {},
+ TSFuncBuiltin = { fg = p.love },
+ -- TSFuncMacro = {},
+ -- TSFunction = {},
+ -- TSInclude = {},
+ -- TSKeyword = {},
+ -- TSKeywordFunction = {},
+ -- TSLabel = {},
+ -- TSLiteral = {},
+ -- TSMethod = {},
+ -- TSNamespace = {},
+ -- TSNone = {},
+ -- TSNumber = {},
+ -- TSOperator = {},
+ -- TSParameter = {},
+ -- TSParameterReference = {},
+ -- TSProperty = {},
+ TSPunctBracket = { fg = p.subtle },
+ TSPunctDelimiter = { fg = p.subtle },
+ TSPunctSpecial = { fg = p.subtle },
+ -- TSRepeat = {},
+ -- TSStrike = {},
+ -- TSString = {},
+ TSStringEscape = { fg = p.pine },
+ -- TSStringRegex = {},
+ -- TSSymbol = {},
+ TSTag = { fg = p.foam },
+ TSTagDelimiter = { fg = p.subtle },
+ -- TSText = {},
+ -- TSTitle = {},
+ -- TSType = {},
+ -- TSTypeBuiltin = {},
+ -- TSURI = {},
+ -- TSUnderline = {},
+ -- TSVariable = {},
+ TSVariableBuiltin = { fg = p.love },
+ }
+
+ return treesitter
+end
+
+theme.loadLsp = function()
+ local lsp = {
+ LspDiagnosticsDefaultError = { fg = p.love },
+ LspDiagnosticsDefaultHint = { fg = p.iris },
+ LspDiagnosticsDefaultInformation = { fg = p.foam },
+ LspDiagnosticsDefaultWarning = { fg = p.gold },
+ LspDiagnosticsFloatingError = { fg = p.love },
+ LspDiagnosticsFloatingHint = { fg = p.iris },
+ LspDiagnosticsFloatingInformation = { fg = p.foam },
+ LspDiagnosticsFloatingWarning = { fg = p.gold },
+ LspDiagnosticsSignError = { fg = p.love },
+ LspDiagnosticsSignHint = { fg = p.iris },
+ LspDiagnosticsSignInformation = { fg = p.foam },
+ LspDiagnosticsSignWarning = { fg = p.gold },
+ LspDiagnosticsUnderlineError = { style = 'undercurl', sp = p.love },
+ LspDiagnosticsUnderlineHint = { style = 'undercurl', sp = p.iris },
+ LspDiagnosticsUnderlineInformation = { style = 'undercurl', sp = p.foam },
+ LspDiagnosticsUnderlineWarning = { style = 'undercurl', sp = p.gold },
+ LspDiagnosticsVirtualTextError = { fg = p.love },
+ LspDiagnosticsVirtualTextHint = { fg = p.iris },
+ LspDiagnosticsVirtualTextInformation = { fg = p.foam },
+ LspDiagnosticsVirtualTextWarning = { fg = p.gold },
+ LspReferenceRead = { fg = p.rose, bg = p.highlight },
+ LspReferenceText = { fg = p.rose, bg = p.highlight },
+ LspReferenceWrite = { fg = p.rose, bg = p.highlight },
+ }
+
+ return lsp
+end
+
+theme.loadPlugins = function()
+ local plugins = {
+ -- barbar.nvim
+ -- https://github.com/romgrk/barbar.nvim
+ BufferTabpageFill = { bg = p.none },
+ BufferCurrent = { fg = p.text, bg = p.overlay },
+ BufferCurrentMod = { fg = p.foam, bg = p.overlay },
+ BufferCurrentSign = { fg = p.subtle, bg = p.overlay },
+ BufferInactive = { fg = p.subtle },
+ BufferInactiveMod = { fg = p.foam },
+ BufferInactiveSign = { fg = p.subtle },
+ BufferVisible = { fg = p.subtle },
+ BufferVisibleMod = { fg = p.foam },
+ BufferVisibleSign = { fg = p.subtle },
+ }
+
+ return plugins
+end
+
+return theme
diff --git a/lua/rose-pine/util.lua b/lua/rose-pine/util.lua
new file mode 100644
index 0000000..b897fd0
--- /dev/null
+++ b/lua/rose-pine/util.lua
@@ -0,0 +1,69 @@
+local util = {}
+local theme = require('rose-pine.theme')
+
+util.highlight = function(group, color)
+ local style = color.style and 'gui=' .. color.style or 'gui=NONE'
+ local fg = color.fg and 'guifg=' .. color.fg or 'guifg=NONE'
+ local bg = color.bg and 'guibg=' .. color.bg or 'guibg=NONE'
+ local sp = color.sp and 'guisp=' .. color.sp or ''
+
+ local hl = 'highlight ' .. group .. ' ' .. style .. ' ' .. fg .. ' ' .. bg .. ' ' .. sp
+
+ vim.cmd(hl)
+ if color.link then
+ vim.cmd('highlight! link ' .. group .. ' ' .. color.link)
+ end
+end
+
+function util.load()
+ vim.cmd('hi clear')
+ if vim.fn.exists('syntax_on') then
+ vim.cmd('syntax reset')
+ end
+ if vim.g.rose_pine_variant == 'dawn' then
+ vim.o.background = 'light'
+ else
+ vim.o.background = 'dark'
+ end
+ vim.o.termguicolors = true
+ vim.g.colors_name = 'rose-pine'
+
+ local async
+ async = vim.loop.new_async(vim.schedule_wrap(function()
+ theme.loadTerminal()
+ local plugins = theme.loadPlugins()
+ local treesitter = theme.loadTreesitter()
+ local lsp = theme.loadLsp()
+
+ for group, colors in pairs(plugins) do
+ util.highlight(group, colors)
+ end
+
+ for group, colors in pairs(treesitter) do
+ util.highlight(group, colors)
+ end
+
+ for group, colors in pairs(lsp) do
+ util.highlight(group, colors)
+ end
+
+ async:close()
+ end))
+
+ -- load priority groups first
+ local editor = theme.loadEditor()
+ local syntax = theme.loadSyntax()
+
+ for group, colors in pairs(editor) do
+ util.highlight(group, colors)
+ end
+
+ for group, colors in pairs(syntax) do
+ util.highlight(group, colors)
+ end
+
+ -- load enhancements (eg. lsp, treesitter, plugins)
+ async:send()
+end
+
+return util
diff --git a/readme.md b/readme.md
new file mode 100644
index 0000000..383f1b0
--- /dev/null
+++ b/readme.md
@@ -0,0 +1,78 @@
+
+
+
Rosé Pine for Neovim
+
+
+All natural pine, faux fur and a bit of soho vibes for the classy minimalist
+
+
+
+
+
+
+
+## Installation
+
+
+## Usage
+
+1. Install via your preferred package manager
+
+```lua
+-- Packer
+use('rose-pine/nvim')
+```
+
+2. Require or set `rose-pine` colorscheme
+
+```lua
+-- Lua
+require('rose-pine').set()
+```
+
+```vim
+" Vimscript
+colorscheme rose-pine
+```
+
+## Options
+
+```lua
+-- Can be 'base', 'moon', 'dawn'
+vim.g.rose_pine_variant = 'base'
+
+-- Use terminal background
+vim.g.rose_pine_remove_background = false
+```
+
+## Functions
+
+```lua
+-- Toggle between the three variants
+require('rose-pine.functions').toggle_variant()
+
+-- Toggle between base and dawn
+require('rose-pine.functions').toggle_variant({'base', 'dawn'})
+
+-- Switch to specified variant
+require('rose-pine.functions').select_variant('moon')
+```
+
+## Gallery
+
+**Rosé Pine**
+
+
+
+**Rosé Pine Moon**
+
+
+
+**Rosé Pine Dawn**
+
+
+
+## Thanks to
+
+- [mvllow](https://github.com/mvllow)
+