autocmd!
set runtimepath+=$XDG_DATA_HOME/vim/vundle
-call vundle#rc('$XDG_DATA_HOME/vim')
+call vundle#begin('$XDG_DATA_HOME/vim')
Plugin 'gmarik/vundle'
Plugin 'elzr/vim-json'
Plugin 'firef0x/pkgbuild.vim'
Plugin 'junegunn/vim-easy-align'
-" Plugin 'kien/ctrlp.vim'
-" Plugin 'klen/python-mode'
-Plugin 'wilywampa/python-mode'
+Plugin 'justinmk/vim-sneak'
+Plugin 'klen/python-mode'
Plugin 'kshenoy/vim-signature'
Plugin 'majutsushi/tagbar'
+Plugin 'octol/vim-cpp-enhanced-highlight'
Plugin 'raimondi/delimitmate'
-" Plugin 'rking/ag.vim'
Plugin 'scrooloose/syntastic'
-Plugin 'shougo/vimproc.vim'
Plugin 'shougo/unite.vim'
+Plugin 'shougo/vimproc.vim'
Plugin 'sjl/gundo.vim'
Plugin 'tomtom/tcomment_vim'
+Plugin 'tpope/vim-abolish'
Plugin 'tpope/vim-endwise'
Plugin 'tpope/vim-fugitive'
Plugin 'tpope/vim-repeat'
Plugin 'tpope/vim-surround'
Plugin 'tpope/vim-unimpaired'
Plugin 'valloric/youcompleteme'
+Plugin 'vim-scripts/replacewithregister'
Plugin 'vim-scripts/yankring.vim'
+" colorschemes
+Plugin 'flazz/vim-colorschemes'
+
" snippets
Plugin 'sirver/ultisnips'
Plugin 'honza/vim-snippets'
" find an alternative (latex-box? Automatic Latex Plugin?)
Plugin 'http://git.code.sf.net/p/vim-latex/vim-latex'
" Plugin 'lokaltog/vim-easymotion'
-Plugin 'justinmk/vim-sneak'
Plugin 'chrisbra/checkattach'
Plugin 'nathanaelkane/vim-indent-guides'
Plugin 'alx741/vinfo'
-Plugin 'octol/vim-cpp-enhanced-highlight'
Plugin 'vim-scripts/mediawiki.vim'
-Plugin 'vim-scripts/replacewithregister'
-Plugin 'tpope/vim-abolish'
Plugin 'derekwyatt/vim-protodef'
+Plugin 'rdnetto/ycm-generator'
+" needs editing colorscheme
+" Plugin 'jeaye/color_coded'
+
+call vundle#end()
" remove entries first
set runtimepath -=$HOME/.vim
" colorscheme {{{1
syntax on
-colorscheme badwolf
+colorscheme badfox
" options {{{1
-" put $ and the end of text to be replaced with 'cw' and the likes
-set cpoptions+=$
-
" moving around, searching and patterns {{{2
set incsearch " show match for partly typed search command
set ignorecase " ignore case when using a search pattern
" diff mode {{{2
set diffopt+=filler " show filler lines
set diffopt+=vertical " always vertical split
-set diffopt+=iwhite " ignore white space
set diffopt+=context:10 " 10 lines context between changes
" reading and writing files {{{2
set wildignore+=*.pyc " Python byte code
set wildignore+=*.orig " Merge resolution files
+" running make and jumping to errors {{{2
+set makeprg=make\ -w " print changing directories
+
+set grepprg=ag\ --vimgrep\ $*
+
" language specific {{{2
set isfname-== " don't treat `=` as being part of filenames
" various {{{2
-set virtualedit=all " let cursor move past last char in <C-V> mode
+set virtualedit+=block " let cursor move past last char in <C-V> mode
+set virtualedit+=onemore " allow the cursor to move just past the end of the line
set viminfo='100,<50,s10,h,n$XDG_CACHE_HOME/vim/viminfo " viminfo defaults but save file in .cache
set viewdir=$XDG_CACHE_HOME/vim/view//
\ endif
augroup END
+" Check for file modifications automatically {{{2
+" (current buffer only)
+" Use :NoAutoChecktime to disable it (uses b:autochecktime)
+fun! MyAutoCheckTime()
+ " only check timestamp for normal files
+ if &buftype != '' | return | endif
+ if ! exists('b:autochecktime') || b:autochecktime
+ checktime %
+ let b:autochecktime = 1
+ endif
+endfun
+augroup MyAutoChecktime
+ au!
+ au FocusGained,BufEnter,CursorHold,InsertEnter * call MyAutoCheckTime()
+augroup END
+command! NoAutoChecktime let b:autochecktime=0
+command! ToggleAutoChecktime let b:autochecktime=!get(b:, 'autochecktime', 0) | echom "b:autochecktime:" b:autochecktime
+
" bindings {{{1
" allow both <space> and / to be <leader>
map <space> <leader>
" make
-nnoremap <leader>r :make<cr>
-nnoremap <leader><cr> :make<cr>
+nnoremap <leader>r :make!<cr>
+nnoremap <leader><cr> :make!<cr>
" unhighlight search
nnoremap <silent> <Leader>/ :silent nohl<CR>
" paste from clipboard
nnoremap <leader>p+ :silent! set paste<CR>"+p:set nopaste<CR>
-" Clean trailing whitespace
-nnoremap <silent> <leader>ww m':%s/\s\+$//<cr>:let @/=''<cr>``zz
+" strip trailing whitespace
+function! StripWhitespace(line1, line2, ...) " {{{2
+ let s_report = &report
+ let &report=0
+ let pattern = a:0 ? a:1 : '\s\+$'
+ let oldview = winsaveview()
+ exe 'keepjumps keeppatterns '.a:line1.','.a:line2.'substitute/'.pattern.'//e'
+ if oldview != winsaveview()
+ redraw
+ endif
+ call winrestview(oldview)
+ let &report = s_report
+endfunction " }}}2
+command! -range=% -nargs=0 -bar Untrail keepjumps call StripWhitespace(<line1>,<line2>)
+nnoremap <silent> <leader>ww :Untrail<CR>
" Source
vnoremap <leader>S y:execute @@<cr>:echo 'Sourced selection.'<cr>
map <F1> :ls<CR>:b<space>
+" move between windows
nnoremap <C-L> <C-W>w
nnoremap <C-H> <C-W>W
vnoremap <MiddleMouse> s<MiddleMouse>
" fix legacy vi inconsistency
-map Y y$
+nnoremap Y y$
+" copy to clipboard
+xnoremap Y "+y
" allow repeat operator on visual
vnoremap . :normal .<CR>
exe 'nnoremap co'.idt.' :set tabstop='.idt.' shiftwidth='.idt.' softtabstop='.idt.'<CR>'
endfor
+" toggle auto format of text
+nnoremap coa :set <C-R>=&formatoptions =~ "a" ? 'formatoptions-=a' : 'formatoptions+=a'<CR><CR>
+nnoremap [oa :set formatoptions+=a<CR>
+nnoremap ]oa :set formatoptions-=a<CR>
+
" space will toggle current fold in normal mode
nnoremap <leader><Space> za
" create folds around visual selection
nmap <silent> <leader>qq :echo "hi<" . synIDattr(synID(line("."),col("."),1),"name") . '> trans<' . synIDattr(synID(line("."),col("."),0),"name") . "> lo<" . synIDattr(synIDtrans(synID(line("."),col("."),1)),"name") . ">"<CR>
" commands {{{1
-command! Cd lcd %:h
-command! Cr execute('lcd ' . FindGitDirOrHome())
+command! Cd cd %:h
+command! Cr execute('cd ' . FindGitDirOrHome())
+command! LCd lcd %:h
+command! LCr execute('lcd ' . FindGitDirOrHome())
" plugins options {{{1
" airline {{{2
nmap <silent> [og <Plug>IndentGuidesEnable
nmap <silent> ]og <Plug>IndentGuidesDisable
+" close-another-window {{{2
+nnoremap <silent> <C-W>c <NOP>
+nnoremap <silent> <C-W>cc <C-W>c
+nnoremap <silent> <C-W>ch :CloseLeftWindow<CR>
+nnoremap <silent> <C-W>cl :CloseRightWindow<CR>
+nnoremap <silent> <C-W>cj :CloseBelowWindow<CR>
+nnoremap <silent> <C-W>ck :CloseAboveWindow<CR>
+
" python-mode {{{2
let g:pymode_rope_completion = 0
let g:pymode_lint_ignore = "E221,E266,E501"
let g:pymode_syntax_space_errors = 0 " don't bother me when I'm typing
+" signature {{{2
+" disable '[ mappings
+
+let g:SignatureMap = {
+ \ 'GotoNextLineAlpha' : "",
+ \ 'GotoPrevLineAlpha' : "",
+ \ 'GotoNextSpotAlpha' : "",
+ \ 'GotoPrevSpotAlpha' : "",
+ \ }
+
" synastic {{{2
let g:syntastic_enable_highlighting = 0
let g:syntastic_error_symbol='E'
" ultisnips {{{2
let g:UltiSnipsEditSplit = 'vertical'
let g:UltiSnipsSnippetsDir = expand("$XDG_CONFIG_HOME/vim/ultisnips")
-let g:UltiSnipsSnippetDirectories = ["UltiSnips", "ultisnips"]
+if has('fname_case')
+ let g:UltiSnipsSnippetDirectories = ["UltiSnips", "ultisnips"]
+endif
let g:UltiSnipsExpandTrigger = "<tab>"
let g:UltiSnipsJumpForwardTrigger = "<tab>"
let g:UltiSnipsJumpBackwardTrigger = "<s-tab>"
let g:unite_source_grep_default_opts = '--smart-case -w --vimgrep --hidden --ignore ''.hg'' --ignore ''.svn'' --ignore ''.git'' --ignore ''.bzr'''
let g:unite_source_grep_recursive_opt = ''
end
-nnoremap <silent> [unite]a :<C-u>Unite grep -input=\12\17<CR>
+nnoremap <silent> [unite]a :<C-u>Unite grep:.::\12\17<CR>
command! -nargs=1 Ag Unite grep -input=<args>
" unite-file_rec {{{3
nnoremap <silent> [unite]f :<C-u>Unite -start-insert file_rec/async<CR>
" unite-buffer {{{3
-call unite#custom#default_action('buffer', 'goto')
-nnoremap <silent> [unite]b :<C-u>Unite buffer<CR>
+call unite#custom#default_action('buffer', 'open')
+nnoremap <silent> [unite]b :<C-u>Unite buffer:-<CR>
" unite-menu {{{3
let g:unite_source_menu_menus = {}
let g:ycm_global_ycm_extra_conf = expand('$XDG_CONFIG_HOME/vim/ycm_extra_conf.py')
let g:ycm_extra_conf_vim_data = ['getcwd()']
let g:ycm_add_preview_to_completeopt = 1
+let g:ycm_complete_in_comments = 1
+let g:ycm_complete_in_strings = 1
let g:ycm_autoclose_preview_window_after_insertion = 0
"let g:ycm_extra_conf_vim_data = ['%:p']
-nnoremap <leader>jd :YcmCompleter GoTo<CR>
+nnoremap gd :YcmCompleter GoTo<CR>
" vim-easy-align {{{2
" start interactive EasyAlign in visual mode