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