From f620354e03a69cd307f5338949d13b653765a7d4 Mon Sep 17 00:00:00 2001 From: ujihisa Date: Mon, 20 Sep 2010 23:03:19 -0700 Subject: [PATCH] initial release --- README.md | 48 +++++++++++++++++++++++++++++++++++++ plugin/quickinteractive.vim | 31 ++++++++++++++++++++++++ 2 files changed, 79 insertions(+) create mode 100644 README.md create mode 100644 plugin/quickinteractive.vim diff --git a/README.md b/README.md new file mode 100644 index 0000000..08043df --- /dev/null +++ b/README.md @@ -0,0 +1,48 @@ +# quickinteractive.vim + +Open the interactive environment with the code you are writing. + +## Ruby Example + +You are writing the following code in an unnamed buffer. + + class C + def self.f(x) + x + 1 + end + end + +Now you want to try running the code in an interactive environment. Usually you are supposed to (1) save the code on somewhere, (2) open a terminal, (3) run `irb -r {the-file}`. + +If you already installed quickinteractive.vim, you just have to run `:QuickInteractive` or to type `i`. It opens a buffer that is the environment you wanted. + + irb> + +You can do + + irb> C.f 23 + 24 + irb> + +## Haskell Example + + import Test.HUnit + foo _ = (1, 2) + test1 = TestCase (assertEqual "for (foo 3)," (1,2) (foo 3)) + tests = TestList [TestLabel "test1" test1] + +Run `:QuickInteractive` without saving the code on a file. + + ghci> runTestTT tests + +## Installation + + $ jolt install quickinteractive + +will be available soon. + +This plugin depends on quickrun, vimshell and their dependencies. + +## Author + +Tatsuhiro Ujihisa diff --git a/plugin/quickinteractive.vim b/plugin/quickinteractive.vim new file mode 100644 index 0000000..7fe2bc9 --- /dev/null +++ b/plugin/quickinteractive.vim @@ -0,0 +1,31 @@ +function! QuickInteractive() + if &filetype == 'ruby' + call QuickInteractiveRuby() + elseif &filetype == 'haskell' + call QuickInteractiveHaskell() + endif +endfunction + +function! QuickInteractiveRuby() + let l:tmpfile = tempname() . '.rb' + call writefile(getline(1, expand('$')), l:tmpfile, 'b') + let l:args = 'irb --simple-prompt -r ' . l:tmpfile + call vimshell#execute_internal_command( + \ 'iexe', vimproc#parser#split_args(l:args), { 'stdin' : '', 'stdout' : '', 'stderr' : '' }, + \ { 'is_interactive' : 0, 'is_from_command' : 1 }) +endfunction + +function! QuickInteractiveHaskell() + let l:tmpfile = tempname() . '.hs' + let l:tmpobj = tempname() . '.o' + call writefile(getline(1, expand('$')), l:tmpfile, 'b') + call vimproc#system('ghc ' . l:tmpfile . ' -o ' . l:tmpobj) + let l:args = 'ghci ' . l:tmpfile + call vimshell#execute_internal_command( + \ 'iexe', vimproc#parser#split_args(l:args), { 'stdin' : '', 'stdout' : '', 'stderr' : '' }, + \ { 'is_interactive' : 0, 'is_from_command' : 1 }) +endfunction + + +command! -nargs=0 QuickInteractive call QuickInteractive() +nnoremap i :QuickInteractive