diff --git a/autoload/airline/extensions/cursormode.vim b/autoload/airline/extensions/cursormode.vim index e1f227f7..3f3f7f1a 100644 --- a/autoload/airline/extensions/cursormode.vim +++ b/autoload/airline/extensions/cursormode.vim @@ -40,8 +40,12 @@ endfunction let s:iTerm_escape_template = '\033]Pl%s\033\\' let s:xterm_escape_template = '\033]12;%s\007' +function! s:get_mode() + return call(get(g:, 'cursormode_mode_func', 'mode'), []) +endfunction + function! airline#extensions#cursormode#set(...) - let mode = mode() + let mode = s:get_mode() if mode !=# s:last_mode let s:last_mode = mode call s:set_cursor_color_for(mode) diff --git a/doc/airline.txt b/doc/airline.txt index 10aac906..baba6800 100644 --- a/doc/airline.txt +++ b/doc/airline.txt @@ -1035,12 +1035,28 @@ neomake ------------------------------------- *airline-cursormode* cursormode -Displays cursor in different colors depending on the current mode (only works -in terminals iTerm, AppleTerm and xterm) +Built-in extension to displays cursor in different colors depending on the +current mode (only works in terminals iTerm, AppleTerm and xterm) * enable cursormode integration > let g:airline#extensions#cursormode#enabled = 1 +* mode function. Return value is used as key for the color mapping. Default is + |mode()| + `let g:cursormode_mode_func = 'mode'` + +* color mapping. Keys come from `g:cursormode_mode_func` (background value can + be appended) + `let g:cursormode_color_map = {` + `\ "nlight": '#000000',` + `\ "ndark": '#BBBBBB',` + `\ "i": g:airline#themes#{g:airline_theme}#palette.insert.airline_a[1],` + `\ "R": g:airline#themes#{g:airline_theme}#palette.replace.airline_a[1],` + `\ "v": g:airline#themes#{g:airline_theme}#palette.visual.airline_a[1],` + `\ "V": g:airline#themes#{g:airline_theme}#palette.visual.airline_a[1],` + `\ "\": g:airline#themes#{g:airline_theme}#palette.visual.airline_a[1],` + `\ }` + ============================================================================== ADVANCED CUSTOMIZATION *airline-advanced-customization*