diff --git a/plugin/rubocop.vim b/plugin/rubocop.vim index 2d98d4e..284e6c8 100644 --- a/plugin/rubocop.vim +++ b/plugin/rubocop.vim @@ -32,13 +32,20 @@ if !exists('g:vimrubocop_keymap') let g:vimrubocop_keymap = 1 endif -let s:rubocop_switches = ['-l', '--lint', '-R', '--rails', '-a', '--auto-correct'] +let s:rubocop_switches = ['-D', '--display-cop-names', '-l', '--lint', '-R', '--rails', '-a', '--auto-correct'] function! s:RuboCopSwitches(...) return join(s:rubocop_switches, "\n") endfunction function! s:RuboCop(current_args) + if &modified + echohl WarningMsg + echo 'RuboCop: Buffer has unsaved changes' + echohl None + return + endif + let l:extra_args = g:vimrubocop_extra_args let l:filename = @% let l:rubocop_cmd = g:vimrubocop_rubocop_cmd @@ -48,27 +55,34 @@ function! s:RuboCop(current_args) endif let l:rubocop_output = system(l:rubocop_cmd.l:rubocop_opts.' '.l:filename) - if !empty(matchstr(l:rubocop_opts, '--auto-correct\|-\')) - "Reload file if using auto correct - edit - endif + let l:auto_corrected = !empty(matchstr(l:rubocop_opts, '--auto-correct\|-\')) let l:rubocop_output = substitute(l:rubocop_output, '\\"', "'", 'g') let l:rubocop_results = split(l:rubocop_output, "\n") - cexpr l:rubocop_results - copen - " Shortcuts taken from Ack.vim - git://github.com/mileszs/ack.vim.git - exec "nnoremap q :ccl" - exec "nnoremap t T" - exec "nnoremap T TgT" - exec "nnoremap o " - exec "nnoremap go " - exec "nnoremap h K" - exec "nnoremap H Kb" - exec "nnoremap v HbJt" - exec "nnoremap gv HbJ" + if len(l:rubocop_results) && !l:auto_corrected + cexpr l:rubocop_results + botright copen + " Shortcuts taken from Ack.vim - git://github.com/mileszs/ack.vim.git + exec "nnoremap q :ccl" + exec "nnoremap t T" + exec "nnoremap T TgT" + exec "nnoremap o " + exec "nnoremap go " + exec "nnoremap h K" + exec "nnoremap H Kb" + exec "nnoremap v HbJt" + exec "nnoremap gv HbJ" + elseif l:auto_corrected " Reload file if using auto correct + silent edit + echo 'RuboCop: Auto-corrected!' + else + echo 'RuboCop: No violations!' + endif endfunction -command! -complete=custom,s:RuboCopSwitches -nargs=? RuboCop :call RuboCop() +augroup RuboCop + autocmd! + autocmd FileType ruby command! -buffer -complete=custom,s:RuboCopSwitches -nargs=? RuboCop :call RuboCop() +augroup END " Shortcuts for RuboCop if g:vimrubocop_keymap == 1