Skip to content

Neovim theme inspired in Palenight, support a lot of plugins out-of-the-box. Includes themes for iTerm2, Alacritty, Kitty, Fish and others.

License

Notifications You must be signed in to change notification settings

pauchiner/pastelnight.nvim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

pastelnight logo

PastelNight

A Neovim theme inspired on the original Palenight theme, fully written in Lua.

Includes themes for Kitty, Alacritty, iTerm2 and Fish.

🎨 Colors

This palette is improved from the original 16 colors to a 40 shades of those, ensuring compability with more plugins and a smooth contrast experience.

pastelnight palette

See the figma document

✨ Features

  • Enhances terminal colors.
  • Supports all major plugins.
  • Supports the latest Neovim 0.9.0 features.
  • Provides extra themes for numerous other applications.

🍬 Extras

⚑️ Quick Start

βœ‹ Requirements

πŸ› οΈ Installation

First install the theme with your preferred package manager:

πŸ’€ lazy.nvim

{
  "pauchiner/pastelnight.nvim",
  lazy = false,
  priority = 1000,
  opts = {},
}

πŸš€ Usage

VimScript
colorscheme pastelnight

" There are also a theme variant with greater contrast
colorscheme pastelnight-high-contrast
Lua
vim.api.nvim_command [[colorscheme pastelnight]]

-- There are also a theme variant with greater contrast
vim.api.nvim_command [[colorscheme pastelnight-high-contrast]]

πŸ”Œ Other supported plugins

require('barbecue').setup {
  theme = 'pastelnight',
}
require('lualine').setup {
  options = {
    theme = 'pastelnight'
  }
}
let g:lightline = {'colorscheme': 'pastelnight'}

βš™οΈ Configuration

Warning

Set the configuration before loading the color scheme with colorscheme pastelnight.

PastelNight uses the default options, unless setup is explicitly called.

Default options

require("pastelnight").setup({

  --- The theme comes in two styles, `default` and `highContrast`.
  style = "default"

  --- Enable this to disable setting the background color.
  transparent = false,

  --- Configure the colors used when opening a `:terminal`.
  terminal_colors = true,

  styles = {

    --- Style to be applied to different syntax groups.
    comments = { italic = true },
    keywords = { italic = true },
    functions = {},
    variables = {},

    --- Background styles. Can be 'dark', 'transparent' or 'normal'.
    sidebars = "dark",
    floats = "dark",
  },

  --- Set a darker background on sidebar-like windows. ['terminal', 'packer'...].
  sidebars = { "qf", "help" },

  --- Enabling this option, will hide inactive statuslines and replace them
  ---with a thin border instead.
  hide_inactive_statusline = false,

  --- dims inactive windows.
  dim_inactive = false,

  --- When true, section headers in the lualine theme will be bold.
  lualine_bold = false,

  --- You can override specific color groups to use other groups or a hex color,
  --- function will be called with a ColorScheme table.
  ---@param colors ColorScheme
  on_colors = function(colors) end,

  --- You can override specific highlights to use other groups or a hex color,
  --- function will be called with a Highlights and ColorScheme table.
  ---@param highlights Highlights
  ---@param colors ColorScheme
  on_highlights = function(highlights, colors) end,
})

πŸͺ“ Overriding Colors & Highlights

How the highlight groups are calculated:

  1. colors are determined based on your configuration, with the ability to override them using config.on_colors(colors).
  2. These colors are utilized to generate the highlight groups.
  3. config.on_highlights(highlights, colors) can be used to override highlight groups.

For default values of colors and highlights, please consult the colors and highlights files.

Settings and color alteration demonstration

require("pastelnight").setup({
  --- Change the "hint" color to the "orange" color, and make the "error" color bright red
  on_colors = function(colors)
    colors.hint = colors.orange
    colors.error = "#ff0000"
  end
})

Borderless Telescope example

require("pastelnight").setup({
  on_highlights = function(hl, c)
    local prompt = "#2d3149"
    hl.TelescopeNormal = {
      bg = c.bg_dark,
      fg = c.fg_dark,
    }
    hl.TelescopeBorder = {
      bg = c.bg_dark,
      fg = c.bg_dark,
    }
    hl.TelescopePromptNormal = {
      bg = prompt,
    }
    hl.TelescopePromptBorder = {
      bg = prompt,
      fg = prompt,
    }
    hl.TelescopePromptTitle = {
      bg = prompt,
      fg = prompt,
    }
    hl.TelescopePreviewTitle = {
      bg = c.bg_dark,
      fg = c.bg_dark,
    }
    hl.TelescopeResultsTitle = {
      bg = c.bg_dark,
      fg = c.bg_dark,
    }
  end,
})

⚠️ Common Issues

Fix undercurls in tmux

To have undercurls show up and in color, add the following to your Tmux configuration file:

set -g default-terminal "${TERM}"
set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'

Also you can enable undescore colors but this needs tmux 3.0

set -as terminal-overrides ',*:Setulc=\E[58::2::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'

🀝 Contributing

All contributions are welcome:

CONTRIBUTING.md

CODE_OF_CONDUCT.md

🍬 Creating new extras

For the extras, we use a simple template system that can be used to generate themes for the different styles.

How to add a new extra template:

Create a file like lua/pastelnight/extra/cool-app.lua.

Add the name and output file extension to the extras table in lua/pastelnight/extra/init.lua.

Run the following command to generate new extra themes from the pastelnight plugin directory:

nvim --headless "+lua require('pastelnight.extra').setup()" +qa

Check the newly created themes in the extra/ directory.

Caution

Please DO NOT commit them, as they are already automatically built by the CI.

πŸ“ƒ Credits

🎨 Original Design

This theme is highly inspired by the original theme Palenight from Olaolu Olawuyi.

πŸ—οΈ Code Structure

The structure of this plugin is based on the Tokyo Night Theme from Folke Lemaitre, take a look of his work please.

🐾 Hsl support

The way of implement and create the color palette is inspired on the new Solarized Osaka Theme from Takuya Matsuyama, see he's profile to know more.


With πŸ’œ by Pau GarcΓ­a Chiner