-
Notifications
You must be signed in to change notification settings - Fork 2.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consider switching to DomTerm #1212
Comments
I gave the PR a quick try. It works surprisingly well for a quick integration. A couple of things I noticed:
|
Thanks for the feedback. When it comes to performance, I know of two main areas of concern:
There is also an issue if you change the width, which forces all lines to be re-broken. This would be better done lazily: Only re-break lines that are visible. Doing that hasn't been a priority. |
When it comes to packaging, the upstream DomTerm project is based on autotools, which has some advantages: I have a lot of experience with autotools, plus autotools works great for things that will be distributed as packages on GNU/Linux distributions. (I've started on packaging for Fedora.) I have no experience creating npm modules. I guess there are two ways to go:
The former has more dependencies; the latter has more duplication, and things that must be updated in parallel. Note also the "Using domterm program" section
My suggestion is to do the latter approach, but provide an option to use an external domterm program if it is available. What do you think? |
I would suggest that this could be another extension like So that the application devs and users have the choice of using what they want. |
For the short-term an extension makes sense, but for a "road-map" (longer-term) if you're going to have a standard/default terminal emulator, I think domterm is a better choice. As far as I know it does everything xterm does, and much more. (If there is anything xterm does that domterm doesn't, it can be implemented in domterm, but many domterm features appear impractical to add to xterm.) It's always better the less configuration and extra steps users have to do. Having domterm be the default allows other packages to integrate better and make use of domterm features. For example running If you're familiar with emacs, you can think of domterm as offering the best of |
Yes that sounds good, having it has another extension for now will give time to try it out and it's not because one extension is called |
As an external extension correct? We could introduce an abstract terminal interface and make |
Correct yes as an external extension. I agree with the abstract interface. |
@PerBothner said:
+1 |
I checked in a shell script that checks out DomTerm from upstream git, and copies over the files we need. It uses some The script is Of course this should be re-written in yarn/npm, but I don't know how to do that (yet). There are also some policy issues I'm unfamiliar with, such as where in the directory tree to stash the DomTerm checkout: DomTerm is not a node module, but adding a The script should probably copy the extracted files to lib/domterm rather than src/domterm, but I wanted to change as little as possible until I know better where things should go. A minor detail: For consistency, running yarn should not by default update an existing checkout (using git pull). It seems reasonably to do a |
I did a re-write of the line-breaking. It uses column-counting (rather than looking at I also added upstream domterm as a dependency in |
@marcdumais-work Do you consider this to be still relevant? |
Triggered by this PR #1204
For convenience, I copy the text here:
@PerBothner wrote:
"The xterm terminal emulator is fairly solid, but it has a number of limitations compared to DomTerm. DomTerm is especially good for REPL/shell-type uses, which I assume shoudl be of interest to the Theia community. See this introductory article and this link for a summary.
Thanks to Theia's browser/backend separation I was able to drop in DomTerm in place of xterm with only a couple of days work, in spite of my lack of experience (so far) with both Theia and TypeScript. However, there are some issues that I could use help with, as noted in the above link. For example, how do I set the DOMTERM environment variable in the shell process?"
The text was updated successfully, but these errors were encountered: