"BASICS--------------------------------------------------------------
set exrc			""You can get some cuntomizations if therre is a vimrc on the local eare that you are it will use it.
set guicursor=		""Bi cursor for oldstyle lovers.
set relativenumber  ""Show the line beofre and ofetr starting from your line. 
set noerrorbells	""No sound effects.
set tabstop=4		""TabSize of 4. 
set shiftwidth=4 	""Indentation fo 4.  
set softtabstop=4 	""Enabeling it will remplace tabs by spaces in insert mode 
set noexpandtab 	""Enabeling it will remplace tabs by spaces  
set smartindent		""will try it's best to indent for you. 
set nowrap			""Will continue to go right when line is too long
set incsearch		""incremental searching as i am typing the words will be highligted.
set number			""Self explanatory
set scrolloff=8		""Will start to scroll down wehn there is still 8 Lines before end of page. 
"Backup and Undo
set noswapfile		""No swap file. they are anoying 
set nobackup		""Nobackup because we will do a undo dir
set undodir=~/.vim/undodir
set undofile 
packadd termdebug
let g:termdebug_wide=1
filetype plugin indent on
syntax enable
:autocmd InsertEnter,InsertLeave * set cul!
"--------------------------------------------------------------------

"PLUGINS-------------------------------------------------------------
"plugins(included with vim) for file specific mappings Located at ~/.vim/ftplugin/
"Example for c Would be: ~/.vim/ftplugin/c_mappings.vim
filetype plugin on 

"Plug pkluginmanager start and end 
call plug#begin('~/.vim/plugged')
Plug 'gruvbox-community/gruvbox'
Plug 'arcticicestudio/nord-vim'
Plug 'vim-utils/vim-man'
Plug 'mbbill/undotree'
Plug 'gyim/vim-boxdraw'
Plug 'vim-airline/vim-airline'
call plug#end()
"--------------------------------------------------------------------

"VISUALS-------------------------------------------------------------
set colorcolumn=100 
highlight ColorColumn ctermbg=0 guibg=lightgrey
set signcolumn=yes
colorscheme gruvbox
set background=dark
highlight Normal guibg=blue
"--------------------------------------------------------------------

"REMAPS--------------------------------------------------------------
"(VIM) Remaps Spca bar as the Leader command
let mapleader=" "

"(NAVIGATION)
"Switches to the Left	window
map <silent> <leader>h :wincmd h<CR><CR> 
"Switches to the Bottom window
map <silent> <leader>j :wincmd j<CR><CR>
"Switches to the Top window
map <silent> <leader>k :wincmd k<CR><CR>
"Switches to the Right	window
map <silent> <leader>l :wincmd l<CR><CR>

"(FILES)
map <leader>fw :Sex! <bar> :vertical resize 30<CR>
map <leader>u :UndotreeShow<CR>

"(POSITION) 
"[P]ut one line [U]p everything from the cursor till the end of the line 
map <leader>pu d$O<ESC>p
"[P]ut one line [D]own everything from the cursor till the end of the line 
map <leader>pd d$o<ESC>p

"Put at then end of the [L]ine [U]pper from the cursor (everything from the cursor till the end of the line) 
map <leader>lu DkA<ESC>p<ESC>jddk<ESC>I<ESC>
"Put at then end of the [L]ine [D]own(er) from the cursor (everything from the cursor till the end of the line) 
map <leader>ld DjA<ESC>p<ESC>kddj<ESC>I<ESC>

"(WORD) Manipulation
"[W]ord [R]reformat for word under the cursor
map <leader>wr ebvey:%s/<C-R>0//g<left><left>
"[C]hange [W]ord in registered buffer To be more similar to whant vim implment
map <leader>cw ebvey/<C-R>0<CR>Ncw
"[C]hange [N]ext word in registered buffer To be more similar to what vim implements
map <leader>cn ncw
"[W]ord [N]ext occurence for word under the cursor
map <leader>wn ebvey/<C-R>0<CR>
"[W]ord [P]revious occurence for word under the cursor
map <leader>wp ebvey/<C-R>0<CR>NN
"[W]ord [S]earch for word under the cursor
map <leader>ws ebvey/<C-R>0
"[W]ord [F]ind [F]irst for word under the cursor
map <silent> <leader>wff ebveyG/<C-R>0<CR>
"[W]ord [F]ind [L]ast for word under the cursor
map <silent> <leader>wfl ebveyG/<C-R>0<CR>N
"--------------------------------------------------------------------

"DEBUGER--------------------------------------------------------------
map <leader>db :Termdebug <bar> :vertical resize 30<CR>
noremap <silent> <leader>ts :Step<cr>
noremap <silent> <leader>to :Over<cr>
noremap <silent> <leader>tn :Next<cr>
noremap <silent> <leader>tc :Cont<cr>
"--------------------------------------------------------------------

"WILDMENU FOR FUZZY FILE SEARCH--------------------------------------
set path+=**

set wildmenu "Display all matching files when we tab complete
	" NOW WE CAN:
	" Type :find
	" - Hit tab to :find by partial match
	" - Use * to make it fuzzy
	" - Opened files will be buffered try it out
	" - :b lets you autocomplete any open buffer
"--------------------------------------------------------------------

"TAG JUMPING---------------------------------------------------------
" Create the `tags` file (need to install ctags first)
command! MakeTags !ctags -R .
	" NOW WE CAN:
	" - Use ^] to jump to tag under cursor
	" - Use g^] for ambiguous tags
	" - Use ^t to jump back up the tag stack
	" THINGS TO CONSIDER:
	" - This doesn't help if you want a visual list of tags
	" AUTOCOMPLETE:
	" The good stuff is documented in |ins-completion|
	" HIGHLIGHTS:
	" - ^x^n for JUST this file
	" - ^x^f for filenames (works with our path trick!)
	" - ^x^] for tags only
	" - ^n for anything specified by the 'complete' option
	" NOW WE CAN:
	" - Use ^n and ^p to go back and forth in the suggestion list
"--------------------------------------------------------------------

"SNIPPETS------------------------------------------------------------
"        Command Read  template 		            move cursor 
nnoremap <leader>shs :-1read $HOME/.vim/snippets/html_skeleton.html<CR>5jwf>a
nnoremap <leader>shb :-1read $HOME/.vim/snippets/html_vertical_bracets.html<CR>:s/VARTOCHANGE//g<left><left>
nnoremap <leader>sht :-1read $HOME/.vim/snippets/html_horizontal_bracets.html<CR>:.,+2s/VARTOCHANGE//g<left><left>
nnoremap <leader>scf :-1read $HOME/.vim/snippets/c_for.c<CR>yi)/<C-R>0<CR>N:s/VARTOCHANGE//g<left><left>
nnoremap <leader>scs :-1read $HOME/.vim/snippets/c_switch.c<CR>yi)/<C-R>0<CR>Ncw
nnoremap <leader>scw :-1read $HOME/.vim/snippets/c_while.c<CR>yi)/<C-R>0<CR>Ncw
"--------------------------------------------------------------------


"BUILD INTEGRATION---------------------------------------------------
" Steal Mr. Bradley's formatter & add it to our spec_helper
" http://philipbradley.net/rspec-into-vim-with-quickfix
" Configure the `make` command to run RSpec
set makeprg=bundle\ exec\ rspec\ -f\ QuickfixFormatter

	" NOW WE CAN:
	" - Run :make to run RSpec
	" - :cl to list errors
	" - :cc# to jump to error by number
	" - :cn and :cp to navigate forward and back
"--------------------------------------------------------------------
