En Etherpad, ¿hay atajos para otras acciones que no sean negrita, cursiva y subrayado (tachadura, viñeta, ...)?

Bueno, casi todo está en el título: ¿hay algún atajo para realizar algo más que poner el texto en negrita, cursiva o subrayado? ¿O algún complemento que permita hacerlo?

Según un colega mío, el código fuente no parece contener tales cosas, pero tal vez nos hemos perdido algo.

preguntado el 22 de mayo de 12 a las 10:05

1 Respuestas

Etherpad contiene un editor de texto enriquecido integrado llamado ACE2 (originalmente AppJet Code Editor), que parece ser responsable del manejo de los atajos de teclado.

La ace.js El archivo que está incrustado de forma predeterminada solía estar minimizado y, por lo tanto, era difícil de leer en la versión anterior de Etherpad, pero puede leer los archivos fuente originales directamente en el infrastructure/ace parte del código fuente, a partir del cual se produce la versión minificada. Para obtener más información acerca de eso, echa un vistazo a LÉAME de ACE2. Las versiones más recientes (al menos las de etherpad.org) parecen incluir la fuente ACE2 JS normal.

El código de manejo de atajos de teclado se encuentra en ace2_inner.js, dentro de handleKeyEvent() función. En base a esto, parece que los atajos de teclado admitidos listos para usar son los siguientes (además de los atajos del navegador como Cortar/Copiar/Pegar):

  • Enviar - retorno de carro etherpad especial
  • lengüeta or cambio+lengüeta - listas de viñetas sangradas o eliminadas
  • Ctrl+Z - etherpad especial deshacer
  • Ctrl+Y - rehacer etherpad especial
  • Ctrl+B - negrita
  • Ctrl+I - cursiva
  • Ctrl+U - subrayado
  • Ctrl+H - Eliminar
  • Ctrl+S - Guardar una revisión

De hecho, nada para tachado o listas de viñetas, y nada que parezca un mecanismo de extensión fácil para atajos, por lo que es posible que deba ensuciarse las manos ;-)

Si tiene su propia implementación de Etherpad, lo más fácil podría ser modificar el código fuente de ACE2 para manejar accesos directos adicionales y luego reconstruir el ace2.js versión minificada (de acuerdo con las instrucciones en el README) si es necesario. He aquí un ejemplo de cómo manejar Ctrl+S atajo para alternar tachado, y Ctrl+L para cambiar la lista de viñetas. El atajo tachado desactiva el acceso directo Guardar como... del navegador integrado, que creo que es una ventaja, pero si no te gusta, siempre puedes optar por otra tecla que no sea S.
Inserta el siguiente fragmento en ace2_inner.js entre bloques de apariencia similar que manejan otros atajos, alrededor de la línea 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;
}

Si no puede reconstruir la versión minimizada, también puede intentar parchearla directamente usando los nombres minimizados. Aquí está la versión minificada del fragmento anterior para mí, aunque YMMV, no verifiqué si la minificación es estable y reutiliza los mismos nombres abreviados cada vez. Busque "y" (entre comillas) para localizar la versión reducida de handleKeyEvent() dentro 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;}

Finalmente, si no controla la implementación de etherpad, tal vez podría implementar algo similar usando un navegador GreaseMonkey script que parchea el predeterminado handleKeyEvent() función. Como punto de partida para conectarse al editor, intente inspeccionar el window.pad* objetos, como window.padeditor. Por ejemplo, seleccione algún texto en el editor e intente lo siguiente en la consola:

> window.padeditor.ace.execCommand('bold')
> window.padeditor.ace.execCommand('insertunorderedlist') 

contestado el 26 de mayo de 13 a las 01:05

¿Algún sobretipo, por casualidad? - Lucero

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.