base16-nvim icon indicating copy to clipboard operation
base16-nvim copied to clipboard

base16 color schemes in Lua for Neovim

base16-nvim

A Lua port of base16-vim for Neovim.

Update procedure

In order to always be testing the latest and greatest version of these color schemes, I add this repo as a submodule to my dotfiles repository, and work out of there. The script for actually rebuilding schemes is stored in the superproject.

Tracking upstream template updates

Examples of "backports" of changes made in base16-vim:

The basic pattern is:

  1. Make the changes to the templates/default.mustache template in this repo (ie. in the submodule). This requires a decision for how to port the Vimscript of each upstream change into Lua.

  2. Copy the new template up to the superproject's working area by running this (from the superproject root):

    cp \
      aspects/nvim/files/.config/nvim/pack/bundle/opt/base16-nvim/templates/default.mustache \
      vendor/base16-templates/base16-nvim/templates
    
  3. Run NO_CLONE=1 support/base16-builder.rb in the superproject. The NO_CLONE stops the changed template that was copied in the previous step from being updated.

  4. Commit the changes in the base16-nvim submodule:

    cd aspects/nvim/files/.config/nvim/pack/bundle/opt/base16-nvim
    git commit -p
    git push
    cd -
    
  5. Produce a dotfiles commit (example: d0da206692f96e19):

    git add aspects/nvim/files/.config/nvim/pack/bundle/opt/base16-nvim
    git commit
    
  6. Clean up the working area in the superproject:

    cd vendor/base16-templates/base16-nvim
    git fetch
    git reset --hard origin/main
    cd -
    

Tracking upstream scheme updates

Examples of updating when new schemes are added, or existing schemes changed, upstream:

These updates are straightforward:

  1. In my dotfiles, update the list of templates and the list of schemes:

    (cd vendor/base16-templates-source && git pull)
    (cd vendor/base16-schemes-source && git pull)
    
  2. Run support/base16-builder.rb.

  3. Commit the changes in my base16-nvim submodule:

    cd aspects/nvim/files/.config/nvim/pack/bundle/opt/base16-nvim
    git commit -p
    git push
    cd -
    
  4. Produce a dotfiles commit (example: 7b26cdbf8ee35459):

    git add aspects/nvim/files/.config/nvim/pack/bundle/opt/base16-nvim
    git add vendor/base16-{templates,schema}-source
    git commit