magiblot / turbo

An experimental text editor based on Scintilla and Turbo Vision.
Other
461 stars 35 forks source link

Very nice job. Terminal subwindow would be great! #24

Open iocoder opened 2 years ago

iocoder commented 2 years ago

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.

magiblot commented 2 years ago

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!

ziotom78 commented 8 months ago

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.

magiblot commented 7 months ago

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?

ziotom78 commented 7 months ago

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!

magiblot commented 7 months ago

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 😊.

win8linux commented 3 months ago

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?

magiblot commented 3 months ago

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.