Skip to content

StarryLeo/snow

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

snow

a blue-tinted winter vimscape


screenshot of the snow vim theme, light version


screenshot of the snow vim theme, dark version

Normal bg Identifier Normal bg
ColorColumn Special ColorColumn
MatchParen Statement MatchParen
Comment PreProc Comment
Normal fg Constant Normal fg
Cursor Type Cursor
Search Spell Search

because red is the color of life, reddish text is for...

     names, which give life to abstractions (like variables and functions)

     types ("meta-names" ), such as variable type (int, char...) or storage class (static, register...)


because gold is a special color, gold text is for...

     specials (elements that unlock special features), such as delimiters and debug statements


because green is the color of proceeding with action, greenish text is for...

     statements (the magic "action words" of code), such as conditions (if, then...) or loops (for, do...)

     meta-statements ("meta-actions", or "meta-magic" ), such as macros and "include module" statements


because blue is the calm color of sea and sky, evoking enduring constancy, blue text is for...

     constants (values that are fixed in place), such as booleans, integers, and strings


primary colors of the standard additive model ( red, green, blue) are thus assigned to "regular" elements,
while secondary colors ( magenta, yellow, cyan) are assigned to "elevated" (meta/special) elements


This logic is replicated in the cosmic_latte theme.

installation

If you don’t have a preferred plugin management method, consider vim-plug, which can be installed (on *nix systems) with:

curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
  https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim

Having installed vim-plug, snow can be installed by adding the following to the top of your vimrc...

call plug#begin('~/.vim/plugged')
Plug 'nightsense/snow'
call plug#end()

...then restarting vim, followed by running :PlugUpdate (at the vim command line).

activation

For a snow day, add the following to vimrc:

set background=light
colorscheme snow

For a snowy evening:

set background=dark
colorscheme snow

To set the background automatically based on the time at which vim is launched:

if strftime('%H') >= 7 && strftime('%H') < 19
  set background=light
else
  set background=dark
endif
colorscheme snow

...which activates the light version of snow during the day (defined here as 7AM-7PM), dark version at night.

Be sure to set colorscheme after background, otherwise some theme colors may not be applied.

status line themes

snow comes with themes for airline and lightline, which can be activated with the following vimrc code:

airline lightline
light let g:airline_theme='snow_light' let g:lightline = { 'colorscheme': 'snow_light' }
dark let g:airline_theme='snow_dark' let g:lightline = { 'colorscheme': 'snow_dark' }

Status line themes can be added to the time-based snippet above:

if strftime('%H') >= 7 && strftime('%H') < 19
  set background=light
  let g:lightline = { 'colorscheme': 'snow_light' }
else
  set background=dark
  let g:lightline = { 'colorscheme': 'snow_dark' }
endif
colorscheme snow

terminal vim

colors

Terminals/multiplexers with true-color support can display the exact colors of the snow theme.

In most cases, the only vimrc setting you need is:

set termguicolors

In some cases you'll also need (see :h xterm-true-color for explanation):

let &t_8f = "\<Esc>[38;2;%lu;%lu;%lum"
let &t_8b = "\<Esc>[48;2;%lu;%lu;%lum"

If termguicolors is not set, terminal vim will fall back to a rough approximation of snow, drawing from the terminal emulator's 256-color palette (if present).

The fallback version of snow defines colors using numbers in the range 0-255 (as opposed to 6-character hex codes, whose range of 224 values is known as "true color"). Terminal emulators with 256-color support understand this encoding, though they vary in the exact color associated with each number. The closest thing to a standard 256-color *nix palette is that used by xterm, the default X Windows terminal emulator.

cursor shape

To set mode-specific cursor shapes in terminal vim, see the Vim Tips Wiki.

For instance, to set cursor shapes in vte-compatible terminals, you could add to vimrc:

let &t_SI = "\<Esc>[6 q"
let &t_SR = "\<Esc>[4 q"
let &t_EI = "\<Esc>[2 q"

...which sets the cursor to a vertical line for insert mode, underline for replace mode, and block for normal mode.

shell

colors

Many terminal emulators can be themed by sourcing the color-setting shell scripts included with snow. The path to these scripts will depend on your plugin management method.

For instance, if you use vim-plug and want to apply the dark snow theme to your bash or zsh shell, add the following to ~/.bashrc or ~/.zshrc:

[ -n "$PS1" ] && sh ~/.vim/plugged/snow/shell/snow_dark.sh

Or for the fish shell, add to ~/.config/fish/config.fish:

if status --is-interactive
  sh ~/.vim/plugged/snow/shell/snow_dark.sh
end

If you use vundle, replace plugged in the above paths with bundle.

Replace dark with light for the light theme.

dircolors

The text highlighting used by the ls command (for distinguishing file types) can be themed by sourcing the "dircolors" file included with snow. The path to this file will depend on your plugin management method.

For instance, if you use vim-plug and want to apply the snow dircolors to your bash or zsh shell, add the following to ~/.bashrc or ~/.zshrc:

eval `dircolors ~/.vim/plugged/snow/shell/dircolors`

Or for the fish shell, add to ~/.config/fish/config.fish:

eval (dircolors -c ~/.vim/plugged/snow/shell/dircolors)

If you use vundle, replace plugged in the above paths with bundle.

fish syntax

Again, the script path will depend on your plugin management method.

For the dark theme in a vim-plug setup, add to ~/.config/fish/config.fish:

source ~/.vim/plugged/snow/shell/snow_dark.fish

ports

building from source

From the templates directory, run: fish generate.fish.

Dependencies:

  • fish shell
  • colormath Python module

               

The 4.5:1 W3C contrast ratio standard for readability is met by all text/background combinations, with the exception of some transient highlighting (e.g. cursorline/column), which nonetheless well exceeds the minimal ISO 3:1 standard.
image credit: snowflake macrophoto by Olga & Alexey (CC BY-NC 2.0)

About

❄ a blue-tinted winter vimscape (low-contrast vim theme/colorscheme)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Vim Script 52.4%
  • Python 32.1%
  • Shell 15.5%