" Set
filetype indent plugin on

" Syntax highlighting
syntax on

" Add number rows
set relativenumber
set scrolloff=999

" No swap file
set noswapfile

" Incremental search & highlight
set incsearch
set hls

" Runtime path
let $RTP=split(&runtimepath, ',')[0]
let $RC="$HOME/.vimrc"

" Set default path
set path=.,**

" Plugin stuff
execute pathogen#infect()

" Always show file name
set laststatus=2

" Enter to insert blank line below current, Shift+Enter to insert above
map <Enter> o<ESC>
map <S-Enter> O<ESC>

" Folding (move to python specific vim file?)
set foldmethod=indent
set foldnestmax=99
set foldlevelstart=99
nnoremap <space> za
vnoremap <space> zf

" F9 execute current Python file
autocmd FileType python map <buffer> <F9> :w<CR>:exec '!clear;python' shellescape(@%, 1)<CR>
autocmd FileType python imap <buffer> <F9> <esc>:w<CR>:exec '!clear;python' shellescape(@%, 1)<CR>

" Cycle through buffers
map [b :bp<CR>
map ]b :bn<CR>
map db :bd<CR>

" Toggle Nerd tree
map <F4> :NERDTreeToggle<CR>

" Save, Save and quit
map <F1> :w<CR>
map <F2> :wq<CR>


" Lint
autocmd FileType python map <buffer> gl :w<CR>:exec '!python -m black' shellescape(@%, 1)<CR>

" Automatically open NERDTree
autocmd VimEnter * NERDTree | wincmd p

" Exit Vim if NERDTree is the only window remaining in the only tab.
autocmd BufEnter * if tabpagenr('$') == 1 && winnr('$') == 1 && exists('b:NERDTree') && b:NERDTree.isTabTree() | quit | endif


" If another buffer tries to replace NERDTree, put it in the other window, and bring back NERDTree.
autocmd BufEnter * if bufname('#') =~ 'NERD_tree_\d\+' && bufname('%') !~ 'NERD_tree_\d\+' && winnr('$') > 1 |
    \ let buf=bufnr() | buffer# | execute "normal! \<C-W>w" | execute 'buffer'.buf | endif

" Open the existing NERDTree on each new tab.
autocmd BufWinEnter * if getcmdwintype() == '' | silent NERDTreeMirror | endif

" Show hidden
let NERDTreeShowHidden=1


" colorscheme moonfly
" colorscheme vim-monokai-tasty
" colorscheme onenord
colorscheme gruvbox-baby

