statusline mode/modified indicator

This commit is contained in:
ManjaroOne666 2018-03-16 19:56:24 +00:00
parent b6f44e7f4d
commit fd0056c650
2 changed files with 98 additions and 55 deletions

View File

@ -202,8 +202,7 @@ hi StatusLineNC ctermfg=238 guifg=#444444 ctermbg=232 guibg=NONE term=none c
hi StatusLineNormal ctermfg=243 guifg=#777777 ctermbg=234 guibg=#1c1c1c term=none cterm=none
hi StatusLineActive ctermfg=255 guifg=#ffffff ctermbg=239 guibg=#4e4e4e term=none cterm=none
hi StatusLineActiveQuotes ctermfg=244 guifg=#888888 ctermbg=239 guibg=#4e4e4e term=none cterm=none
hi StatusLineDividerActive ctermfg=233 guifg=#111111 ctermbg=233 guibg=#111111 term=none cterm=none
hi StatusLineDivider ctermfg=234 guifg=#1c1c1c ctermbg=234 guibg=#1c1c1c term=none cterm=none
hi StatusLineSeparator ctermfg=255 guifg=#ffffff ctermbg=232 guibg=NONE
hi StatusLineDir ctermfg=241 guifg=#666666 ctermbg=234 guibg=#1c1c1c
hi StatusLineDirActive ctermfg=243 guifg=#777777 ctermbg=237 guibg=#3a3a3a
@ -213,7 +212,16 @@ hi StatusLineDot ctermfg=241 guifg=#606060 ctermbg=234 guibg=#1c1
hi StatusLineDotActive ctermfg=244 guifg=#808080 ctermbg=237 guibg=#3a3a3a
hi StatusLineExt ctermfg=243 guifg=#777777 ctermbg=234 guibg=#1c1c1c
hi StatusLineExtActive ctermfg=249 guifg=#bbbbbb ctermbg=239 guibg=#3a3a3a
hi StatusLineMod ctermfg=255 guifg=#ffffff ctermbg=88 guibg=#490000
" hi StatusLineMod ctermfg=255 guifg=#ffffff ctermbg=88 guibg=#490000
" TODO get cterm colors same as gui ones for following
hi StatusLineDiv ctermfg=233 guifg=#111111 ctermbg=233 guibg=#111111 term=none cterm=none
hi StatusLineDivActive ctermfg=234 guifg=#1c1c1c ctermbg=234 guibg=#1c1c1c term=none cterm=none
hi StatusLineDivMod ctermfg=234 guifg=#290000 ctermbg=234 guibg=#290000 term=none cterm=none
hi StatusLineDivModActive ctermfg=233 guifg=#450000 ctermbg=233 guibg=#450000 term=none cterm=none
hi StatusLineDivInput ctermfg=234 guifg=#1c1c1c ctermbg=234 guibg=#cccccc term=none cterm=none
function! DoInsertEnter()
set cursorline
@ -263,11 +271,17 @@ hi! def link VimGroupName CRIdentifier
hi! def link VimGroupList CRNormalDark
hi! def link VimHiGroup TypeBright
hi! def link VimContinue CRNoise
hi! def link VimCommand CRNoiseBright
hi! def link vimFunction CRIdentifier
hi! def link vimUserFunc CRIdentifierBright
hi! def link vimNotFunc CRNoiseBright
hi! def link vimVar CRIdentifierDark
hi! def link vimOption CRIdentifierDark
hi! def link vimFuncSID CRIdentifierBright
hi! def link vimMapModKey CRSpecial
hi! def link vimHiKeyList CRNoise
hi! def link vimHiBang CRNoise
hi! def link vimLet CRNoise
hi! def link vimSynRegOpt CRStatementDark
hi! def link vimSynMtchOpt vimSynRegOpt
hi! def link vimSynKeyOpt vimSynRegOpt

89
vimrc
View File

