Skip to content

Instantly share code, notes, and snippets.

@pfitzseb
Created January 25, 2018 15:52
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pfitzseb/c6f989e565be5e1a1aafb94a19a83918 to your computer and use it in GitHub Desktop.
Save pfitzseb/c6f989e565be5e1a1aafb94a19a83918 to your computer and use it in GitHub Desktop.
didWriteToREPL.jl
function didWriteToREPL(f)
origout = STDOUT
rout, wout = redirect_stdout()
didWrite = false
t = @async begin
r = ""
didWriteLinebreak = false
while isopen(rout)
r = readavailable(rout)
didRead = length(r) > 0
if !didWrite && didRead
print(origout, "\r \r")
end
didWrite |= didRead
write(origout, r)
if didRead
didWriteLinebreak = r[end] == 0x0a
end
end
didWriteLinebreak
end
res = nothing
didWrite = false
didWriteLinebreakOut = false
try
res = f()
catch e
res = e
finally
redirect_stdout(origout)
close(wout)
try
didWriteLinebreakOut = wait(t)
catch e
didWriteLinebreakOut = false
@show e
end
end
return res, didWrite, didWriteLinebreakOut
end
julia> didWriteToREPL() do
for i = 1:10
println(i)
sleep(0.2)
end
end
1
2
3
4
5
6
e = InterruptException()
(InterruptException(), true, false)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment