-
Notifications
You must be signed in to change notification settings - Fork 1.6k
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
Use a circular list to manage buffer #422
Conversation
@akalipetis @parisk feel free to give this some early feedback if you have the time. |
Awesome. This looks great (code and functionality-wise). Giving it a quick try works like a charm 👍 . Also running I witnessed only mess-ups with git log / top: If I scrolled 👍 let's move this forward. I'd be happy to help wherever needed. |
The old code was assuming that the buffer was not going to change, this is not true with the current impl though where the list is shifted and ybase and ydisp need to be compensated for that.
I still need to do more verification but I believe the bugs are worked out. There are a few lingering TODOs still to do though. After this change we should then get rid of the majority if not all of the An early comparison shows with an
|
@Tyriar a few comments on the TODO list:
This will be handled in automated tests, right?
Can you update this with the test cases you have in mind, in order for the rest of us to contribute as well?
Should we consider this as ✔︎ done, since we have the |
If possible, having had jumped into this escape sequence code I have a far better understanding of how it all works. I might follow this one with some refactors and tests, rather than jamming it all into this PR.
Ideas right now:
I might see if I can write an automated perf test first, it would be nice to have something a little more solid than a timer on my phone 😄 I was also thinking maybe we could look at adding the PR that syncs #146 to see if we've overcome the issues that made this slow. It would be awesome if |
Automated testing is probably best left for better support within xterm.js. I did some more tests and compared it to
Here's the print test: |
This is ready for a full review now. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍 This looks mostly 👌. Just a couple of comments and we are good to go.
Also did a few manual tests on this and the experience is definitely faster than before.
@@ -0,0 +1,186 @@ | |||
/** |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you update the license according to the paradigm set in #388
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
|
||
// TODO: Why is this done twice? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What is the issue here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's done just below, it could probably be merged with the one below.
The terminal should be a lot faster at processing output now thanks to xtermjs/xterm.js#422 Also of note: xtermjs/xterm.js#417: changed escape sequence for alt-arrow to work on bash on os x
Fixes #361
This is a work in progress, I'm putting the PR out now so the changes are easier to view and so I can get early feedback. Initial testing shows this is a lot faster in processing a large
ls -lR
as well as being responsive and showing the output as it's going (as opposed to locking up).Remaining tasks:
git log
)ybase
andydisp
are handledCircularList.splice
withCircularList.shiftElements
where possible