@ -249,19 +249,23 @@ iabbrev waht what
iabbrev tehn then
"}}}
" #statusline format{{{
" #statusline format
" isactive = 0 when inactive, 1 otherwise
" get status line{{{
function! GetStatus(isactive)
let l:divider='- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >'
let l:separator='%#StatusLineSeparator# '
let l:normal='%#StatusLineNormal#'
let l:active='%#StatusLineActive#'
let l:statusline=''
"}}}
" linter status{{{
let l:statusline.='%#InterfaceH2# %{LinterStatus()} %*'
"}}}
" file info{{{
if a:isactive == 1
let l:statusline.=l:active
@ -275,12 +279,14 @@ function! GetStatus(isactive)
let l:statusline.=l:separator
endif
"}}}
" current register{{{
if a:isactive
let l:statusline.=l:separator . l:active
let l:statusline.=' %#StatusLineActiveQuotes#"' . l:active . '%{v:register}%#StatusLineActiveQuotes#" '
endif
"}}}
" session status{{{
if a:isactive
let l:statusline.=l:separator . l:active
@ -288,14 +294,30 @@ function! GetStatus(isactive)
let l:statusline.=l:separator . l:active
endif
"}}}
" right/left separator{{{
" right/left divider{{{
" modified version
let l:color='StatusLineDivMod' . (a:isactive?'Active':'')
let l:statusline.=GetStatusFrag("&modified && mode() != 'i'", l:color, '%<', l:divider)
" unmodified version
let l:color='StatusLineDiv' . (a:isactive?'Active':'')
let l:statusline.=GetStatusFrag("!&modified && mode() != 'i'", l:color, '%<', l:divider)
" input mode version
if a:isactive
let l:statusline.='%#StatusLineDividerActive# %< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >' . l:separator . '%*'
else
let l:statusline.='%#StatusLineDivider# %< - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - >' . l:separator . '%*'
let l:statusline.=GetStatusFrag("mode() == 'i'", 'StatusLineDivInput', '%<', l:divider)
endif
let l:statusline.='%='
let l:statusline.=l:separator . '%*%='
"}}}
" modified flag {{{
" let l:statusline.='%#StatusLineMod#%M' . l:separator . '%*'
"}}}
" path/filename.extension{{{
if a:isactive
@ -325,14 +347,13 @@ function! GetStatus(isactive)
endif
"}}}
" modified flag {{{
let l:statusline.=l:separator . '%#StatusLineMod#%M' . l:separator . '%*'
"}}}
" file percentage{{{
let l:statusline.='%#InterfaceNormalDark#%P%*'
let l:statusline.=l:separator . '%#InterfaceNormalDark#%P%*'
return l:statusline
endfunction
"}}}
" status line autocommands{{{
augroup status
autocmd!
@ -342,6 +363,7 @@ augroup status
augroup END
"}}}}}}
" #autocommands{{{
" persistent folds
@ -389,24 +411,32 @@ augroup END
" #functions{{{
function! CheckLineEnding()
" TODO better name
function! GetStatusFrag(condition, colorname, conditionprefix, text) "{{{
let l:frag='%#' . a:colorname . '#'
let l:frag.=a:conditionprefix
let l:frag.='%{(' . a:condition . ")?'" . a:text . "':''}"
return l:frag
endfunction"}}}
function! CheckLineEnding() "{{{
:normal $
if getline('.')[col('.')-1] == ';' || getline('.')[col('.')-1] == ','
:startinsert
else
:startinsert!
endif
endfunction
endfunction"}}}
" get name of syntax item
function! SyntaxItem()
function! SyntaxItem() "{{{
return synIDattr(synID(line('.'),col('.'),1),'name') . ' -> ' . synIDattr(synIDtrans(synID(line('.'),col('.'),1)), 'name' )
endfunction
nnoremap <leader>p :echom SyntaxItem()<CR>
nnoremap <leader>p :echom SyntaxItem()<CR>"}}}
" devdocs DD
" https://gist.github.com/romainl/8d3b73428b4366f75a19be2dad2f0987#file-devdocs-vim
function! s:Get_env() abort
function! s:Get_env() abort "{{{
if has('win64') || has('win32') || has('win16')
return 'WINDOWS'
else
@ -422,10 +452,10 @@ let s:stub = s:cmds[<SID>Get_env()] . " 'http://devdocs.io/?q="
command! -nargs=* DD silent! call system(len(split(<q-args>, ' ')) == 0 ?
\ s:stub . &ft . ' ' . expand('<cword>') . "'" : len(split(<q-args>, ' ')) == 1 ?
\ s:stub . &ft . ' ' . <q-args> . "'" : s:stub . <q-args> . "'")
"}}}
" use ranger as file manager
if !exists('*RangerExplorer')
if !exists('*RangerExplorer')" {{{
function RangerExplorer()
exec 'silent !ranger --choosefile=/tmp/vim_ranger_current_file ' . expand('%:p:h')
if filereadable('/tmp/vim_ranger_current_file')
@ -435,7 +465,17 @@ if !exists('*RangerExplorer')
redraw!
endfun
map <Leader>ra :call RangerExplorer()<CR>
endif
endif"}}}
function! LinterStatus() abort "{{{
let l:counts = ale#statusline#Count(bufnr(''))
let l:all_errors = l:counts.error + l:counts.style_error
let l:all_non_errors = l:counts.total - l:all_errors
return l:counts.total == 0 ? 'OK' : printf('%dW %dE', l:all_non_errors, l:all_errors)
endfunction
"}}}
"}}}
@ -501,17 +541,6 @@ let g:ale_html_htmlhint_options = '-c ~/.htmlhintrc --format=unix'
let g:ale_fixers = {'javascript': ['eslint']}
function! LinterStatus() abort
let l:counts = ale#statusline#Count(bufnr(''))
let l:all_errors = l:counts.error + l:counts.style_error
let l:all_non_errors = l:counts.total - l:all_errors
return l:counts.total == 0 ? 'OK' : printf('%dW %dE', l:all_non_errors, l:all_errors)
endfunction
"nmap <silent> <C-k> <Plug>(ale_previous_wrap)
"nmap <silent> <C-j> <Plug>(ale_next_wrap)
" ultisnips
let g:UltiSnipsSnippetsDir="~/.vim/UltiSnips"
" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe.