Gibt es in Etherpad Abkürzungen für andere Aktionen als fett, kursiv und unterstrichen (Strich, Aufzählungspunkt, ...)?

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

  •  12-12-2019
  •  | 
  •  

Frage

Nun, so ziemlich alles steht im Titel:gibt es Abkürzungen, um etwas anderes auszuführen, als Text fett, kursiv oder unterstrichen zu machen?Oder irgendein Plugin, das das erlaubt?

Laut einem Kollegen von mir scheint der Quellcode solche Dinge nicht zu enthalten, aber vielleicht haben wir etwas verpasst?

War es hilfreich?

Lösung

Etherpad enthält einen eingebetteten Rich-Text-Editor namens ACE2 (ursprünglich AppJet Code Editor), der für die Handhabung von Tastaturkürzeln verantwortlich zu sein scheint.

Der ace.js standardmäßig eingebettete Dateien waren in älteren Versionen von Etherpad minimiert und daher schwer zu lesen, aber Sie können die ursprünglichen Quelldateien direkt im lesen infrastructure/ace teil des Quellcodes, aus dem die verkleinerte Version hergestellt wird.Für weitere Informationen dazu haben Sie einen Blick auf README-DATEI von ACE2.Neuere Versionen (zumindest die etherpad.org ones) scheinen die normale ACE2 JS-Quelle zu enthalten.

Der Code für die Handhabung von Tastenkombinationen befindet sich in ace2_inner.js, innerhalb der handleKeyEvent() Funktion.Auf dieser Grundlage sieht es so aus, als ob die standardmäßig unterstützten Tastaturkürzel die folgenden sind (über den Verknüpfungen des Browsers wie Ausschneiden / Kopieren / Einfügen):

  • Geben - spezieller Etherpad Wagenrücklauf
  • Tab oder Shift+Tab - Aufzählungslisten einrücken oder einrücken
  • Strg+Z - spezielles Etherpad rückgängig machen
  • Strg+Y - spezielles Etherpad-Redo
  • Strg+B - Bold
  • Strg+I - kursiv
  • Strg+U - unterstreichen
  • Strg+H - löschen
  • Strg+S - Speichern Sie eine Revision

Nichts für durchgestrichene oder Aufzählungslisten und nichts, was nach einem einfachen Erweiterungsmechanismus für Verknüpfungen aussieht, sodass Sie sich möglicherweise die Hände schmutzig machen müssen ;-)

Wenn Sie eine eigene Bereitstellung von Etherpad haben, ist es möglicherweise am einfachsten, den Quellcode von ACE2 zu ändern, um zusätzliche Verknüpfungen zu verarbeiten, und dann das neu zu erstellen ace2.js verkleinerte Version (gemäß den Anweisungen in der README) bei Bedarf.Hier ist ein Beispiel für die Handhabung Strg+S tastenkürzel für durchgestrichenes Umschalten und Strg+L für Aufzählungsliste umschalten.Die durchgestrichene Verknüpfung deaktiviert das integrierte Browser-Speichern unter...abkürzung, was ich finde, ist ein Bonus, aber wenn Sie das nicht mögen, können Sie sich immer für einen anderen Schlüssel entscheiden als S.
Fügen Sie das folgende Snippet ein ace2_inner.js zwischen ähnlich aussehenden Blöcken, die andere Abkürzungen handhaben, um Zeile 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;
}

Wenn Sie die minimierte Version nicht neu erstellen können, können Sie auch versuchen, sie direkt mit den minimierten Namen zu patchen.Hier ist die verkleinerte Version des obigen Snippets für mich, obwohl YMMV, ich habe nicht überprüft, ob die Verkleinerung stabil ist und jedes Mal dieselben verkürzten Namen wiederverwendet.Suchen Sie nach "y" (mit den Anführungszeichen), um die verkleinerte Version von zu finden handleKeyEvent() inneren 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;}

Wenn Sie die Etherpad-Bereitstellung nicht steuern, können Sie möglicherweise etwas Ähnliches mithilfe eines In-Browsers implementieren Fettäffchen skript, das den Standard patcht handleKeyEvent() Funktion.Versuchen Sie als Ausgangspunkt für das Einbinden in den Editor, das zu überprüfen window.pad* objekte, wie zum Beispiel window.padeditor.Wählen Sie beispielsweise einen Text im Editor aus und versuchen Sie Folgendes in der Konsole:

> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist') 
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top