diff options
Diffstat (limited to 'ftplugin/ruby.vim')
| -rw-r--r-- | ftplugin/ruby.vim | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/ftplugin/ruby.vim b/ftplugin/ruby.vim new file mode 100644 index 0000000..78673b7 --- /dev/null +++ b/ftplugin/ruby.vim @@ -0,0 +1,62 @@ +function! AddParameter() + let name = input("parameter name: ") + let cursor_position = getpos(".") + + if empty(matchstr(getline("."), '\<def\>')) + exec "?\\<def\\>" + endif + + let closing_bracket_index = stridx(getline("."), "(") + if closing_bracket_index == -1 + execute "normal A()\<Esc>" + endif + exec ':s/)/, ' . name . ')/' + exec ':silent! %s/(, /(/' + + call setpos(".", cursor_position) +endfunction + +function! InlineTemp() + let cursor_position = getpos(".") + normal "ayiw + normal $"byiW + normal dd + exec ":.,/end/ s/\\<" . @a . "\\>/" . @b . "/gI" + call setpos(".", cursor_position) +endfunction + +function! ExtractLet() + let cursor_position = getpos(".") + normal 0 + normal! dd + exec "?^\\s*\\<\\(describe\\|context\\|let\\)\\>" + normal! $p + exec 's/\v([a-z_][a-zA-Z0-9_]*) \= (.+)/let(:\1) { \2 }' + normal V= + call setpos(".", cursor_position) + normal jw +endfunction + +function! RenameVariable() + let cursor_position = getpos(".") + let name = input("new name: ") + normal "ayiw + exec ":.,/end/ s/\\<" . @a . "\\>/" . name . "/gI" + call setpos(".", cursor_position) +endfunction + +command! RAddParameter call AddParameter() +command! RInlineTemp call InlineTemp() +command! RExtractLet call ExtractLet() +command! RRenameVariable call RenameVariable() + +" run rspec test +nnoremap <leader>run :!rspec %<cr> +nnoremap <leader>t :VroomRunNearestTest<cr> +nnoremap <leader>ta :VroomRunTestFile<cr> + +" ruby refactorings +nnoremap <leader>rap :RAddParameter<cr> +nnoremap <leader>rit :RInlineTemp<cr> +nnoremap <leader>rel :RExtractLet<cr> +nnoremap <leader>rrlv :RRenameVariable<cr> |
