set runtimepath+=~/.config/vim,~/.config/vim/after
set packpath+=~/.config/vim

" Plug plugins using VimPlug
call plug#begin('~/.config/vim/plugged')
    " Tools
    Plug 'editorconfig/editorconfig-vim'
    Plug 'airblade/vim-gitgutter'
    Plug 'samoshkin/vim-mergetool'
    Plug 'fidian/hexmode'
    Plug 'scrooloose/nerdtree'
    Plug 'vim-scripts/DoxygenToolkit.vim'
    Plug 'drmikehenry/vim-headerguard'
    "Emmet is a plugin which greatly improves HTML & CSS workflow
    Plug 'mattn/emmet-vim'

    " Eye-Candy
    Plug 'machakann/vim-highlightedyank'
    Plug 'itchyny/lightline.vim'
    "Plug 'nanotech/jellybeans.vim'
    Plug 'dracula/vim', { 'as': 'dracula' }
    Plug 'scrooloose/syntastic'
    Plug 'Yggdroot/indentLine'

    " Commands
    Plug 'machakann/vim-swap'
    Plug 'matze/vim-move'

    " Syntax highlighting
    Plug 'baskerville/vim-sxhkdrc'
    Plug 'sirtaj/vim-openscad'
    Plug 'lervag/vimtex'
    Plug 'sheerun/vim-polyglot'
call plug#end()


"let g:indentLine_setColors = 0

packadd termdebug

set number relativenumber
set splitbelow splitright

let mapleader = " "

augroup numbertoggle
  autocmd!
  autocmd WinEnter * set relativenumber
  autocmd WinLeave * set norelativenumber
augroup END

syntax on

set tabstop=4
set shiftwidth=4
set expandtab

set modeline
set laststatus=2

set encoding=utf-8

set mouse=a

set incsearch
set hlsearch

set nowrap
set nocompatible

if has('nvim')
    " Neovim specific commands
    set viminfo+=n~/.cache/nviminfo
else
    " Standard vim specific commands
    set viminfo+=n~/.cache/viminfo
endif

set wildmode=longest,list,full

set fillchars+=vert:\ 

runtime ftplugin/man.vim
set keywordprg=:Man

if has("autocmd")
    " Save cursor position. I don't understand this part
    au BufReadPost * if line("'\"") > 0 && line("'\"") <= line("$") | exe "normal! g`\"" | endif

    au BufNewFile,BufRead neomutt-* setf mail

    au FileType yaml setlocal ai tabstop=2 shiftwidth=2 expandtab cuc nu

    au FileType lilypond au BufWritePost * !lilypond %
    au FileType dot au BufWritePost * !dot -Tpng -O %
endif



map <leader>b :Break<CR>
map <leader>n :NERDTreeToggle<CR>

nnoremap <CR> :noh<CR><CR>


autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif

let g:lightline = {
\   'active': {
\       'left': [
\           [ 'mode', 'paste' ],
\           [ 'readonly', 'filename', 'modified', 'gitbranch' ]
\       ],
\       'right': [
\           [ 'bufnum', 'percent', 'lineinfo' ],
\           [ 'fileformat', 'fileencoding', 'filetype', 'synthastic' ],
\           [ 'charvaluehex' ]
\       ]
\   },
\   'inactive': {
\       'left': [
\           [ 'filename' ]
\       ],
\       'right': [
\           [ 'lineinfo' ],
\           [ 'bufnum' ]
\       ]
\   },
\   'component': {
\       'charvaluehex': '0x%B',
\       'bufnum': '%n'
\   },
\   'component_function': {
\       'synthastic': 'SyntasticStatuslineFlag',
\       'gitbranch': 'fugitive#head'
\   },
\ }

if has('termguicolors') && &termguicolors
    let g:jellybeans_overrides['background']['guibg'] = 'none'
endif
let g:jellybeans_overrides = {
\   'Todo': {
\       'guifg': '303030',
\       'guibg': 'f0f000',
\       'ctermfg': 'Black',
\       'ctermbg': 'Yellow',
\       'attr': 'bold'
\   },
\   'Comment': { 'guifg': 'cccccc' },
\   'LineNr': { 'guifg': 'aaaaaa' },
\   'background': {
\       'ctermbg': 'none',
\       '256ctermbg': 'none'
\   },
\ }

try
    packadd! dracula_pro
    colorscheme dracula_pro
catch
    colorscheme dracula
endtry

let g:dracula_colorterm = 0
highlight Normal ctermbg=NONE


let g:highlightedyank_highlight_duration = 250

let g:syntastic_always_populate_loc_list = 0
let g:syntastic_auto_loc_list = 0
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
let g:syntastic_oclint_config_file = '.syntastic_oclint_config'
let g:syntastic_c_config_file = '.syntastic_cc_config'

let g:tex_flavor = 'latex'
let g:vimtex_compiler_latexmk = {
\   'build_dir': 'latexmk_output'
\}

let g:move_key_modifier = 'C'

let g:indentLine_char_list = ['|', '¦', '┆', '┊']