Enhance vim statusline

This commit is contained in:
Dave Gallant
2021-02-06 17:07:13 -05:00
parent 3c477cbfc6
commit 00af0214f8
3 changed files with 69 additions and 26 deletions

View File

@@ -299,7 +299,7 @@ in {
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
extraConfig = builtins.readFile ./init.vim; extraConfig = builtins.readFile ./nvim/init.vim;
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
coc-go coc-go
coc-json coc-json
@@ -380,5 +380,6 @@ in {
}; };
home.file.".emacs.d/init.el".source = ./init.el; home.file.".emacs.d/init.el".source = ./init.el;
home.file.".config/nvim/statusline.vim".source = ./nvim/statusline.vim;
} }

View File

@@ -9,40 +9,17 @@ set ignorecase
set incsearch set incsearch
set mouse=a set mouse=a
set nocompatible set nocompatible
set noswapfile
set number relativenumber set number relativenumber
set pastetoggle=<F3> set pastetoggle=<F3>
set shiftwidth=2 set shiftwidth=2
set showcmd set showcmd
set showmode
set smartcase set smartcase
set t_Co=256 set t_Co=256
set tabstop=2 set tabstop=2
set wildmenu set wildmenu
" Custom statusline " Disable swp and swo files
function! GitBranch() set noswapfile
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
endfunction
function! StatuslineGit()
let l:branchname = GitBranch()
return strlen(l:branchname) > 0?' '.l:branchname.' ':''
endfunction
set statusline=
set statusline+=%#PmenuSel#
set statusline+=%{StatuslineGit()}
set statusline+=%#LineNr#
set statusline+=\ %f
set statusline+=%m
set statusline+=%=
set statusline+=%#CursorColumn#
set statusline+=\ %y
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\[%{&fileformat}\]
set statusline+=\ %p%%
set statusline+=\ %l:%c
" Remember line number " Remember line number
au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif
@@ -153,3 +130,4 @@ autocmd FileType java setlocal omnifunc=javacomplete#Complete
" vim-prettier " vim-prettier
let g:prettier#autoformat = 1 let g:prettier#autoformat = 1
source ~/.config/nvim/statusline.vim

64
home/nvim/statusline.vim Normal file
View File

@@ -0,0 +1,64 @@
" A lightweight statusline
" Enable statusline
set laststatus=2
" Do not show mode on last line
set noshowmode
function! ActivateStatusline()
set statusline=
set statusline+=%#Pmenu#
set statusline+=%{StatuslineMode()}
set statusline+=%#PmenuSel#
set statusline+=%{StatuslineGit()}
set statusline+=%#LineNr#
set statusline+=\ %f
set statusline+=%m
set statusline+=%=
set statusline+=%#CursorColumn#
set statusline+=\ %y
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\[%{&fileformat}\]
set statusline+=\ %p%%
set statusline+=\ %l:%c
endfunction
" Get vim mode
function! StatuslineMode()
let g:modeMap={
\ 'n' : 'NORMAL',
\ 'i' : 'INSERT',
\ 'c' : 'COMMAND',
\ 'R' : 'REPLACE',
\ 's' : 'SELECT',
\ 'y' : 'HELP',
\ 't' : 'TERM',
\ '!' : 'SHELL',
\ 'v' : 'VISUAL',
\ 'V' : 'VISUAL LINE',
\ "\<C-V>" : 'VISUAL BLOCK'
\}
if expand('%:y') == 'help'
let b:CurrentMode = 'HELP'
endif
return ' '.g:modeMap[mode()].' '
endfunction
function! GitBranch()
return system("git rev-parse --abbrev-ref HEAD 2>/dev/null | tr -d '\n'")
endfunction
function! StatuslineGit()
let l:branchname = GitBranch()
return strlen(l:branchname) > 0?' '.l:branchname.' ':''
endfunction
augroup SetStatusline
autocmd!
autocmd BufEnter,WinEnter * call ActivateStatusline()
augroup END