*nekonight.txt*         For Neovim         Last change: 2024 December 19

==============================================================================
Table of Contents                          *nekonight-table-of-contents*

1. Neko Night                                   |nekonight-neko-night|
  - Features                            |nekonight-neko-night-features|
  - Requirements                    |nekonight-neko-night-requirements|
  - Installation                    |nekonight-neko-night-installation|
  - Usage                                  |nekonight-neko-night-usage|
  - Configuration                  |nekonight-neko-night-configuration|
  - Overriding Colors & Highlight Groups|nekonight-neko-night-overriding-colors-&-highlight-groups|
  - Extras                                |nekonight-neko-night-extras|
  - Contributing                    |nekonight-neko-night-contributing|
2. Links                                               |nekonight-links|

==============================================================================
1. Neko Night                                   *nekonight-neko-night*

A dark and light Neovim <https://github.com/neovim/neovim> theme written in Lua
<https://www.lua.org> forked and ported from tokyo night
<https://github.com/folke/tokyonight.nvim> theme. Includes
|nekonight-extra| themes for Kitty
<https://sw.kovidgoyal.net/kitty/conf.html>, Alacritty
<https://github.com/alacritty/alacritty>, iTerm <https://iterm2.com/> and Fish
<https://fishshell.com/docs/current/index.html>.

MoonStormNightDay
FEATURES                                *nekonight-neko-night-features*

- Supports the latest Neovim <https://github.com/neovim/neovim>
    0.9.0 <https://github.com/neovim/neovim/releases/tag/v0.9.0> features.
- Terminal colors.
- Supports all major plugins.
- Provides NekoNight <https://github.com/BrunoCiccarino/nekonight>
    |nekonight-extras| for numerous other applications.

Supported Plugins ~

  -----------------------------------------------------------------------
  Plugin                              Source
  ----------------------------------- -----------------------------------
  aerial.nvim                         aerial

  ale                                 ale

  alpha-nvim                          alpha

  barbar.nvim                         barbar

  blink.cmp                           blink

  bufferline.nvim                     bufferline

  nvim-cmp                            cmp

  codeium.nvim                        codeium

  copilot.lua                         copilot

  nvim-dap                            dap

  dashboard-nvim                      dashboard

  flash.nvim                          flash

  fzf-lua                             fzf

  vim-gitgutter                       gitgutter

  gitsigns.nvim                       gitsigns

  glyph-palette.vim                   glyph-palette

  grug-far.nvim                       grug-far

  headlines.nvim                      headlines

  hop.nvim                            hop

  vim-illuminate                      illuminate

  indent-blankline.nvim               indent-blankline

  indentmini.nvim                     indentmini

  lazy.nvim                           lazy

  leap.nvim                           leap

  lspsaga.nvim                        lspsaga

  mini.animate                        mini_animate

  mini.clue                           mini_clue

  mini.completion                     mini_completion

  mini.cursorword                     mini_cursorword

  mini.deps                           mini_deps

  mini.diff                           mini_diff

  mini.files                          mini_files

  mini.hipatterns                     mini_hipatterns

  mini.icons                          mini_icons

  mini.indentscope                    mini_indentscope

  mini.jump                           mini_jump

  mini.map                            mini_map

  mini.notify                         mini_notify

  mini.operators                      mini_operators

  mini.pick                           mini_pick

  mini.starter                        mini_starter

  mini.statusline                     mini_statusline

  mini.surround                       mini_surround

  mini.tabline                        mini_tabline

  mini.test                           mini_test

  mini.trailspace                     mini_trailspace

  nvim-navic                          navic

  neo-tree.nvim                       neo-tree

  neogit                              neogit

  neotest                             neotest

  noice.nvim                          noice

  nvim-notify                         notify

  nvim-tree.lua                       nvim-tree

  octo.nvim                           octo

  rainbow-delimiters.nvim             rainbow

  render-markdown.nvim                render-markdown

  nvim-scrollbar                      scrollbar

  snacks.nvim                         snacks

  vim-sneak                           sneak

  supermaven-nvim                     supermaven

  telescope.nvim                      telescope

  nvim-treesitter-context             treesitter-context

  trouble.nvim                        trouble

  vimwiki                             vimwiki

  which-key.nvim                      which-key

  yanky.nvim                          yanky
  -----------------------------------------------------------------------
