" {{{ Vundle
set nocompatible              " be iMproved, required
filetype off                  " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'
Plugin 'scrooloose/nerdtree.git'
Plugin 'bling/vim-airline'
Plugin 'vim-jp/vim-go-extra'
Plugin 'fatih/vim-go'
Plugin 'posva/vim-vue'

Bundle 'chase/vim-ansible-yaml'
" }}}

" {{{ airline
if !exists('g:airline_symbols')
  let g:airline_symbols = {}
endif

" unicode symbols
let g:airline_left_sep = '»'
let g:airline_left_sep = '▶'
let g:airline_right_sep = '«'
let g:airline_right_sep = '◀'
let g:airline_symbols.linenr = '␊'
let g:airline_symbols.linenr = '␤'
let g:airline_symbols.linenr = '¶'
let g:airline_symbols.branch = '⎇'
let g:airline_symbols.paste = 'ρ'
let g:airline_symbols.paste = 'Þ'
let g:airline_symbols.paste = '∥'
let g:airline_symbols.whitespace = 'Ξ'

" powerline symbols
let g:airline_left_sep = ''
let g:airline_left_alt_sep = ''
let g:airline_right_sep = ''
let g:airline_right_alt_sep = ''
let g:airline_symbols.branch = ''
let g:airline_symbols.readonly = ''
let g:airline_symbols.linenr = ''

set laststatus=2
let g:airline#extensions#tabline#enabled = 1
let g:airline#extensions#tabline#tab_nr_type = 1 " tab number
let g:airline#extensions#tabline#buffer_nr_show = 1
let g:airline#extensions#tabline#show_close_button = 0
let g:airline#extensions#tabline#fnamemod = ':t:.'
" }}}

syntax enable
set history=500
set nu
set cursorline
set ai
set smartindent
" lignes autour du curseur lors d'un déplacement (j/k)
set so=5
" nombre de colonnes pour représenter une tabulation, nombre d'espaces d'une
" tabulation, nombre d'espaces d'une indentation, ne pas remplacer les
" tabulations par des espaces
set ts=4 sts=4 sw=4 noexpandtab
" detection du type de fichier et indentation adequate (touche =)
filetype on
filetype plugin on
filetype indent on
" permet de quiter un buffer modifié sans alerte (avec :bn ou :bp)
" on a toujours l'alerte si on quitte vim
set hidden
" theme de couleur
set t_Co=256
set background=dark
let g:solarized_termtrans=1
let g:solarized_termcolors=256
colorscheme solarized
" recherche avec surbrillance
set incsearch
set showmatch
set hlsearch
" relecture fichier si modif externe
set autoread
" indent javascript
filetype plugin indent on
" completion améliorée, ignore certains fichiers
set wildmenu
set wildignore=*~,*/.git/*
" changement de ligne en fin/debut de ligne pour ces mouvements
set whichwrap+=h,l
" abandon buffer quitté
set hid

" remap <ESC>
inoremap jk <ESC>
" leader key
let mapleader = "\<Space>"

" modeline
set modeline
" tabs
set expandtab
set tabstop=2
set shiftwidth=2

" {{{ Shortcuts
" clear search
nnoremap <Leader>c :nohl<cr>
" NERdTree
nnoremap <Leader>o :NERDTree<cr>
" save
nnoremap <Leader>w :w<CR>
" quit
nnoremap <Leader>q :q<CR>
" navigate buffers
nnoremap <Leader>l :bn<CR>
nnoremap <Leader>h :bp<CR>
nnoremap <Leader>d :bd<CR>
" copy/paste system clipboard
nnoremap <Leader>pp :setlocal paste!<CR>
vmap <Leader>y "+y
vmap <Leader>d "+d
nmap <Leader>p "+p
nmap <Leader>P "+P
vmap <Leader>p "+p
vmap <Leader>P "+P
" enter visual mode
nmap <Leader><Leader> V
" Automatically jump to end of text you pasted
vnoremap <silent> y y`]
vnoremap <silent> p p`]
nnoremap <silent> p p`]
" }}}


" Stop that stupid window from popping up
map q: :q

" {{{ Vundle
" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" }}}

" {{{ Go auto-format
autocmd FileType go autocmd BufWritePre <buffer> Fmt
nnoremap <Leader>i :GoImports<cr>
" }}}

" {{{ Vue.js components
autocmd FileType vue syntax sync fromstart
" }}}
