initial release
This commit is contained in:
commit
f620354e03
48
README.md
Normal file
48
README.md
Normal file
@ -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 `<space>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
|
31
plugin/quickinteractive.vim
Normal file
31
plugin/quickinteractive.vim
Normal file
@ -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 <Space>i :<C-u>QuickInteractive<Cr>
|
Reference in New Issue
Block a user