Extras ~

  -----------------------------------------------------------------------
  Tool                                Extra
  ----------------------------------- -----------------------------------
  Aerc                                extras/aerc

  Alacritty                           extras/alacritty

  Delta                               extras/delta

  (Better-)Discord                    extras/discord

  Dunst                               extras/dunst

  Fish                                extras/fish

  Fish Themes                         extras/fish_themes

  Foot                                extras/foot

  Fuzzel                              extras/fuzzel

  Fzf                                 extras/fzf

  Ghostty                             extras/ghostty

  GitUI                               extras/gitui

  GNOME Terminal                      extras/gnome_terminal

  Helix                               extras/helix

  iTerm                               extras/iterm

  Kitty                               extras/kitty

  Lazygit                             extras/lazygit

  Lua Table for testing               extras/lua

  Prism                               extras/prism

  process-compose                     extras/process_compose

  Slack                               extras/slack

  Spotify Player                      extras/spotify_player

  Sublime Text                        extras/sublime

  Terminator                          extras/terminator

  Termux                              extras/termux

  Tilix                               extras/tilix

  Tmux                                extras/tmux

  Vim                                 extras/vim

  Vimium                              extras/vimium

  WezTerm                             extras/wezterm

  Windows Terminal                    extras/windows_terminal

  Xfce Terminal                       extras/xfceterm

  Xresources                          extras/xresources

  Yazi                                extras/yazi

  Zathura                             extras/zathura

  Zellij                              extras/zellij
  -----------------------------------------------------------------------

REQUIREMENTS                        *nekonight-neko-night-requirements*

- Neovim <https://github.com/neovim/neovim> >=
    0.8.0 <https://github.com/neovim/neovim/releases/tag/v0.8.0>


INSTALLATION                        *nekonight-neko-night-installation*

Install the theme with your preferred package manager, such as folke/lazy.nvim
<https://github.com/folke/lazy.nvim>

>lua
    {
      "BrunoCiccarino/nekonight",
      lazy = false,
      priority = 1000,
      opts = {},
    }
<


USAGE                                      *nekonight-neko-night-usage*

>lua
    vim.cmd[[colorscheme nekonight]]
<

>vim
    colorscheme nekonight
    
    " There are also colorschemes for the different styles.
    colorscheme nekonight-night
    colorscheme nekonight-storm
    colorscheme nekonight-day
    colorscheme nekonight-moon
<

Some plugins need extra configuration to work with **nekonight**.

Click here for more details ~


BARBECUE ~

>lua
    -- Lua
    require('barbecue').setup {
      -- ... your barbecue config
      theme = 'nekonight',
      -- ... your barbecue config
    }
<


LUALINE ~

>lua
    -- Lua
    require('lualine').setup {
      options = {
        -- ... your lualine config
        theme = 'nekonight'
        -- ... your lualine config
      }
    }
<


LIGHTLINE ~

>vim
    " Vim Script
    let g:lightline = {'colorscheme': 'nekonight'}
<


CONFIGURATION                      *nekonight-neko-night-configuration*


  [!IMPORTANT] Set the configuration **BEFORE** loading the color scheme with
  `colorscheme nekonight`.
The theme offers four styles: |nekonight-storm|, |nekonight-moon|,
|nekonight-night|, and |nekonight-day|.

The |nekonight-day| style is used when `{ style = "day" }` is passed to
`setup(options)` or when `vim.o.background = "light"`.

nekonight <https://github.com/BrunoCiccarino/nekonight> uses the default options,
unless `setup` is explicitly called.

Default Options ~

