"Mayan Smoke" Vim Color Scheme

Submitted by Jeet Sukumaran on Fri, 04/16/2010 - 21:46

This is "Mayan Smoke", my current GUI-mode Vim color scheme.

This is a pleasant and ergonomic light-background color scheme, designed for long hours of coding and working. The UI elements are muted without being drab, the syntax elements are colorful without being garish, and the background is relaxing without being soporific. It is of a low-enough contrast so as not to cause eye-burn, but high-enough contrast so as not to cause eye-strain. The syntax coloration offers just a little higher resolution than most, distinguishing between class names vs. functions, strings and numbers vs. other constants, etc.

Many of the colors in this color scheme are drawn from Mayan murals, paintings and codices, and thus the name.

Click on each of the images below for a larger view.

You can download the color scheme from the Vim site.

Comments

7 comments posted
using :%s

Hi Jeet- thank you for your color schemes. I especially like the Mayan Smoke, but I am having one problem: when I use :%s..../gc to find & replace, all of the found terms are highlighted the same way-- that is, I can't tell which change Vim is asking me to confirm. If you get a chance, I would love to learn how to change this. Thank you!

Posted by Laurie (not verified) on Thu, 09/22/2011 - 08:07
The reason is that

The reason is that "IncSearch" and "Search" are mapped to the same color. By assigning one of this to a different color you will get the behavior you want.

Posted by Jeet Sukumaran on Sun, 10/02/2011 - 14:30
Thanks!

I will study it

Posted by larsen (not verified) on Sun, 10/17/2010 - 05:46
Statusline

Really nice and elegant theme, thank you.
Could you publish your statusline configuration ?

Posted by larsen (not verified) on Sat, 10/16/2010 - 12:06
Status Line

Hi larsen,

It changes all the time, but currently it is given by the following in my "~/.vimrc":

call jeetlib#_UI_StatusLine_DefineSpecialHighlights()
if has("autocmd")
    au ColorScheme * call jeetlib#_UI_StatusLine_DefineSpecialHighlights()
endif
set statusline=%!jeetlib#_UI_StatusLine_Compose()

And the following in my "~/.vim/autoload/jeetlib.vim":

" Status Line {{{2
" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

" Configuration variables.
let g:_js_statusline_filepath_detail = 0
let g:_js_statusline_show_byte_and_syntax = 0

" Define color for status line alerts.
function! jeetlib#_UI_StatusLine_DefineSpecialHighlights()
    highlight! StatusLineAlert
        \ gui=NONE guifg=white guibg=firebrick3
        \ cterm=bold ctermfg=white ctermbg=red
    highlight! StatusLineUnalert
        \ gui=NONE guifg=#a0a090 guibg=#444444
        \ cterm=NONE ctermfg=black ctermbg=white
    highlight! link WindowLineNum StatusLine
    highlight! link StatusLineSeparator LineNr
endfunction

" Toggle file path detail.
function! jeetlib#_UI_StatusLine_CycleFilePathDetail()
    if g:_js_statusline_filepath_detail >= 2
        let g:_js_statusline_filepath_detail = 0
    else
        let g:_js_statusline_filepath_detail += 1
    endif
    if g:_js_statusline_filepath_detail >= 2
        echo "(statusline: full file path)"
    elseif g:_js_statusline_filepath_detail >= 1
        echo "(statusline: relative file path)"
    else
        echo "(statusline: file name only)"
    endif
endfunction

function! jeetlib#_UI_StatusLine_BufferNumIfModified()
    if &modified
        return ' ' . bufnr("%") . ' '
    else
        return ""
    endif
endfunction

function! jeetlib#_UI_StatusLine_BufferNumIfUnmodified()
    if !&modified
        return ' ' . bufnr("%") . ' '
    else
        return ""
    endif
endfunction

function! jeetlib#_UI_StatusLine_WindowNum()
    return ' ' . winnr() . " "
endfunction

" Compose status line.
function! jeetlib#_UI_StatusLine_Compose()

    " clear
    let l:line = ""

    " window number
    let l:line .= "%#StatusLineSeparator#|"
    let l:line .= "%#WindowLineNum#%{jeetlib#_UI_StatusLine_WindowNum()}"
    let l:line .= "%#StatusLineSeparator#|%0*"

    " buffer number
    let l:line .= "%#StatusLineAlert#%{jeetlib#_UI_StatusLine_BufferNumIfModified()}%0*"
    let l:line .= "%#StatusLineUnalert#%{jeetlib#_UI_StatusLine_BufferNumIfUnmodified()}%0*"
    let l:line .= "%#StatusLineSeparator#|%0*"

    " filepath
    let l:line .= ' "'
    if g:_js_statusline_filepath_detail >= 2
        let l:line .= '%F'
    elseif g:_js_statusline_filepath_detail >= 1
        let l:line .= '%f'
    else
        let l:line .= '%t'
    endif
    let l:line .= '" '

    " truncate here
    let l:line .= ' %<'

    " remainder of line is right-aligned
    let l:line .= '%='

    " file meta info
    let l:line .= "[%{strlen(&ft)?&ft: 'none'}|%{strlen(&fenc)?&fenc:&enc}|%{&fileformat}]"

    " " optional: byte value and syntax highlight type
    " if exists("g:_js_statusline_show_byte_and_syntax") && g:_js_statusline_show_byte_and_syntax
    "     set statusline+=\ \|\ chr\(%b\)
    "     set statusline+=\:\'%{synIDattr(synID(line('.'),col('.'),1),'name')}\'
    " endif

    " display info
    let l:line .= " ["
    let l:line .= "%{&wrap ?'+' : '-'}wrap|"
    let l:line .= "%{&expandtab ? '+' : '-'}xtab|"
    let l:line .= "%{&foldenable ? '+' : '-'}"
    if &foldmethod == "manual"
        let l:line .= "man"
    elseif &foldmethod == "indent"
        let l:line .= "ind"
    elseif &foldmethod == "expr"
        let l:line .= "exp"
    elseif &foldmethod == "marker"
        let l:line .= "mrk"
    elseif &foldmethod == "syntax"
        let l:line .= "syn"
    elseif &foldmethod == "diff"
        let l:line .= "dif"
    elseif &foldmethod == ""
        let l:line .= "---"
    else
        let l:line .= &foldmethod
    endif
    let l:line .= ":" . &foldlevel
    let l:line .= "]"

    " position
    let l:line .= " | "
    let line .= 'L:%l/%L, C:%c '

    " done
    return l:line

endfunction

" 2}}}
Posted by Jeet Sukumaran on Sun, 10/17/2010 - 02:15
Font?

Hi Jeet, thanks for this very nice color scheme. What font are you using?

Posted by Bastian (not verified) on Thu, 09/16/2010 - 13:50
It is Consolas/Inconsolata

Consolas is the Microsoft version, and I believe that Inconsolata is an open source clone?

Posted by Jeet Sukumaran on Sat, 09/18/2010 - 11:15

Post new comment

The content of this field is kept private and will not be shown publicly.
CAPTCHA
This question is for testing whether you are a biological visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.