" hack to lock vim into py3
if has("python3")
	py3 pass
endif
" No Compatibility. That just sucks
" especially annoying on redhat/windows/osx
set nocompatible

filetype off                  " required

" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/Vundle.vim
call vundle#begin()
" alternatively, pass a path where Vundle should install plugins
" call vundle#begin('~/some/path/here')

" let Vundle manage Vundle, required
Plugin 'VundleVim/Vundle.vim'

" Python Mode "
Plugin 'klen/python-mode'

" Edit files using sudo/su
Plugin 'chrisbra/SudoEdit.vim'

" Fuzzy finder (files, mru, etc)
Plugin 'ctrlpvim/ctrlp.vim'
Plugin 'fisadev/vim-ctrlp-cmdpalette'

Plugin 'YankRing.vim'
Plugin 'scrooloose/nerdtree'

" Plugin 'stephanlukasczyk/vim-syntax-specautomata'

Plugin 'rust-lang/rust.vim'

Plugin 'tmux-plugins/vim-tmux'

Plugin 'IN3D/vim-raml'

" The following are examples of different formats supported.
" Keep Plugin commands between vundle#begin/end.
" plugin on GitHub repo
"Plugin 'tpope/vim-fugitive'
" plugin from http://vim-scripts.org/vim/scripts.html
"Plugin 'L9'
" Git plugin not hosted on GitHub
"Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
"Plugin 'file:///home/gmarik/path/to/plugin'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
"Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" Avoid a name conflict with L9
"Plugin 'user/L9', {'name': 'newL9'}

" All of your Plugins must be added before the following line
call vundle#end()            " required
filetype plugin indent on    " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" :PluginList       - lists configured plugins
" :PluginInstall    - installs plugins; append `!` to update or just :PluginUpdate
" :PluginSearch foo - searches for foo; append `!` to refresh local cache
" :PluginClean      - confirms removal of unused plugins; append `!` to auto-approve removal
"
" see :h vundle for more details or wiki for FAQ
" Put your non-Plugin stuff after this line


" ---------- Plugin conf ----------- "

" Ctrl-P"
"  'c' - the directory of the current file.
"  'a' - the directory of the current file, unless it is a subdirectory of the
"  cwd
"  'r' - the nearest ancestor of the current file that contains one of these
"  directories or files: .git .hg .svn .bzr _darcs
let g:ctrlp_working_path_mode = 'ra' 
"  gitignore ignore
let g:ctrlp_user_command = ['.git/', 'git --git-dir=%s/.git ls-files -oc --exclude-standard']
"  ignore scm dirs
let g:ctrlp_custom_ignore = '\v[\/]\.(git|hg|svn)$'
"  some more ignores
set wildignore+=*/tmp/*,*.so,*.swp,*.zip,*.tar.*,*.tar    " MacOSX/Linux
set wildignore+=*\\tmp\\*,*.swp,*.zip,*.exe  " Windows
let g:ctrlp_cmdpalette_execute = 1
nnoremap <silent> <F10> :CtrlPBuffer<CR>


" chrisbra/SudoEdit.vim
:let g:sudo_no_gui=1

" Python mode
" Enable colorcolumn display at max_line_length   *'g:pymode_options_colorcolumn'*
let g:pymode_options_colorcolumn = 1
" let g:pymode_options_max_line_length = 100
let g:pymode_rope = 0

if has("python3")
	let g:pymode_python = 'python3'
endif

" yankring
let g:yankring_replace_n_pkey = '<m-p>'
let g:yankring_replace_n_nkey = '<m-n>'
nnoremap <silent> <F11> :YRShow<CR>

" NERDTree
nnoremap <silent> <F9> :NERDTreeToggle<CR>

" -------------------------------------------"

set backspace=indent,eol,start

" My PC is fast enough, do syntax highlight syncing from start
autocmd BufEnter * :syntax sync fromstart

" Some File Type Stuff
" --------------------
"  Enable filetype plugins and indention
filetype on

" Enable Syntax Colors
" --------------------
"  in GUI mode we go with fruity and Monaco 12
"  in CLI mode desert looks better (fruity is GUI only)
syntax on
if has("gui_running")
  colorscheme industry 
  " set guifont=Monaco:h12
else
  colorscheme desert
endif


set showcmd           " Show (partial) command in status line.
set showmatch         " Show matching brackets.

set wildmenu          " command-line completion operates in an enhanced mode
set scrolloff=3 " scroll lines above/below cursor
set history=1000 " default 20
set incsearch " "live"-search
" set ignorecase "ignore case when searching" 
" set smartcase " sensitive with uppercase
set nrformats+=alpha " incr/decr letters C-a/-x

" Automatische Einrückung (Globale Konfiguration)
set smartindent
set smarttab

set nofoldenable " unfold by default

" UTF-8 als Default-Encoding
set enc=utf-8

" Ein Tab entspricht vier Leerzeichen (wie in PEP 8 definiert)
" Dies aber nur für python, damit es nicht mit anderen (ruby, c, Makefiles) kollidiert
autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4

" 
autocmd FileType json setlocal expandtab shiftwidth=3 tabstop=3 softtabstop=3

autocmd FileType c setlocal expandtab shiftwidth=4 tabstop=4 softtabstop=4

autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab

" enable mouse
set mouse=nvc 

" systags
set ofu=syntaxcomplete#Complete
set tags+=~/.vim/systags

" relativenumber
set relativenumber
set number

" gvim without toolbar
set guioptions-=T

""" Return to last edit position when opening files {{{
augroup LastPosition
    autocmd! BufReadPost *
        \ if line("'\"") > 0 && line("'\"") <= line("$") |
        \     exe "normal! g`\"" |
        \ endif
augroup END



" Keep undo history across sessions by storing it in a file
let vimDir = '$HOME/.vim'
if has('persistent_undo')
    let myUndoDir = expand(vimDir . '/undodir')
    " Create dirs
    call system('mkdir ' . vimDir)
    call system('mkdir ' . myUndoDir)
    let &undodir = myUndoDir
    set undofile
    set undolevels=500                      " max undos stored
    set undoreload=10000                    " buffer stored undos
endif

" --- Keybindings ---- "

set pastetoggle=<F2>
