1
0
mirror of https://github.com/SpaceVim/SpaceVim.git synced 2025-04-14 15:19:12 +08:00

Improve statusline mode text and color (#2034)

* Improve statusline mode text and color

* Add terminal mode

* Remove extra space

* Use bold text for mode text

* Hide mode text for plugin buffer

* Show mode text only for current win

* Update wiki
This commit is contained in:
Wang Shidong 2018-08-13 07:44:06 +08:00 committed by GitHub
parent d89a24aabf
commit 36b983d146
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 18 deletions

View File

@ -96,7 +96,7 @@ if index(s:loaded_sections_r, 'whitespace') != -1
endif
" build in sections for SpaceVim statusline
function! s:winnr(...) abort
if a:0 > 1
if a:0 >= 1
if g:spacevim_windows_index_type == 3
return ' %{ get(w:, "winid", winnr()) } '
else
@ -419,7 +419,7 @@ function! s:active() abort
endfunction
function! s:inactive() abort
let l = '%#SpaceVim_statusline_ia#' . s:winnr() . '%#SpaceVim_statusline_ia_SpaceVim_statusline_b#' . s:lsep . '%#SpaceVim_statusline_b#'
let l = '%#SpaceVim_statusline_ia#' . s:winnr(1) . '%#SpaceVim_statusline_ia_SpaceVim_statusline_b#' . s:lsep . '%#SpaceVim_statusline_b#'
let secs = [s:filename(), " " . &filetype, s:modes()]
let base = 10
for sec in secs
@ -471,7 +471,7 @@ function! SpaceVim#layers#core#statusline#def_colors() abort
let s:colors_template = t
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
exe 'hi! SpaceVim_statusline_a_bold cterm=bold gui=bold ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
exe 'hi! SpaceVim_statusline_ia ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
exe 'hi! SpaceVim_statusline_ia gui=bold cterm=bold ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
exe 'hi! SpaceVim_statusline_b ctermbg=' . t[1][2] . ' ctermfg=' . t[1][3] . ' guibg=' . t[1][1] . ' guifg=' . t[1][0]
exe 'hi! SpaceVim_statusline_c ctermbg=' . t[2][2] . ' ctermfg=' . t[2][3] . ' guibg=' . t[2][1] . ' guifg=' . t[2][0]
exe 'hi! SpaceVim_statusline_z ctermbg=' . t[3][1] . ' ctermfg=' . t[4][3] . ' guibg=' . t[3][0] . ' guifg=' . t[4][0]
@ -543,7 +543,7 @@ function! SpaceVim#layers#core#statusline#config() abort
\ 'toggle the statuline itself', 1)
function! TagbarStatusline(...) abort
let name = (strwidth(a:3) > (g:spacevim_sidebar_width - 15)) ? a:3[:g:spacevim_sidebar_width - 20] . '..' : a:3
return s:STATUSLINE.build([s:winnr(),' Tagbar ', ' ' . name . ' '], [], s:lsep, s:rsep, '', '',
return s:STATUSLINE.build([s:winnr(1),' Tagbar ', ' ' . name . ' '], [], s:lsep, s:rsep, '', '',
\ 'SpaceVim_statusline_ia', 'SpaceVim_statusline_b', 'SpaceVim_statusline_c', 'SpaceVim_statusline_z', g:spacevim_sidebar_width)
endfunction
let g:tagbar_status_func = 'TagbarStatusline'
@ -603,21 +603,21 @@ function! SpaceVim#layers#core#statusline#mode(mode)
if a:mode == 'n'
if !empty(iedit_mode)
if iedit_mode ==# 'n'
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[8][3] . ' ctermfg=' . t[8][2] . ' guibg=' . t[8][1] . ' guifg=' . t[8][0]
exe 'hi! SpaceVim_statusline_a gui=bold ctermbg=' . t[8][3] . ' ctermfg=' . t[8][2] . ' guibg=' . t[8][1] . ' guifg=' . t[8][0]
elseif iedit_mode ==# 'i'
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[7][3] . ' ctermfg=' . t[7][2] . ' guibg=' . t[7][1] . ' guifg=' . t[7][0]
exe 'hi! SpaceVim_statusline_a gui=bold ctermbg=' . t[7][3] . ' ctermfg=' . t[7][2] . ' guibg=' . t[7][1] . ' guifg=' . t[7][0]
else
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
exe 'hi! SpaceVim_statusline_a gui=bold ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
endif
else
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
exe 'hi! SpaceVim_statusline_a gui=bold ctermbg=' . t[0][2] . ' ctermfg=' . t[0][3] . ' guibg=' . t[0][1] . ' guifg=' . t[0][0]
endif
elseif a:mode == 'i'
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[4][3] . ' ctermfg=' . t[4][2] . ' guibg=' . t[4][1] . ' guifg=' . t[4][0]
exe 'hi! SpaceVim_statusline_a gui=bold ctermbg=' . t[4][3] . ' ctermfg=' . t[4][2] . ' guibg=' . t[4][1] . ' guifg=' . t[4][0]
elseif a:mode == 'R'
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[6][3] . ' ctermfg=' . t[6][2] . ' guibg=' . t[6][1] . ' guifg=' . t[6][0]
elseif a:mode == 'v' || a:mode == 'V' || a:mode == '^V' || a:mode == 's' || a:mode == 'S' || a:mode == '^S'
exe 'hi! SpaceVim_statusline_a ctermbg=' . t[5][3] . ' ctermfg=' . t[5][2] . ' guibg=' . t[5][1] . ' guifg=' . t[5][0]
exe 'hi! SpaceVim_statusline_a gui=bold ctermbg=' . t[6][3] . ' ctermfg=' . t[6][2] . ' guibg=' . t[6][1] . ' guifg=' . t[6][0]
elseif a:mode == 'v' || a:mode == 'V' || a:mode == '' || a:mode == 's' || a:mode == 'S' || a:mode == ''
exe 'hi! SpaceVim_statusline_a gui=bold ctermbg=' . t[5][3] . ' ctermfg=' . t[5][2] . ' guibg=' . t[5][1] . ' guifg=' . t[5][0]
endif
call s:HI.hi_separator('SpaceVim_statusline_a', 'SpaceVim_statusline_b')
let w:spacevim_statusline_mode = a:mode
@ -630,18 +630,28 @@ function! SpaceVim#layers#core#statusline#mode_text(mode)
if a:mode == 'n'
if !empty(iedit_mode)
if iedit_mode ==# 'n'
return 'IEDIT-NORMAL '
return 'IEDIT-NORMAL'
else
return 'IEDIT-INSERT '
return 'IEDIT-INSERT'
endif
endif
return 'NORMAL '
return 'NORMAL'
elseif a:mode == 'i'
return 'INSERT '
return 'INSERT'
elseif a:mode == 'R'
return 'REPLACE '
return 'REPLACE'
elseif a:mode ==# 'v'
return 'VISUAL'
elseif a:mode ==# 'V'
return 'V-LINE'
elseif a:mode ==# ''
return 'V-BLOCK'
elseif a:mode ==# 'c'
return 'COMMAND'
elseif a:mode ==# 't'
return 'TERMINAL'
elseif a:mode == 'v' || a:mode == 'V' || a:mode == '^V' || a:mode == 's' || a:mode == 'S' || a:mode == '^S'
return 'VISUAL '
return 'VISUAL'
endif
return ' '
endfunction

View File

@ -32,6 +32,7 @@ The next release is v0.9.0.
- neovim +py and +py3 support ([#1988](https://github.com/SpaceVim/SpaceVim/pull/1988))
- Improve debug info ([#1991](https://github.com/SpaceVim/SpaceVim/pull/1991))
- Improve tmux layer ([#1970](https://github.com/SpaceVim/SpaceVim/pull/1970))
- Improve statusline mode text and color ([#2034](https://github.com/SpaceVim/SpaceVim/pull/2034))
### Changed