Hide and disable REPL

415 views
Skip to first unread message

David Anthoff

unread,
Jun 23, 2016, 8:00:22 PM6/23/16
to julia...@googlegroups.com

Hi,

 

is there a way to switch off the REPL and then on again, from a task?

 

Specifically, I want to start a julia instance and pass a script in with the –L parameter that will open a socket, listen for connections and the process messages from that socket. This server listening code is all wrapped in @async macro calls. So when I start things this way, julia shows the REPL and at the same time listens for incoming messages. I can use the REPL etc. This is exactly what I want.

 

But when I receive a message, I want to temporarily switch the REPL off, i.e. it should visually disappear while I process that message, and then I want to switch it back on once I’m done processing that message.

 

Can that be done somehow?

 

Thanks,

David

 

--

David Anthoff

University of California, Berkeley

 

http://www.david-anthoff.com

 

ant...@berkeley.edu

unread,
Nov 3, 2016, 7:41:41 PM11/3/16
to julia-users
Bump, it would be great if someone could point me to some approach for this. We are getting an integrated terminal ready in VS Code, and this is the one piece missing right now.

Thanks,
David

Isaiah Norton

unread,
Nov 3, 2016, 11:38:09 PM11/3/16
to julia...@googlegroups.com
Can you explain the setup further -- Where is the REPL running? How are you interacting with it? If I take "I want to temporarily switch the REPL off, i.e. it should visually disappear" literally then it seems like a strange thing to do, so I may be missing something

If you *do* want to hide the terminal window (if any) the REPL is (may be) running in, that's going to be very hard to do generally and across platforms (on Windows under Console you can use GetActiveWindow or GetActiveConsole, but on real pty platforms the process doesn't necessarily know anything about the terminal it is connected to beyond termcap and i/o).

David Anthoff

unread,
Nov 4, 2016, 1:28:16 PM11/4/16
to julia...@googlegroups.com

Ah, I should have been clearer. I just want to hide the prompt temporarily.

 

The complete setup is slightly more complicated, but you can imagine just the following: start a normal julia REPL. Then include a file that will start a server listening on some socket. This server is all async, so as soon as the server is started, the prompt appears again and one can use this REPL window in the normal way. Now some other process connects to the socket, and sends some code that this server will eval. Before the server evals this code, I would like it to switch off the prompt, then eval the code, then switch the prompt on again.

 

The setup is that VS Code starts a new julia process, and shows the normal julia REPL in a terminal emulation within VS Code. This instance is running the server I just described. The julia VS Code extension that will send code to this REPL window if a user hits Ctrl+Enter in any of the open editor windows.

 

Not sure this is much clearer, let me know if you need more info!

 

Best,

David

ant...@berkeley.edu

unread,
Nov 14, 2016, 4:27:18 PM11/14/16
to julia-users
Bump, any help would really be appreciated. We are very, very close to releasing an amazing new version of the julia extension for VS Code, this is pretty much the only thing holding that release back right now.

Thanks,
David

cdm

unread,
Nov 14, 2016, 9:27:08 PM11/14/16
to julia-users

do you know of there are analogs of your process flow
in other VS Code extensions, say the python extension
for VS Code ... ?

it seems that perhaps another VS Code implementation
would have had to also cross this bridge ... ?

~ cdm

Steven G. Johnson

unread,
Nov 15, 2016, 8:29:11 AM11/15/16
to julia-users


On Friday, November 4, 2016 at 1:28:16 PM UTC-4, David Anthoff wrote:


The complete setup is slightly more complicated, but you can imagine just the following: start a normal julia REPL. Then include a file that will start a server listening on some socket. This server is all async, so as soon as the server is started, the prompt appears again and one can use this REPL window in the normal way. Now some other process connects to the socket, and sends some code that this server will eval. Before the server evals this code, I would like it to switch off the prompt, then eval the code, then switch the prompt on again.


Base.Terminals.clear(Base.active_repl.t); sleep(10)

will clear the REPL window (including prompt) for 10 seconds.  Instead of sleep(10), you can do wait(c) where c is a Condition variable that gets notified by the server thread once it is ready.  See http://docs.julialang.org/en/latest/stdlib/parallel/?highlight=wait

David Anthoff

unread,
Nov 15, 2016, 5:51:34 PM11/15/16
to julia...@googlegroups.com

I think most of them just have the code pasted into the REPL. That would work for us as well, but then we can’t do things like eval code in the context of a specific module.

 

From: julia...@googlegroups.com [mailto:julia...@googlegroups.com] On Behalf Of cdm
Sent: Monday, November 14, 2016 6:27 PM
To: julia-users <julia...@googlegroups.com>
Subject: Re: [julia-users] Re: Hide and disable REPL

 

 

do you know of there are analogs of your process flow

David Anthoff

unread,
Nov 15, 2016, 5:51:35 PM11/15/16
to julia...@googlegroups.com

That deletes everything, but really I just want to hide the current prompt. So say this is how the console looks:

````

julia> println(5)

5

julia>function foo(x)

   println(x)

````

So in this case the users is in the middle of entering something new into the REPL (i.e. the definition of foo). Assume that at this point my background task receives a message. I then want to be able to delete line 3+5, and position the cursor on column 1 line 3. Then I’ll execute the code that was sent to the server. Once that is finished, I want to print line 3+4, as it was before I hid the current prompt, again, starting at whatever the current cursor position is.

 

For example, say the background task received some code that printed “Foooooo” to the console, then I want the console to look like this, immediately after that code was executed:

````

julia> println(5)

5

Foooooo

julia>function foo(x)

   println(x)

````

I.e. the user could continue editing the stuff that he/she was working on before the background task briefly took over.

 

Thanks,

David

 

From: julia...@googlegroups.com [mailto:julia...@googlegroups.com] On Behalf Of Steven G. Johnson
Sent: Tuesday, November 15, 2016 5:29 AM
To: julia-users <julia...@googlegroups.com>
Subject: Re: [julia-users] Re: Hide and disable REPL

 

cdm

unread,
Nov 15, 2016, 8:56:08 PM11/15/16
to julia-users

it seems like some of the client.jl code



should provide the foundation ...


maybe something around active_repl_backend or some active_repl
switching.

also from code comments:

atreplinit(f)
Register a one-argument function to be called before the REPL interface is initialized in
interactive sessions; this is useful to customize the interface.


hopefully, helpful in the slightest ...




On Tuesday, November 15, 2016 at 2:51:35 PM UTC-8, David Anthoff wrote:

That deletes everything, but really I just want to hide the current prompt. 

<SNIP>

Reply all
Reply to author
Forward
0 new messages