ray-x/starry.nvim

github github
colorschemetreesitter-colorschemes
stars 206
issues 2
subscribers 5
forks 3
CREATED

2021-12-02

UPDATED

2 months ago


🌠🌌 Starry 🌌🌠

A collection of colorschemes for neovim (Neovim 8.0+ required), written in lua. This first version of starry plugin was built based on

Following colorschemes were added later on:

  • Moonlight (Low contrast bluish clean and elegant color theme)
  • Dracula & Dracula_blood theme
  • Monokai (Based on Sublime Build 3)
  • Mariana (The latest Sublime (Build 4) builtin color scheme) and Mariana_lighter
  • Emerald (Low contrast green color scheme)
  • Middlenight_blue (The theme to use in middle night)
  • Earlysummer (more vivid colors) and Earlysummer_lighter
  • Darksolar (dark solarized)
  • Ukraine yellow text on blue background

Why this repo:

  • All-In-One
  • Better color contrast and easy for eyes tuning for material.nvim and moonlight.nvim
  • Colorscheme color random loading (loading from Deep ocean, Oceanic, Palenight, Lighter, Darker, moonlight, dracula, monokai, mariana, emerald, middlenight_blue, earlysummer randomly )
  • Built with latest neovim API
  • Tracking latest neovim/lsp/treesitter highlight updates. e.g. NormalFloat, FloatShadow, LspReferenceRead/Write
  • Random loading
  • Daylight mode, tune the color for daytime
  • Transparent background ready

Credits:

  • marko-cerovac For the material color palettes. The lua color scheme framework
  • shaunsingh for his work of schemes based on material

The basic color palettes of material is from material.vim

material.vim

moonlight.nvim

transparent mode

moonlight color palette

non-transparent mode

Dracula

Color palettes from github.com/dracula/vim darcula

Dracula_blood

reddish tone of dracula blood

Monokai

Color palettes from colors/monokai.vim

monokai

Mariana

The sublime 4.0 default color scheme

Color palettes from twolfson/sublime-files

mariana

mariana2

Please check README of starry.nvim project for setups.

Emerald

I heard green can reduce eye strain :-P

Middlenight_blue

middlenight

Earlysummer

Colorful colorscheme

Earlysummer

Dark solar

Bluish colorscheme

Nighttime and daytime

Some of the scheme allow choose nighttime and day time mode, you can set starry_daylight_switch to true to turn on this feature. Here is an example for nighttime and daytime for earlysummer color scheme

night time and day time

limestone

The only light colorschem

limestone colorscheme

Ukraine

Yellow text on blue background. Color palette from Ukraine nation flag.

Supported Plugins

All the plugins supported by starry.nvim, e.g. Treesitter, LSP, Telescope, NvimTree...

nvim-cmp:

image

install

Plug

Plug 'ray-x/starry.nvim'

packer:

use {'ray-x/starry.nvim', setup = function()
-- see example setup below
vim.g.starry_italic_comments = true
...
end}

Example Setup

Note: vim way of setting up global variable is deprecated, please use lua way to setup color scheme

local config = {
  border = false, -- Split window borders
  italics = {
    comments = false, -- Italic comments
    strings = false, -- Italic strings
    keywords = false, -- Italic keywords
    functions = false, -- Italic functions
    variables = false -- Italic variables
  },

  contrast = { -- Select which windows get the contrast background
    enable = true, -- Enable contrast
    terminal = true, -- Darker terminal
    filetypes = {}, -- Which filetypes get darker? e.g. *.vim, *.cpp, etc.
  },

  text_contrast = {
    lighter = false, -- Higher contrast text for lighter style
    darker = false -- Higher contrast text for darker style
  },

  disable = {
    background = false, -- true: transparent background
    term_colors = false, -- Disable setting the terminal colors
    eob_lines = false -- Make end-of-buffer lines invisible
  },

  style = {
    name = 'moonlight', -- Theme style name (moonlight, earliestsummer, etc.)
    -- " other themes: dracula, oceanic, dracula_blood, 'deep ocean', darker, palenight, monokai, mariana, emerald, middlenight_blue
    disable = {},  -- a list of styles to disable, e.g. {'bold', 'underline'}
    fix = true,
    darker_contrast = false, -- More contrast for darker style
    daylight_swith = false, -- Enable day and night style switching
    deep_black = false, -- Enable a deeper black background
  },

  custom_colors = {
    variable = '#f797d7',
  },
  custom_highlights = {
    LineNr = { fg = '#777777' },
    Idnetifier = { fg = '#ff4797' },
  }
}
require('starry').setup(config)

Toggle style

```vim
:colorscheme starry        " this allow pickup a colorscheme randomly
:colorscheme mariana        " this allow switch to mariana

or

:lua require('starry.functions').toggle_style()

or

:Starry

Change to specific style

:Starry dracula_blood
lua require('starry.functions').change_style("dracula_blood")

override default color group, please also check material.nvim Configuration Example:

local starry = require 'starry'
local colors = require 'starry.colors'

starry.setup{
    custom_highlights = {
        LineNr = { bg = '#9F809E' }
        CursorLine = { fg = colors.editor.constrast , underline = true },

        -- This is a list of possible values
        -- override @string of treesitter
        @string = {
            fg = "#339922", -- foreground color
            bg = "NONE", -- background color
            sp = "#779988", -- special color (for colored underlines, undercurls...)
            bold = false, -- make group bold
            italic = false, -- make group italic
            underline = false, -- make group underlined
            undercurl = false, -- make group undercurled
            underdot = false, -- make group underdotted
            underdash = false -- make group underslashed
            striketrough = false, -- make group striked trough
            reverse = false, -- reverse the fg and bg colors
            link = "Comment" -- link to some other highlight group
        }
    },

    -- Custom colors must be a function that takes in the default colors table as
    -- a paramter, and then modifies them.
    -- To se the available colors, see lua/material/colors/init.lua
    custom_colors = function(colors)
        colors.editor.bg = "#SOME_COLOR"
        colors.main.purple = "#SOME_COLOR"
        colors.lsp.error = "#SOME_COLOR"
    end
}
vim.cmd('colorscheme oceanic')