set runtimepath+=~/.vim_back
call plug#begin('~/.vim_back/autoload/plugged')
Plug 'vim-airline/vim-airline'
Plug 'enricobacis/vim-airline-clock'
Plug 'preservim/nerdtree'
Plug 'tpope/vim-commentary'
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-surround'
Plug 'morhetz/gruvbox'
Plug 'octol/vim-cpp-enhanced-highlight'
Plug 'jiangmiao/auto-pairs'
Plug 'khaser/isubmitter'
Plug 'gabrielsimoes/cfparser.vim'
Plug 'lyokha/vim-xkbswitch'

" Plug 'kovetskiy/vim-autoresize'

Plug 'lervag/vimtex'
Plug 'SirVer/ultisnips'
call plug#end()

colorscheme gruvbox 

set ts=4
set shiftwidth=4
set bg=dark
set smarttab
set ai
set et
set nowrap
set cin 
set showmatch
set incsearch
set ignorecase
set listchars=tab:··
set list
set number
set autowriteall
set nohls

set nobackup
set nowritebackup
set noswapfile

autocmd FocusLost * silent! wa
nmap <silent> <C-h> :tabp <CR>
nmap <silent> <C-l> :tabn <CR>
map <silent> <C-n> :NERDTreeToggle<CR>
inoremap jk <esc>

" C build
autocmd filetype c nmap <F1> :w <bar> :make! <CR>
autocmd filetype c nmap <F2> :w <bar> :!%:p:h:h/%:p:h:h:t <CR>
" C++ 
autocmd filetype cpp nmap <F1> :w <bar> !time g++ -DLOCAL -ulimit -std=c++17 -O2 % -o %:r &> %:h/.errlog <CR>
autocmd filetype cpp nmap <F2> :w <bar> !time ./%:r < %:h/.input &> %:h/.output <CR>
autocmd filetype cpp nmap <F3> :w <bar> !time g++ -DDEBUG -DLOCAL -D_GLIBCXX_DEBUG -g -fsanitize=address -Wall -Wextra -fsanitize=undefined -ulimit -std=c++17 % -o %:r &> %:h/.errlog <CR>
autocmd filetype cpp nmap <F4> :g/cerr/norm gcc <CR>
autocmd filetype cpp nmap <F5> :w <bar> !time ./%:r < %:h/.input > %:h/.output <CR>
" PYTHON
autocmd filetype python nmap <F2> :w <bar> :!chmod +x % && ./% <CR>
autocmd filetype python filetype indent on
" BASH
autocmd filetype sh nmap <F2> :w <bar> :!chmod +x % && ./% <CR>
" VIM SCRIPT
autocmd filetype vim nmap <F2> :w <bar> :source % <CR>

" FOR RUSSIAN LAYOUT
set keymap=russian-jcukenwin
set iminsert=0
set imsearch=0
let g:XkbSwitchLib="/home/khaser/build/xkb-switch/build/libxkbswitch.so"
let g:XkbSwitchEnabled = 1
let g:XkbSwitchLoadRuMappings = 1
let g:XkbSwitchAssistNKeymap = 1    " for commands r and f
let g:XkbSwitchAssistSKeymap = 1    " for search lines
let g:XkbSwitchKeymapNames = {'ru' : 'russian-jcukenwin'}

let NERDTreeQuitOnOpen = 1
let g:AutoPairsMultilineClose = 0

" SNIPPETS
let g:UltiSnipsExpandTrigger = '<tab>'
let g:UltiSnipsJumpForwardTrigger = '<tab>'
let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'

" ACM OLYMPIADS
:if expand('%:e') == "cpp"
    autocmd BufNewFile *cpp r ~/ACM/.template.cpp
    silent exec "!touch %:h/.input %:h/.output %:h/.errlog"
    silent set splitright
    silent vertical split .output
    silent tabnew %:h/.input
    silent tabnew %:h/.errlog
    silent tabn
    vertical res 30
:endif

" Natural language typos
hi clear SpellBad
hi SpellBad cterm=underline ctermfg=red
set spelllang=en_us,ru
set spell

" HEX OPERATIONS
nmap <Leader>hr :%!xxd<CR> :set filetype=xxd<CR>
nmap <Leader>hw :%!xxd -r<CR> :set binary<CR> :set filetype=<CR>

" LATEX IDE
autocmd BufNewFile *tex r /home/khaser/Univer/pattern.tex 
let g:XkbSwitchSyntaxRules = [
            \ {'ft': 'tex', 'in': ['normal', 'texZone', 'texMathZone', 'texMathZoneX', 'texMathZoneXX', '', 'texMathZoneEnv', 'texMathDelimZone',  'texMathTextAfter', 'texMathDelim', 'texEnvArgName', 'texCmdGreek', 'texTabularChar', 'texMathOper', 'texDelim', 'texComment']}
            \]
:if expand('%:e') == "tex"
    call remote_startserver('VIM')
    let g:vimtex_view_method = 'zathura'

    let g:tex_flavor='latex'
    let g:vimtex_quickfix_mode = 0
    let g:tex_conceal = 'abdmg'
    set conceallevel=1

    inoremap <C-f> <Esc>: silent exec '.!inkscape-figures create "'.getline('.').'" "'.b:vimtex.root.'/figures/"'<CR><CR>:w<CR>
    nnoremap <C-f> : silent exec '!inkscape-figures edit "'.b:vimtex.root.'/figures/" > /dev/null 2>&1 &'<CR><CR>:redraw!<CR>
:endif
