mirror of
https://github.com/vim-airline/vim-airline.git
synced 2025-12-06 12:14:24 +08:00
@@ -222,33 +222,33 @@ function! airline#check_mode(winnr)
|
||||
|
||||
if get(w:, 'airline_active', 1)
|
||||
let m = mode(1)
|
||||
if m ==# "i"
|
||||
let mode = ['insert']
|
||||
elseif m[0] ==# "i"
|
||||
let mode = ['insert']
|
||||
elseif m ==# "Rv"
|
||||
let mode =['replace']
|
||||
elseif m[0] ==# "R"
|
||||
let mode = ['replace']
|
||||
elseif m[0] =~# '\v(v|V||s|S|)'
|
||||
let mode = ['visual']
|
||||
elseif m ==# "t"
|
||||
let mode = ['terminal']
|
||||
elseif m[0] ==# "c"
|
||||
let mode = ['commandline']
|
||||
elseif m ==# "no" " does not work, most likely, Vim does not refresh the statusline in OP mode
|
||||
let mode = ['normal']
|
||||
elseif m[0:1] ==# 'ni'
|
||||
let mode = ['insert']
|
||||
let m = 'ni'
|
||||
" Refer :help mode() to see the list of modes
|
||||
" NB: 'let mode' here refers to the display colour _groups_,
|
||||
" not the literal mode's code (i.e., m). E.g., Select modes
|
||||
" v, S and ^V use 'visual' since they are of similar ilk.
|
||||
" Some modes do not get recognised for status line purposes:
|
||||
" no, nov, noV, no^V, !, cv, and ce.
|
||||
" Mode name displayed is handled in init.vim (g:airline_mode_map).
|
||||
"
|
||||
if m[0] ==# "i"
|
||||
let mode = ['insert'] " Insert modes + submodes (i, ic, ix)
|
||||
elseif m[0] == "R"
|
||||
let mode = ['replace'] " Replace modes + submodes (R, Rc, Rv, Rx) (NB: case sensitive as 'r' is a mode)
|
||||
elseif m[0] =~ '\v(v|V||s|S|)'
|
||||
let mode = ['visual'] " Visual and Select modes (v, V, ^V, s, S, ^S))
|
||||
elseif m ==# "t"
|
||||
let mode = ['terminal'] " Terminal mode (only has one mode (t))
|
||||
elseif m[0] =~ '\v(c|r|!)'
|
||||
let mode = ['commandline'] " c, cv, ce, r, rm, r? (NB: cv and ce stay showing as mode entered from)
|
||||
else
|
||||
let mode = ['normal']
|
||||
let mode = ['normal'] " Normal mode + submodes (n, niI, niR, niV; plus operator pendings no, nov, noV, no^V)
|
||||
endif
|
||||
if exists("*VMInfos") && !empty(VMInfos())
|
||||
" Vim plugin Multiple Cursors https://github.com/mg979/vim-visual-multi
|
||||
let m = 'multi'
|
||||
endif
|
||||
if index(['Rv', 'no', 'ni', 'ix', 'ic', 'multi'], m) == -1
|
||||
" Adjust to handle additional modes, which don't display correctly otherwise
|
||||
if index(['niI', 'niR', 'niV', 'ic', 'ix', 'Rc', 'Rv', 'Rx', 'multi'], m) == -1
|
||||
let m = m[0]
|
||||
endif
|
||||
let w:airline_current_mode = get(g:airline_mode_map, m, m)
|
||||
|
||||
Reference in New Issue
Block a user