Xterm.js: التمرير للخلف لا يعمل كما هو متوقع

تم إنشاؤها على ١٧ نوفمبر ٢٠١٦  ·  4تعليقات  ·  مصدر: xtermjs/xterm.js

يبدو أن إجمالي حجم المخزن المؤقت يريد أن يكون <viewport rows> + <scrollback> ، ولكن عندما أقوم بتوصيله في vscode ليكون 10 ، لاحظت أن مقدار التمرير المتوفر ليس 10 ويبدو أنه يتناوب بين 2 القيم.

عند تشغيل ll للحصول على جزء كبير من المخرجات ، أحصل على 6 أسطر من التمرير للخلف في المرة الأولى ، و 8 في المرة الثانية ، و 5 في المرة الثالثة ، و 7 في الرابعة ، وما إلى ذلك ، يجب أن تكون 10 أسطر بالضبط في كل مرة.

typbug

ال 4 كومينتر

يبدو أن هذا يحدث بسبب هذا المنطق في scroll :

  if (++this.ybase === this.scrollback) {
    this.ybase = this.ybase / 2 | 0;
    this.lines = this.lines.slice(-(this.ybase + this.rows) + 1);
  }

فيما يلي بعض الملاحظات / الأسئلة:

  • هناك طريقة غريبة أو لا أعتقد أنها لا تفعل شيئًا ( | 0 )
  • يتم قطع جزء من الصفوف عند الوصول إلى scrollback
  • لماذا يتم قص الخطوط على scroll ، ألا يجب أن يتم ذلك عندما يتم إلحاق this.lines ؟
  • قد يتسبب slice حدوث مشكلات في الأداء لأنه ينتج مصفوفة جديدة ويتجاهل القديم

ماذا لو بدلاً من هذا النموذج حيث يتم إعادة بناء Terminal.lines بشكل مستمر ، قمنا بتنفيذ مصفوفة دائرية وقمنا بتجريد التعقيد داخل الفصل؟ لذا ، دائمًا ما يكون حجم المصفوفة Terminal.rows + Terminal.scrollback ، مما يعني أنه لا توجد إعادة بناء مصفوفة أو shift ing (والتي يمكن أن تحتوي على مشكلات في المصفوفات الكبيرة بما يكفي) ويتم التعامل مع scrollback لنا كـ سيتم تجاوز إدخالات المصفوفة القديمة.

قد يكون من الأفضل استخدام Terminal.scrollback ، بهذه الطريقة Terminal.lines لن تحتاج إلى تغيير حجمها إلا عند تغيير Terminal.scrollback (على عكس عندما Terminal.rows يتغير bufferSize أو bufferLength إذا قمنا بذلك.

لدي فرع ويب يعمل على تنفيذ هذا النموذج الجديد باستخدام فئة CircularList ، وهو لا يعمل بنسبة 100٪ حتى الآن وسأضعه قيد الانتظار الآن للتركيز على بعض الأشياء الأخرى. https://github.com/Tyriar/xterm.js/tree/361_circular_list_scrollback

Tyriar يسعدني إجراء بعض الاختبارات على فرعك وتقديم ملاحظات إذا كنت تعتقد أن الوقت مناسب 🆗.

إنه مكسور قليلاً حاليًا ، وسيتعين عليك إيجاد بعض الوقت لإنهائه

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

fabiospampinato picture fabiospampinato  ·  4تعليقات

zhangjie2012 picture zhangjie2012  ·  3تعليقات

chris-tse picture chris-tse  ·  4تعليقات

circuitry2 picture circuitry2  ·  4تعليقات

travisobregon picture travisobregon  ·  3تعليقات