>lua
    ---@class nekonight.Config
    ---@field on_colors fun(colors: ColorScheme)
    ---@field on_highlights fun(highlights: nekonight.Highlights, colors: ColorScheme)
    M.defaults = {
      style = "moon", -- The theme comes in three styles, `storm`, a darker variant `night` and `day`
      light_style = "day", -- The theme is used when the background is set to light
      transparent = false, -- Enable this to disable setting the background color
      terminal_colors = true, -- Configure the colors used when opening a `:terminal` in Neovim
      styles = {
        -- Style to be applied to different syntax groups
        -- Value is any valid attr-list value for `:help nvim_set_hl`
        comments = { italic = true },
        keywords = { italic = true },
        functions = {},
        variables = {},
        -- Background styles. Can be "dark", "transparent" or "normal"
        sidebars = "dark", -- style for sidebars, see below
        floats = "dark", -- style for floating windows
      },
      day_brightness = 0.3, -- Adjusts the brightness of the colors of the **Day** style. Number between 0 and 1, from dull to vibrant colors
      dim_inactive = false, -- dims inactive windows
      lualine_bold = false, -- When `true`, section headers in the lualine theme will be bold
    
      --- 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 nekonight.Highlights
      ---@param colors ColorScheme
      on_highlights = function(highlights, colors) end,
    
      cache = true, -- When set to true, the theme will be cached for better performance
    
      ---@type table<string, boolean|{enabled:boolean}>
      plugins = {
        -- enable all plugins when not using lazy.nvim
        -- set to false to manually enable/disable plugins
        all = package.loaded.lazy == nil,
        -- uses your plugin manager to automatically enable needed plugins
        -- currently only lazy.nvim is supported
        auto = true,
        -- add any plugins here that you want to enable
        -- for all possible plugins, see:
        --   * https://github.com/BrunoCiccarino/nekonight/tree/main/lua/nekonight/groups
        -- telescope = true,
      },
    }
<


OVERRIDING COLORS & HIGHLIGHT GROUPS*nekonight-neko-night-overriding-colors-&-highlight-groups*

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 storm
<extras/lua/nekonight_storm.lua>, moon <extras/lua/nekonight_moon.lua>, night
<extras/lua/nekonight_night.lua>, and day <extras/lua/nekonight_day.lua>
themes.

Settings & Changing Colors ~

>lua
    require("nekonight").setup({
      -- use the night style
      style = "night",
      -- disable italic for functions
      styles = {
        functions = {}
      },
      -- 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 ~

>lua
    require("nekonight").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,
    })
<

Fix undercurls in Tmux ~

To have undercurls show up and in color, add the following to your Tmux
<https://github.com/tmux/tmux> configuration file:

>sh
    # Undercurl
    set -g default-terminal "${TERM}"
    set -as terminal-overrides ',*:Smulx=\E[4::%p1%dm'  # undercurl support
    set -as terminal-overrides ',*:Setulc=\E[58::2::::%p1%{65536}%/%d::%p1%{256}%/%{255}%&%d::%p1%{255}%&%d%;m'  # underscore colours - needs tmux-3.0
<


EXTRAS                                    *nekonight-neko-night-extras*

Extra color configs for Kitty <https://sw.kovidgoyal.net/kitty/conf.html>,
Alacritty <https://github.com/alacritty/alacritty>, Fish
<https://fishshell.com/docs/current/index.html>, WezTerm
<https://wezfurlong.org/wezterm/config/files.html>, iTerm <https://iterm2.com/>
and foot <https://codeberg.org/dnkl/foot> can be found in extras <extras/>. To
use them, refer to their respective documentation.

You can easily use the color palette for other plugins inside your Neovim
<https://github.com/neovim/neovim> configuration:

>lua
    local colors = require("nekonight.colors").setup() -- pass in any of the config options as explained above
    local util = require("nekonight.util")
    
    aplugin.background = colors.bg_dark
    aplugin.my_error = util.lighten(colors.red1, 0.3) -- number between 0 and 1. 0 results in white, 1 results in red1
<


CONTRIBUTING                        *nekonight-neko-night-contributing*

Pull requests are welcome.

For the |nekonight-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:

1. Create a file like `lua/nekonight/extra/cool-app.lua`.


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


3. Run the following command to generate new |nekonight-extra| themes from
the nekonight plugin directory:

>sh
    ./scripts/build
<


4. Check the newly created themes in the `extra/` directory. Please **DO NOT**
commit them, as they are already automatically built by the CI.



==============================================================================
2. Links                                               *nekonight-links*

1. *image*: https://user-images.githubusercontent.com/292349/115395546-d8d6f880-a198-11eb-98fb-a1194787701d.png

Generated by panvimdoc <https://github.com/kdheepak/panvimdoc>

vim:tw=78:ts=8:noet:ft=help:norl: