magiblot/turbo

Very nice job. Terminal subwindow would be great!

iocoder opened this issue · 7 comments

This is a very nice CLI editor. I love it. The code is also clean and very well written.

If not done yet, it would be great to have built-in terminal as well, so that one can edit their files and then switch to that terminal window to run 'make' for example to build the project, 'gdb' for debugging for example, etc. This is will make it an ALL IN ONE editor yet still so simple.

I can try to work on it on my free time as it helps me a lot edit and compile code in remote machines (microcontrollers and embedded systems) without need to have multiple ssh sessions or need to use tmux.

Hi Ramses!

Thanks for the comment and thanks for the compliment.

The terminal subwindow has already been suggested in #12. Regarding this matter, I already developed a Proof-Of-Concept terminal widget for Turbo Vision: https://github.com/magiblot/tvterm. But it can't be used yet for this purpose since it doesn't have scrollback or text selection.

Nevertheless, I still have doubts about this feature. Not only you would have terminal windows inside the application, but these windows would have to be comfortable to use, and I'm not sure how I'd do that.

In my case, I alternate between the shell and Turbo with the Suspend menu entry (Alt+F+U) and the fg shell command. It could be better but it's not too bad. It does, however, have the disadvantage that text copied from Turbo can't be pasted while Turbo is suspended.

Cheers!

Awesome work! Thanks for having posted the link to Tvterm here, I was going to implement something similar…

I second the wish to have a terminal-in-window, it's a very useful feature and many editors provide it. (Emacs, Vim, Visual Studio Code, Kate…)

Suspending the editor can be a simpler solution, but a terminal window alongside the source code makes easier to debug stuff, hunt compiler errors, keep a running SSH connection, running a REPL, etc. For instance, I regularly write Julia scripts in Emacs while keeping a Julia REPL in a terminal buffer, so that I can quickly test things on the REPL, move to the script and fix it, go back to the REPL, etc.

Unfortunately, I have almost no experience with libvterm or terminal handling in general, but if there is some easy but boring task I could do to add support for libvterm to Turbo, I would be happy to help.

Hi Maurizio!

Thanks for the interest. I of course agree about the advantages of this feature, but I was unable to finish it when I had time to work on it.

From my perspective as a developer, instead of integrating tvterm into Turbo, I believe it is simpler to run Turbo in tvterm. There exists a similar project with working terminal scrollback, twin. Have you tried it?

Hi magiblot, thanks for the tip about twin, I wasn't aware of it. I tried it but have found that tvterm provides a much better terminal experience. (Even a plain ls produces scrambled characters with twin, while tvterm renders everything perfectly.)

So far tvterm is almost perfect, the only things it lacks are scrollback and copy-and-paste. I'll have a look at how to implement them, I cant' make promises about when but I'll surely be happy to have a look.

Thanks again for your awesome work, I really love, love, love tvision, turbo, and tvterm!

Okay. In that case, make sure to take a look at pangoterm, which is the reference implementation of a terminal emulator using libvterm.

Thanks for all the love 😊.

From my perspective as a developer, instead of integrating tvterm into Turbo, I believe it is simpler to run Turbo in tvterm.

Wouldn't doing this mean that both the turbo and tvterm menu bars will be shown? This is what happens when running turbo or any tvision-based program in twin, although in practice it's not very good due to various rendering issues. Would it be possible for an app made with tvision to show its menus in tvterm's menu bar, effectively turning it into a global menu bar?

Wouldn't doing this mean that both the turbo and tvterm menu bars will be shown?

Yes, it does. But that's mostly a problem of the current UI design of tvterm.