في Etherpad، هل توجد أي اختصارات لإجراءات أخرى غير الخط الغامق والمائل والتسطير (الخط، النقطة النقطية، ...)؟

StackOverflow https://stackoverflow.com//questions/10698889

  •  12-12-2019
  •  | 
  •  

سؤال

حسنًا، كل شيء تقريبًا موجود في العنوان:هل هناك أي اختصارات لتنفيذ شيء آخر غير جعل النص غامقًا أو مائلًا أو تحته خط؟أو أي البرنامج المساعد يسمح بذلك؟

وفقًا لأحد زملائي، يبدو أن الكود المصدري لا يحتوي على مثل هذه الأشياء، لكن ربما فاتنا شيء ما؟

هل كانت مفيدة؟

المحلول

يحتوي Etherpad على محرر نص منسق مضمن يسمى ACE2 (في الأصل AppJet Code Editor)، والذي يبدو أنه مسؤول عن معالجة اختصارات لوحة المفاتيح.

ال ace.js تم تصغير الملف المضمن افتراضيًا وبالتالي يصعب قراءته في الإصدار الأقدم من Etherpad، ولكن يمكنك قراءة ملفات المصدر الأصلية مباشرة في infrastructure/ace جزء من التعليمات البرمجية المصدر, ، والتي يتم إنتاج النسخة المصغرة منها.لمزيد من المعلومات حول ذلك، ألق نظرة على الملف التمهيدي الخاص بـ ACE2.يبدو أن الإصدارات الأحدث (على الأقل etherpad.org منها) تتضمن مصدر ACE2 JS العادي.

يوجد رمز معالجة اختصار لوحة المفاتيح في ace2_inner.js, ، داخل handleKeyEvent() وظيفة.وبناءً على ذلك، يبدو أن اختصارات لوحة المفاتيح المدعومة خارج الصندوق هي التالية (أعلى اختصارات المتصفح مثل القص/النسخ/اللصق):

  • يدخل - عودة النقل etherpad خاص
  • فاتورة غير مدفوعة أو يحول+فاتورة غير مدفوعة - المسافة البادئة أو المسافة البادئة للقوائم النقطية
  • كنترول+ز - التراجع عن etherpad خاص
  • كنترول+ي - إعادة إيثرباد خاصة
  • كنترول+ب - عريض
  • كنترول+أنا - مائل
  • كنترول+ش - تسطير
  • كنترول+ح - يمسح
  • كنترول+س - حفظ المراجعة

لا يوجد شيء يتوسطه خط أو قوائم نقطية بالفعل، ولا شيء يبدو وكأنه آلية تمديد سهلة للاختصارات، لذلك قد تحتاج إلى توسيخ يديك ؛-)

إذا كان لديك نشر خاص بك لـ Etherpad، فقد يكون من الأسهل تعديل الكود المصدري لـ ACE2 للتعامل مع اختصارات إضافية، ثم إعادة إنشاء ace2.js نسخة مصغرة (وفقًا للتعليمات الموجودة في ملف التمهيدي) إذا لزم الأمر.فيما يلي مثال على كيفية التعامل كنترول+س اختصار للتبديل يتوسطه خط، و كنترول+ل لتبديل القائمة النقطية.يؤدي الاختصار الذي يتوسطه خط إلى تعطيل المتصفح المدمج "حفظ باسم"...الاختصار، والذي أجده بمثابة مكافأة، ولكن إذا لم يعجبك ذلك، فيمكنك دائمًا اختيار مفتاح آخر غيره س.
أدخل المقتطف التالي في ace2_inner.js بين الكتل المتشابهة التي تتعامل مع الاختصارات الأخرى، حول السطر 3200:

/* Ctrl+S toggles striketrough, and prevents triggering the browser's Save dialog */
if ((!specialHandled) && isTypeForCmdKey &&
    String.fromCharCode(which).toLowerCase() == "s" &&
    (evt.metaKey ||  evt.ctrlKey)) {
  // ctrl/cmd-s (strikethrough toggle)
  fastIncorp(13); // don't ask me ;-)
  evt.preventDefault();
  toggleAttributeOnSelection('strikethrough');
  specialHandled = true;
}
if ((!specialHandled) && isTypeForCmdKey &&
    String.fromCharCode(which).toLowerCase() == "l" &&
    (evt.ctrlKey)) {
  // ctrl/cmd-L (bullet list toggle)
  fastIncorp(9); // seriously, don't ask me ;-)
  evt.preventDefault();
  doInsertUnorderedList();
  specialHandled = true;
}

إذا لم تتمكن من إعادة إنشاء الإصدار المصغر، فيمكنك أيضًا محاولة تصحيحه مباشرة باستخدام الأسماء المصغرة.هذه هي النسخة المصغرة من المقتطف أعلاه بالنسبة لي، على الرغم من YMMV، لم أتحقق مما إذا كان التصغير مستقرًا ويعيد استخدام نفس الأسماء المختصرة في كل مرة.ابحث عن "y" (مع علامتي الاقتباس) لتحديد النسخة المصغرة من handleKeyEvent() داخل ace.js:

if ((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="s"&&(i.metaKey || i.ctrlKey)){G(13);\\ni.preventDefault();c("strikethrough");Cp=true;}if((!Cp)&&Cu&&String.fromCharCode(Ct).toLowerCase()=="l"&&(i.metaKey||i.ctrlKey)){G(9);\\ni.preventDefault();As();Cp=true;}

أخيرًا، إذا لم تكن تتحكم في نشر etherpad، فربما يمكنك تنفيذ شيء مشابه باستخدام متصفح داخل المتصفح الشحوم قرد البرنامج النصي الذي يصحح الافتراضي handleKeyEvent() وظيفة.كنقطة بداية للربط بالمحرر، حاول فحص ملف window.pad* كائنات، مثل window.padeditor.على سبيل المثال، حدد بعض النصوص في المحرر وجرب ما يلي في وحدة التحكم:

> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist') 
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top