¿Cómo usar la aplicación AppleScript con “abrir archivo -a AppleScriptApp”?

1

Alguna información sobre lo que estoy tratando de lograr

Estoy usando emacs dentro de la terminal. Sé de la existencia de versiones de cacao de emacs (como Emacs de GNU para OS X , Aquamacs y Emacs Mac Port ). Pero prefiero codificar dentro del terminal.

Todo está bien en mi configuración, excepto el hecho de que a veces quiero abrir un archivo dentro de emacs desde Finder o cualquier otro software. Así que necesito encontrar el proceso de ejecución de emacs en la terminal o crear uno nuevo y abrir la multa dentro de la ejecución de emacs.

Básicamente, necesito crear un contenedor .app para abrir archivos en emacs de terminal.

Intentando hacerlo

Según tengo entendido, open -a my_emacs_app /path/to/file es lo mismo que abrir el archivo en la aplicación desde el buscador. Por eso es que estoy probando my_emacs_app usando el comando open .

Mi primer intento es crear una aplicación usando AppleScript. Aquí está el código que procesa los argumentos pasados:

on run argv
    if (count of argv) > 0 then
        -- get file path from argv
        -- and log to logfile for testing purposes
        return "defined"
    else
        -- no args means no file
        -- log to logfile that we can't extract file path
        -- from empty arguments
        return "failed"
    end if
end run

Y, de hecho, funciona cuando intento ejecutarlo usando

$ osascript my_emacs_app.scpt /path/to/file

Abre el archivo y registra lo que se espera que registre el archivo.

Cuando lo ejecuto usando

$ osascript my_emacs_app.scpt

Se registra en el archivo que no se pasaron argumentos. Así que estaba feliz con eso. Pero recuerda, necesito un envoltorio .app . Así que estoy exportando este script como aplicación (y lo coloco dentro de la carpeta /Applications/ ). Y luego cuando trato de

$ open -a my_emacs_app /path/to/file

Veo que la aplicación se ejecuta por un corto tiempo y luego se cierra. Pero no pasa nada bueno. Quiero decir, el archivo no se abre en emacs y nada se registra en el archivo de registro.

¿Alguien sabe cómo exportar tales scripts?

    
pregunta d12frosted 23.01.2015 - 11:46

2 respuestas

1

Después de algunos intentos y trucos diferentes, encontré una buena solución para resolver mi problema. Primero - implementar el script. Luego abre el Automator.app y crea una nueva aplicación. Luego combina la acción Get Specified Finder Items y la acción Run AppleScript . Así que ahora open -a my_automator_app /path/to/file pasará /path/to/file/ a mi script. Y eso es genial.

P. S. en el archivo argv se almacenará el alias en el archivo, no la ruta del archivo posix. Para convertirlo de alias a posix debes usar

set aliasPath to item 1 of item 1 of argv
set filePath to (the POSIX path of aliasPath)

Ah, y no olvides que es posible que desees obtener quoted form of filePath en caso de que contenga algunos caracteres especiales (como espacio o ~ ).

Puede obtener más información sobre las rutas de alias / posix aquí

    
respondido por el d12frosted 25.01.2015 - 09:27
0

Desde man open en la sección EJEMPLOS:

  

"open -a /Applications/TextEdit.app '/Volumes/Macintosh HD/foo.txt'" opens the document in the application specified (in this case, TextEdit).

Por lo tanto, puede especificar la ruta a su aplicación AppleScript después del argumento -a .

Probé esto y funciona para mí, la ruta no tiene que ser absoluta.

    
respondido por el Mateusz Szlosek 23.01.2015 - 12:38

Lea otras preguntas en las etiquetas