set nocompatible
set backspace=start,eol,indent
set hidden 
set hlsearch
syntax on
filetype plugin on
set tabstop=4 shiftwidth=4 autoindent smartindent expandtab 
"set noswapfile

" Numbering of lines
" set relativenumber
set number

" Runtimepath variables
" call -> set rtp? show the runtime path
let $RTP=split(&runtimepath, ',')[0]
let $RC="$HOME/.vimrc"

" Move Swap,Backup and undo files into .vim directory
set directory^="$HOME/.vim/.swap//"
set backupdir^="$HOME/.vim/.backup//"
set undodir^="$HOME/.vim/.undo//"

" Split to the right and below
set splitbelow
set splitright

" Folding
set foldenable foldlevelstart=20 foldmethod=indent

" Rebind shortcut to switch splits
nmap <C-h> <C-w>h
nmap <C-j> <C-w>j
nmap <C-k> <C-w>k
nmap <C-l> <C-w>l

" Finding files
set path+=**
set wildmenu

" Tags
command! MakeTags !ctags -R .
set autochdir
set tags=tags;

" Linter
" autocmd FileType python setlocal makeprg=pylint\ --output-format=parseable
" autocmd BufWritePost *.py silent make! <afile> | silent redraw!
" autocmd QuickFixCmdPost [^l]* cwindow

" File browsing
let g:netrw_banner=0
let g:netrw_browse_split=4
let g:netrw_altv=1
let g:netrw_liststyle=3
let g:netrw_list_hide=netrw_gitignore#Hide()
let g:netrw_list_hide.=',\(\^\|\s\s\)\zs\.\S\+'
"map <C-n> :NERDTreeToggle<CR>
map <C-n>  :Lex <bar> vertical resize 30 <CR>

" Cursorline
set cursorline 
hi CursorLine  cterm=NONE ctermbg=darkgrey ctermfg=white

" 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
function! UpdateGitBranch()
  let l:branchname = system("git rev-parse --abbrev-ref head 2>/dev/null | tr -d '\n'")
  let b:branchstatus = strlen(l:branchname) > 0? '  '.l:branchname.' ':''
endfunction

augroup UPDATE_GITBRANCH
" clear previous commands
autocmd!
" Update git branch
autocmd BufWritePre * :call UpdateGitBranch()
autocmd BufReadPost * :call UpdateGitBranch()
autocmd BufEnter *    :call UpdateGitBranch()
augroup end

set laststatus=2
set statusline=
set statusline+=%#PmenuSel#
" set statusline+=%{StatuslineGit()}
set statusline+=%{b:branchstatus}
set statusline+=%#BufTabLineCurrent#
set statusline+=\ %M
set statusline+=\ %r
set statusline+=\ %F
set statusline+=%= "Right side settings
set statusline+=\ %y
set statusline+=%#CursorColumn#
set statusline+=\ %{&fileencoding?&fileencoding:&encoding}
set statusline+=\[%{&fileformat}\]
set statusline+=\ %c:%l/%L
set statusline+=\ %p%%
set statusline+=\ [%n]

packadd! indentLine
"let g: indentLine_char = '⦙'

" let g:vimspector_enable_mappings = 'HUMAN'
" packadd! vimspector

packadd! gruvbox
colorscheme gruvbox
set bg=dark

packadd! vim-log-highlighting

packadd! ale
packloadall
" Load all of the helptags now, after plugins have been loaded.
" All messages and errors will be ignored.
silent! helptags ALL
