"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""               
"               ██╗   ██╗██╗███╗   ███╗██████╗  ██████╗
"               ██║   ██║██║████╗ ████║██╔══██╗██╔════╝
"               ██║   ██║██║██╔████╔██║██████╔╝██║     
"               ╚██╗ ██╔╝██║██║╚██╔╝██║██╔══██╗██║     
"                ╚████╔╝ ██║██║ ╚═╝ ██║██║  ██║╚██████╗
"                 ╚═══╝  ╚═╝╚═╝     ╚═╝╚═╝  ╚═╝ ╚═════╝
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""

set nocompatible			" Disable compatibility with vi which can cause unexpected issues.
filetype on					" Enable type file detection. Vim will be able to try to detect the type of file in use.
filetype plugin on			" Enable plugins and load plugin for the detected file type.
filetype indent on			" Load an indent file for the detected file type.
syntax on					" Turn syntax highlighting on.
set number					" Add numbers to each line on the left-hand side.
set cursorline				" Highlight cursor line underneath the cursor horizontally.
set shiftwidth=5			" Set shift width to 4 spaces.
set tabstop=4				" Set tab width to 4 columns.
set nobackup				" Do not save backup files.
set scrolloff=10			" Do not let cursor scroll below or above N number of lines when scrolling.
set incsearch				" While searching though a file incrementally highlight matching characters as you type.
set ignorecase				" Ignore capital letters during search.
set showcmd					" Show partial command you type in the last line of the screen.
set showmode 				" Show the mode you are on the last line.
set showmatch 				" Show matching words during a search.
set hlsearch 				" Use highlighting when doing a search.
set history=10000 			" Set the commands to save in history default number is 20.
set wildmenu 				" Enable auto completion menu after pressing TAB.
set wildmode=list:longest 	" Make wildmenu behave like similar to Bash completion.
set title					" Show file title
set cc=100					" Enable visual limit at 100 chars for good code formatting practice
set guifont=hack_nerd_font:h11
set bg=dark
set relativenumber

let g:kite_supported_languages = ['python', 'javascript', 'go']


" There are certain files that we would never want to edit with Vim.
" Wildmenu will ignore files with these extensions.
set wildignore=*.docx,*.jpg,*.png,*.gif,*.pdf,*.pyc,*.exe,*.flv,*.img,*.xlsx

" PLUGINS ---------------------------------------------------------------- {{{

" Plugin code goes here.

call plug#begin('~/.vim/autoload/plug')

Plug 'davidhalter/jedi-vim'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'preservim/nerdtree'
Plug 'morhetz/gruvbox'
Plug 'sheerun/vim-polyglot'
Plug 'ryanoasis/vim-devicons'
Plug 'scrooloose/nerdcommenter'
Plug 'Xuyuanp/nerdtree-git-plugin'
Plug 'tiagofumo/vim-nerdtree-syntax-highlight'
Plug 'PhilRunninger/nerdtree-visual-selection'
Plug 'tpope/vim-fugitive'
Plug 'scrooloose/nerdtree', { 'on':  'NERDTreeToggle' }
Plug 'tpope/vim-fireplace', { 'for': 'clojure' }
Plug 'dense-analysis/ale'

call plug#end()

" Plugin configs

let g:bargreybars_auto=0
let g:airline_solorized_bg='dark'
let g:airline_powerline_fonts=1
let g:airline#extension#tabline#enable=1
let g:airline#extension#tabline#left_sep=' '
let g:airline#extension#tabline#left_alt_sep='|'
let g:airline#extension#tabline#formatter='unique_tail'
let NERDTreeQuitOnOpen=1
let g:WebDevIconsUnicodeDecorateFolderNodes = 1
let g:WebDevIconsUnicodeDecorateFolderNodeDefaultSymbol = '#'
let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols = {}
let g:WebDevIconsUnicodeDecorateFileNodesExtensionSymbols['nerdtree'] = '#'
let g:ale_virtualtext_cursor = 'current'
let g:ale_linters = {
\   'python': ['flake8', 'pylint'],
\   'go': ['vet', 'errcheck'],
\}
let g:ale_python_flake8_options = '--ignore=E501'
let g:ale_echo_msg_format = '[%linter%] [%severity%] %code% %s'
let g:gruvbox_contrast_dark = 'soft'

colorscheme gruvbox
" " }}}


" MAPPINGS ---------------------------------------------------------------
" {{{

" Mappings code goes here.

" }}}


" VIMSCRIPT --------------------------------------------------------------
" {{{

" This will enable code folding.
" Use the marker method of folding.
augroup filetype_vim
   autocmd!
   autocmd FileType vim setlocal foldmethod=marker
augroup END

" More Vimscripts code goes here.

" }}}


" STATUS LINE
"------------------------------------------------------------ {{{

" Status bar code goes here.

" }}}
