Xterm.js: موضع الاستعادة "استعادة المؤشر" ولكن ليس سمات النص

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

واجهت بعض المشكلات في العمل مع بعض سلاسل هروب VT100:

  • حفظ المؤشر (ESC 7) (DECSC)
  • استعادة المؤشر (ESC 8) (DECRC)

عادة ، يجب أن تحفظ محطة VT100 موضع المؤشر ولكن أيضًا سمات الأحرف عند كتابة تسلسل هروب مؤشر الحفظ
يجب استعادة سمات الأحرف عند كتابة مؤشر الاستعادة.

حاليًا ، يتم حفظ موضع المؤشر واستعادته ولكن ليس سمات الأحرف .

لقد اختبرت سلوك تسلسل الحفظ / الاستعادة في تطبيقات VT100 الأخرى للتأكد من أنها كانت تتعامل معها:

  • جنوم المحطة
  • فاصل
  • hterm

سأقدم بعض التفاصيل أدناه ، وسأبدأ العمل على حل لأنني أحتاجه لنفسي.
استمروا في العمل العظيم!

تفاصيل

  • إصدار المتصفح والمتصفح: Chromium: الإصدار 62.0.3202.89 (إصدار المطور) المبني على Debian buster / sid ، يعمل على Debian buster / sid (64 بت)
  • إصدار نظام التشغيل: debian buster / sid
  • إصدار xterm.js: 3.4.1

خطوات التكاثر

إليك تسلسلات الهروب VT100 المستخدمة للاختبار:

\x1b[0m (attributes off)
\x1b[1;1f (reset origin)
\x1b[2J (clear)
\x1b7 (save cursor state)
\x1b[7m (set negative color)
                        <colored> (just some output)
\x1b8 (restore cursor state)
<should not be colored>\n\r (another output - will be printed in negative color in xtermjs)

مع xtermjs ، يتم تلوين عبارة "يجب عدم تلوينها"

xterm.write('\x1b[0m\x1b[1;1f\x1b[2J\x1b7\x1b[7m                        <colored>\x1b8<should not be colored>\n\r');
// will print:
// "<should not be colored> <colored>"

في bash ، لن يتم تلوين عبارة "يجب ألا تكون ملونة"

printf '\x1b[0m\x1b[1;1f\x1b[2J\x1b7\x1b[7m                        <colored>\x1b8<should not be colored>\n\r'
# will print
# "<should not be colored> <colored>"

كيفية الإصلاح

يبدو لي أنه يجب حفظ سمات النص واستعادتها مع الموضع هنا .
إليك كيفية تعامل hterm مع مؤشر الحفظ / الاستعادة

تحرير :
يتم تخزين جميع سمات الأحرف (fg color ، bg color ، وأنماط العلم الخاصة: bold ، italic ، negative ، ..) في السمة 'curAttr' لفئة 'Terminal'. يجب أن يكون حفظ نسخة من هذه السمة كافيًا لاستعادة جميع سمات الأحرف مرة واحدة.

help wanted typbug

التعليق الأكثر فائدة

إذا لم يكن الأمر كذلك ، فيجب علينا إنشاء مشكلة منفصلة لها. من المحتمل أن يتم التقاط كل هذه الأشياء في شيء مثل كائن الحالة ICursorState للحفاظ على تنظيم الأشياء.

ال 4 كومينتر

اعتادت VTE أن تكون عربات التي تجرها الدواب أيضًا ؛ ربما يمكنك العثور على بعض القطع المثيرة للاهتمام في VTE 731205 .

@ 7PH نظرًا لأنك تقوم بتعديل DECSC على أي حال ، فربما يمكنك إلقاء نظرة على https://vt100.net/docs/vt510-rm/DECSC.html ، هناك بعض السمات الطرفية الأخرى التي لا تزال مفقودة ، والتي يجب التعامل معها أيضًا.

إذا لم يكن الأمر كذلك ، فيجب علينا إنشاء مشكلة منفصلة لها. من المحتمل أن يتم التقاط كل هذه الأشياء في شيء مثل كائن الحالة ICursorState للحفاظ على تنظيم الأشياء.

تم دمجها في العلاقات العامة وتقسيم باقي العقارات إلى https://github.com/xtermjs/xterm.js/issues/1526

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

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

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

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

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

LB-J picture LB-J  ·  3تعليقات

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