se nocompatible
filetype off

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

Plug 'tpope/vim-sensible'

Plug 'ntpeters/vim-better-whitespace'
Plug 'nathanaelkane/vim-indent-guides'

Plug 'chrisbra/Recover.vim'

" Plug 'Valloric/YouCompleteMe', { 'do': './install.sh --clang-completer --system-libclang' }

Plug 'Shougo/vimproc.vim' , { 'do': 'make -f make_unix.mak' }

Plug 'Shougo/unite.vim'
Plug 'tsukkee/unite-tag'
Plug 'Shougo/neomru.vim'

Plug 'ciaranm/securemodelines'

Plug 'chrisbra/SudoEdit.vim'

Plug 'nanotech/jellybeans.vim'
Plug 'majutsushi/tagbar'
Plug 'bling/vim-airline'
Plug 'scrooloose/syntastic'
Plug 'tomtom/tcomment_vim'
"Plug 'Raimondi/delimitMate'
" Plug 'jalcine/cmake.vim' --slow

Plug 'editorconfig/editorconfig-vim'

Plug 'kchmck/vim-coffee-script'
Plug 'pangloss/vim-javascript'
Plug 'mtscout6/vim-cjsx'
Plug 'mxw/vim-jsx'

Plug 'ledger/vim-ledger'

Plug 'dag/vim2hs'
Plug 'eagletmt/ghcmod-vim'
Plug 'eagletmt/neco-ghc'

" clojure
Plug 'tpope/vim-leiningen'
Plug 'tpope/vim-projectionist'
Plug 'tpope/vim-dispatch'
Plug 'tpope/vim-fireplace'

Plug 'marijnh/tern_for_vim'

Plug 'jnwhiteh/vim-golang'
Plug 'Blackrush/vim-gocode'

Plug 'zah/nimrod.vim'

Plug 'wting/rust.vim'

Plug 'derekwyatt/vim-scala'

Plug 'othree/html5.vim'

Plug 'dogrover/vim-pentadactyl'
Plug 'superbrothers/vim-vimperator'

Plug 'idris-hackers/idris-vim'

Plug 'tpope/vim-fugitive' " git integration

Plug 'kana/vim-textobj-user'
Plug 'rbonvall/vim-textobj-latex'
Plug 'kana/vim-textobj-indent'
Plug 'bps/vim-textobj-python'
Plug 'kana/vim-textobj-function'

Plug 'rhysd/vim-grammarous'

Plug 'tpope/vim-surround'

Plug 'Lokaltog/vim-easymotion'

Plug 'peterhoeg/vim-qml'

Plug 'ekalinin/Dockerfile.vim'

Plug 'digitaltoad/vim-jade'

Plug 'jvoorhis/coq.vim'

Plug 'MarcWeber/vim-addon-mw-utils'
Plug 'tomtom/tlib_vim'
Plug 'MarcWeber/vim-addon-actions'
Plug 'MarcWeber/vim-addon-completion'
Plug 'MarcWeber/vim-addon-goto-thing-at-cursor'
Plug 'MarcWeber/vim-addon-errorformats'
Plug 'MarcWeber/vim-addon-nix'

" vim-sleuth?

Plug 'urbit/hoon.vim'

call plug#end()

filetype plugin indent on

set tw=0 expandtab ts=8 sts=2 sw=2 sm ai si
set noml mls=5				" scan 5 lines for modelines
syn on						" enable syntax highlighting
set hls						" highlight search
set bg=dark					" dark background

filetype plugin on

au BufNewFile,BufRead *.vala  setf cs
au BufNewFile,BufRead *.md  set ft=markdown
au syntax java  set ts=4 sts=4 sw=4
au BufNewFile,BufRead *.i set ft=swig
au BufReadCmd *.epub call zip#Browse(expand("<amatch>"))
au syntax haskell setl omnifunc=necoghc#omnifunc
let g:necoghc_enable_detailed_browse=1
let g:haskell_conceal              = 0

au syntax tex setl iskeyword+=:
let g:syntastic_tex_checkers=['lacheck']
let g:syntastic_scala_checkers=[]
call tcomment#DefineType('nix', '# %s')

" better paragraph object for tex files FIXME
call textobj#user#plugin('latexparagraph', {
\   'paragraph': {
\     'pattern': ['\n\s*\n\\|\\end\\|\\begin', '\n\s*\n\\|\\begin\\|\\end'],
\     'select-a': 'al',
\     'select-i': 'il',
\   },
\ })

" disable annoying "file is read-only" warnings
au FileChangedRO * set noreadonly

se foldlevel=99

set vb                          " turn on the "visual bell" - which is much quieter than the "audio blink"
set nobackup
se bs=2

let g:ycm_filetype_blacklist = { 'sql': 1 }
let g:ycm_semantic_triggers = {'haskell' : ['.']}
let g:ycm_show_diagnostics_ui = 1
let g:EclimCompletionMethod = 'omnifunc'

" WIP
function LedgerGeneratePostings()
  '<,'>!ledger -f - print --generated
  '<,'>s/\s\s\s+/  /g
endfunction

let g:jellybeans_background_color = '000000'

if &term == "screen" || &term == "screen-bce"
  set t_ts=k
  set t_fs=\
endif
set title

" unite bindings
if executable('ag')
  let g:unite_source_grep_command = 'ag'
  let g:unite_source_grep_default_opts = '--noheading --nocolor'
  let g:unite_source_rec_async_command= 'ag --nocolor --nogroup -g ""'
endif
call unite#filters#matcher_default#use(['matcher_fuzzy'])
call unite#filters#sorter_default#use(['sorter_selecta'])
call unite#custom#profile('default', 'context', {
  \ 'ignorecase': 1,
  \ 'smartcase': 1,
  \ })
" The prefix key
nnoremap [unite] <Nop>
nmap <space> [unite]
" General purpose
nnoremap [unite]<space> :Unite -start-insert source<cr>
" Files
nnoremap [unite]f :Unite -start-insert file_rec/async<cr>
" Grepping
nnoremap [unite]g :Unite grep:.<cr>
nnoremap [unite]d :Unite grep:.:-s:\(TODO\|FIXME\)<cr>
" Content
nnoremap [unite]o :Unite -start-insert -auto-preview outline<cr>
nnoremap [unite]l :Unite -start-insert line<cr>
nnoremap [unite]t :Unite -auto-preview -start-insert tag<cr>
" Quickly switch between recent things
nnoremap [unite]F :Unite buffer tab file_mru directory_mru<cr>
nnoremap [unite]b :Unite buffer<cr>
nnoremap [unite]m :Unite file_mru<cr>
" Yank history
nnoremap [unite]y :Unite history/yank<cr>