Efter min förra post om REPL under MacOSX har jag provat ytterligare ett par alternativ och nu kommit fram till att TextMate nog trots allt är det bästa.
Med hjälp av följande kommando-script bundet till Enter-tangenten (och Input satt till Selected Text or Line) har jag precis det REPL-stöd jag vill ha.
EXPR="$(cat | sed 's/\\/\\\\/g' | sed 's/\"/\\\"/g')"
export SHELL_NAME=${SHELL_NAME:="FSharp Interactive"}
export SHELL_INTERPRETER=${SHELL_INTERPRETER:="fsi"}
osascript << END
tell application "iTerm"
if (count (every session of every terminal)) = 0 then
make new terminal
end if
tell the first terminal
if not (exists session named "$SHELL_NAME") then
launch session "Default"
tell the current session
set name to "$SHELL_NAME"
write text "$SHELL_INTERPRETER"
end tell
end if
select session named "$SHELL_NAME"
tell session named "$SHELL_NAME"
write text "$EXPR" & ";;"
end tell
end tell
end tell
END
Det här scriptet är skrivet för F Sharp och dess “F# Interactive” (fsi
) med kan med några små justeringar lätt användas för Haskell (ghci
), OCaml (ocaml
), Lisp, Scala eller liknande.
Edit: Jag använder en något modifierad version av den “F# language grammar” som återfinns i SVN-repot för TextMate bundles.