From d4aaa38b5308cc70d82680d52af69596f0461e66 Mon Sep 17 00:00:00 2001 From: Gardouille Date: Fri, 21 Aug 2015 15:14:55 +0200 Subject: [PATCH] Disable airline and enable lightline for status line --- vimrc | 195 ++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 184 insertions(+), 11 deletions(-) diff --git a/vimrc b/vimrc index 4758cde..d3b7958 100755 --- a/vimrc +++ b/vimrc @@ -228,8 +228,10 @@ Plugin 'rodjek/vim-puppet' " Auto alignment (for Puppet for example) Plugin 'godlygeek/tabular' -" A pretty statusline -Plugin 'bling/vim-airline' +" A pretty statusline, bufferline integration +Plugin 'itchyny/lightline.vim' +Plugin 'bling/vim-bufferline' +"Plugin 'bling/vim-airline' "Bundle 'edkolev/tmuxline.vim' " Give viual aid to navigate marks @@ -266,6 +268,20 @@ if has_vundle == 0 ":qa endif +""" User interface {{{ + """ Custom highlighting, where NONE uses terminal background {{{ +function! CustomHighlighting() + highlight Normal ctermbg=NONE + highlight NonText ctermbg=NONE + highlight LineNr ctermbg=NONE + highlight SignColumn ctermbg=NONE + highlight SignColumn guibg=#151515 + highlight CursorLine ctermbg=235 +endfunction + +call CustomHighlighting() + """ }}} +""" }}} "########################## " SnipMate @@ -380,15 +396,15 @@ let g:neocomplcache_lock_buffer_name_pattern = '\*ku\*' "Plugin 'bling/vim-airline' " Toujours afficher la barre de statut -set laststatus=2 " always show statusline -" Smarter tab line -let g:airline#extensions#tabline#enabled = 1 -"let g:airline#extensions#tabline#left_sep = 'ˇ' -"let g:airline#extensions#tabline#left_alt_sep = 'v' -let g:airline_powerline_fonts = 1 -"let g:airline_theme='molokai' -"let g:airline_theme='lucius' -let g:airline_theme='monochrome' +"set laststatus=2 " always show statusline +"" Smarter tab line +"let g:airline#extensions#tabline#enabled = 1 +""let g:airline#extensions#tabline#left_sep = 'ˇ' +""let g:airline#extensions#tabline#left_alt_sep = 'v' +"let g:airline_powerline_fonts = 1 +""let g:airline_theme='molokai' +""let g:airline_theme='lucius' +"let g:airline_theme='monochrome' "########################## " Tmuxline : @@ -396,6 +412,163 @@ let g:airline_theme='monochrome' " https://github.com/edkolev/tmuxline.vim "Plugin 'edkolev/tmuxline.vim' +"########################## +" Lightline : +"########################## +""" Lightline {{{ + +set laststatus=2 " always show statusline +let g:lightline = { + \ 'colorscheme': 'jellybeans', + \ 'active': { + \ 'left': [ + \ ['mode', 'paste'], + \ ['readonly', 'fugitive'], + \ ['ctrlpmark', 'bufferline'] + \ ], + \ 'right': [ + \ ['lineinfo'], + \ ['percent'], + \ ['fileformat', 'fileencoding', 'filetype', 'syntastic'] + \ ] + \ }, + \ 'component': { + \ 'paste': '%{&paste?"!":""}' + \ }, + \ 'component_function': { + \ 'mode' : 'MyMode', + \ 'fugitive' : 'MyFugitive', + \ 'readonly' : 'MyReadonly', + \ 'ctrlpmark' : 'CtrlPMark', + \ 'bufferline' : 'MyBufferline', + \ 'fileformat' : 'MyFileformat', + \ 'fileencoding' : 'MyFileencoding', + \ 'filetype' : 'MyFiletype' + \ }, + \ 'component_expand': { + \ 'syntastic': 'SyntasticStatuslineFlag', + \ }, + \ 'component_type': { + \ 'syntastic': 'middle', + \ }, + \ 'subseparator': { + \ 'left': 'ᑄ', 'right': 'ᑁ' + \ } + \ } + +let g:lightline.mode_map = { + \ 'n' : ' Normal ', + \ 'i' : ' Insert ', + \ 'R' : ' Replace ', + \ 'v' : ' Visual ', + \ 'V' : 'Visual-L', + \ 'c' : ' C ', + \ "\" : 'Visual-B', + \ 's' : ' Sub ', + \ 'S' : 'Sub-L', + \ "\" : 'Sub-B', + \ '?' : ' ' } + + function! MyMode() + let fname = expand('%:t') + return fname == '__Tagbar__' ? 'Tagbar' : + \ fname == 'ControlP' ? 'CtrlP' : + \ winwidth('.') > 60 ? lightline#mode() : '' + endfunction + + function! MyFugitive() + try + if expand('%:t') !~? 'Tagbar' && exists('*fugitive#head') + let mark = '± ' + let _ = fugitive#head() + return strlen(_) ? mark._ : '' + endif + catch + endtry + return '' + endfunction + + function! MyReadonly() + return &ft !~? 'help' && &readonly ? '≠' : '' " or ⭤ + endfunction + + function! CtrlPMark() + if expand('%:t') =~ 'ControlP' + call lightline#link('iR'[g:lightline.ctrlp_regex]) + return lightline#concatenate([g:lightline.ctrlp_prev, g:lightline.ctrlp_item + \ , g:lightline.ctrlp_next], 0) + else + return '' + endif + endfunction + + function! MyBufferline() + call bufferline#refresh_status() + let b = g:bufferline_status_info.before + let c = g:bufferline_status_info.current + let a = g:bufferline_status_info.after + let alen = strlen(a) + let blen = strlen(b) + let clen = strlen(c) + let w = winwidth(0) * 4 / 11 + if w < alen+blen+clen + let whalf = (w - strlen(c)) / 2 + let aa = alen > whalf && blen > whalf ? a[:whalf] : alen + blen < w - clen || alen < whalf ? a : a[:(w - clen - blen)] + let bb = alen > whalf && blen > whalf ? b[-(whalf):] : alen + blen < w - clen || blen < whalf ? b : b[-(w - clen - alen):] + return (strlen(bb) < strlen(b) ? '...' : '') . bb . c . aa . (strlen(aa) < strlen(a) ? '...' : '') + else + return b . c . a + endif + endfunction + + function! MyFileformat() + return winwidth('.') > 90 ? &fileformat : '' + endfunction + + function! MyFileencoding() + return winwidth('.') > 80 ? (strlen(&fenc) ? &fenc : &enc) : '' + endfunction + + function! MyFiletype() + return winwidth('.') > 70 ? (strlen(&filetype) ? &filetype : 'no ft') : '' + endfunction + + let g:ctrlp_status_func = { + \ 'main': 'CtrlPStatusFunc_1', + \ 'prog': 'CtrlPStatusFunc_2', + \ } + + function! CtrlPStatusFunc_1(focus, byfname, regex, prev, item, next, marked) + let g:lightline.ctrlp_regex = a:regex + let g:lightline.ctrlp_prev = a:prev + let g:lightline.ctrlp_item = a:item + let g:lightline.ctrlp_next = a:next + return lightline#statusline(0) + endfunction + + function! CtrlPStatusFunc_2(str) + return lightline#statusline(0) + endfunction + + let g:tagbar_status_func = 'TagbarStatusFunc' + + function! TagbarStatusFunc(current, sort, fname, ...) abort + let g:lightline.fname = a:fname + return lightline#statusline(0) + endfunction + + function! s:syntastic() + SyntasticCheck + call lightline#update() + endfunction + + augroup AutoSyntastic + autocmd! + execute "autocmd FileType " . + \join(g:syntastic_mode_map["active_filetypes"], ",") . + \" autocmd BufWritePost :call s:syntastic()" + augroup END + """ }}} """""""""""""""""""""""""""""""""""""""""""""""" " Paramétrage de exuberant-ctags "http://ngressier.developpez.com/articles/vim/vim-plugin-taglist/#LC