В 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
  • Табуляция или Сдвиг+Табуляция - маркированные списки с отступами или за их пределами
  • Ctrl+Z - специальная кнопка отмены с etherpad
  • Ctrl+Y - специальный повтор etherpad
  • Ctrl+B - жирный
  • Ctrl+Я - курсив
  • Ctrl+U - подчеркнуть
  • Ctrl+H - удалить
  • Ctrl+S - Сохранить ревизию

Действительно, ничего для зачеркивания или маркированных списков, и ничего похожего на простой механизм расширения ярлыков, так что вам, возможно, придется запачкать руки ;-)

Если у вас есть собственное развертывание Etherpad, самым простым может быть изменение исходного кода ACE2 для обработки дополнительных ярлыков, а затем повторная сборка ace2.js уменьшенная версия (в соответствии с инструкциями в ЧИТАЙ МЕНЯ) при необходимости.Вот пример того, как обращаться Ctrl+S ярлык для переключения зачеркивания и Ctrl+L для переключения маркированного списка.Ярлык "зачеркнуто" отключает встроенное в браузер сохранение как...сочетание клавиш, которое, на мой взгляд, является бонусом, но если вам это не нравится, вы всегда можете выбрать другую клавишу, кроме S.
Вставьте следующий фрагмент в 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, вы, возможно, могли бы реализовать что-то подобное с помощью встроенного браузера Клавиша GreaseMonkey скрипт, исправляющий ошибку по умолчанию handleKeyEvent() функция.В качестве отправной точки для подключения к редактору попробуйте просмотреть window.pad* объекты, такие как window.padeditor.Например, выделите какой-нибудь текст в редакторе и попробуйте выполнить следующее в консоли:

> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist') 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top