1 votos

¿Cómo obtener Automator para tratar el texto como RTF?

Estoy escribiendo un libro y tratando de agregar un servicio de resaltado de sintaxis para el texto seleccionado en las Páginas con Automator. Tengo un servicio acepta el texto seleccionado y lo ejecuta a través de un comando de la shell (pygmentize) que convierte a la sintaxis resaltada RTF.

El problema es que cuando el texto sea devuelto, Automator trata como texto sin formato y me sale un galimatías de la espalda. He intentado cambiar las acepta de ida y vuelta entre ricos y simple y no hace ninguna diferencia. He probado la tubería de la salida a través de textutil fue en vano.

Mi única evitar por ahora es tener el shell de comandos de copia en el portapapeles con pbcopy y, a continuación, utilizar un Automator para agarrar el contenido del portapapeles. Prefiero encontrar una manera de hacer esto sin tener que borrar el portapapeles, alguna sugerencia para conseguir Automator para tratar mi comandos de la shell de salida de texto enriquecido?

Existe de todos modos para realizar este trabajo con AppleScript?

5voto

Fuzzy Purple Monkey Puntos 702

Normalmente utilizo scripts como este en lugar de servicios de Automator:

try
    set old to the clipboard as record
end try
tell application "System Events" to keystroke "c" using command down
do shell script "export LC_CTYPE=UTF-8; pbpaste | /usr/local/bin/pygmentize -g -f rtf | pbcopy"
tell application "System Events" to keystroke "v" using command down
delay 0.05
try
    set the clipboard to old
end try
  • Si el Portapapeles está vacío, tratando de obtener resultados en un error.
  • pbpaste y pbcopy usan ASCII si las variables de configuración están desactivadas. No pude obtener pygmentize -f rtf para trabajar con caracteres no-ASCII aunque.
  • Sin el retardo set the clipboard to old a veces ser funcionaría antes de que el texto le haz pegado.

0voto

Kaydell Puntos 229

Posible Condición De Carrera

Yo estoy aprendiendo un montón de @Lauri ranta le de la respuesta, pero creo que la respuesta aún puede ser mejorado.

Creo que su escritura tiene lo que se llama una "condición de carrera". Una condición de carrera puede ser un problema porque se trata de una "raza" para ver qué proceso va a terminar en primer lugar. No es la pbcopy proceso que puede tomar diferentes cantidades de tiempo, dependiendo de la cantidad de texto que se va a copiar, y luego hay la demora en el proceso de AppleScript que hace una pausa para la misma cantidad de tiempo, pero podría no ser suficiente tiempo. Tal vez una condición de carrera es la razón de la demora fue necesaria para evitar que un error ocurra, no estoy seguro, pero podría ser un problema.

Para las condiciones de carrera, usted no desea hacer una pausa demasiado larga y lenta de todo y no quiere detenerse a poco y a causa de una posible pérdida de datos tales como la edad del portapapeles se restaurará cuando pbcopy todavía está copiando.

Creo que sería una buena idea llamar a los comandos de Unix llamado "esperar" como parte de la secuencia de comandos de shell que esperar para el pbcopy a que termine y luego de acabar con la llamada a la "demora" en la AppleScript parte. Que sólo se siente mejor para mí.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X