" 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>
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
" 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: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