diff --git a/home/default.nix b/home/default.nix index 7b982b6..385c077 100644 --- a/home/default.nix +++ b/home/default.nix @@ -299,7 +299,7 @@ in { viAlias = true; vimAlias = true; - extraConfig = builtins.readFile ./init.vim; + extraConfig = builtins.readFile ./nvim/init.vim; plugins = with pkgs.vimPlugins; [ coc-go coc-json @@ -380,5 +380,6 @@ in { }; home.file.".emacs.d/init.el".source = ./init.el; + home.file.".config/nvim/statusline.vim".source = ./nvim/statusline.vim; } diff --git a/home/init.vim b/home/nvim/init.vim similarity index 83% rename from home/init.vim rename to home/nvim/init.vim index 6d17d04..fc0dbd4 100644 --- a/home/init.vim +++ b/home/nvim/init.vim @@ -9,40 +9,17 @@ set ignorecase set incsearch set mouse=a set nocompatible -set noswapfile set number relativenumber set pastetoggle= set shiftwidth=2 set showcmd -set showmode set smartcase set t_Co=256 set tabstop=2 set wildmenu -" Custom statusline -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 - -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 +" Disable swp and swo files +set noswapfile " Remember line number au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif @@ -153,3 +130,4 @@ autocmd FileType java setlocal omnifunc=javacomplete#Complete " vim-prettier let g:prettier#autoformat = 1 +source ~/.config/nvim/statusline.vim diff --git a/home/nvim/statusline.vim b/home/nvim/statusline.vim new file mode 100644 index 0000000..4e3d607 --- /dev/null +++ b/home/nvim/statusline.vim @@ -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', + \ "\" : '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