En Etherpad, ¿hay atajos para otras acciones además de negrita, cursiva y subrayado (tachado, viñeta,...)?

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

  •  12-12-2019
  •  | 
  •  

Pregunta

Bueno, prácticamente todo está en el título:¿Existen atajos 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?

¿Fue útil?

Solución

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.

El 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 archivo. infrastructure/ace parte del código fuente, a partir del cual se produce la versión minimizada.Para obtener más información sobre eso, eche 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 del método abreviado de teclado se encuentra en ace2_inner.js, dentro de handleKeyEvent() función.En base a esto, parece que los atajos de teclado admitidos de fábrica son los siguientes (además de los atajos del navegador como Cortar/Copiar/Pegar):

  • Ingresar - retorno de carro especial etherpad
  • Pestaña o Cambio+Pestaña - sangrar o anular listas de viñetas
  • Control+z - deshacer especial etherpad
  • Control+Y - rehacer especial etherpad
  • Control+B - atrevido
  • Control+I - cursiva
  • Control+Ud. - subrayado
  • Control+h - borrar
  • Control+S - Guardar una revisión

De hecho, no hay nada para tachados o listas con viñetas, y nada que parezca un mecanismo de extensión sencillo para atajos, por lo que es posible que tengas que ensuciarte 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 minimizada (de acuerdo con las instrucciones del LÉAME) si es necesario.He aquí un ejemplo de cómo manejar Control+S acceso directo para alternar tachado, y Control+l para alternar la lista de viñetas.El acceso directo tachado desactiva el navegador integrado Guardar como...atajo, lo cual creo que es una ventaja, pero si no te gusta, siempre puedes optar por otra clave que no sea S.
Inserte 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 minimizada 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 minimizada de handleKeyEvent() adentro 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 controlas la implementación de etherpad, quizás puedas implementar algo similar usando un navegador mono de grasa script que parchea el valor 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') 
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top