2 votos

¿Cómo utilizar la aplicación AppleScript con "open file -a AppleScriptApp"?

Algunos datos sobre lo que intento conseguir

Estoy usando emacs dentro de terminal. Sé de la existencia de versiones de emacs para cacao (como GNU Emacs para OS X , Aquamacs y Puerto de Emacs para Mac ). Pero prefiero codificar dentro de la 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 tengo que 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.

Así que básicamente necesito crear un .app para abrir archivos en el terminal emacs.

Tratando de conseguirlo

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 finder. Por eso estoy probando my_emacs_app utilizando open comando.

Mi primer intento es crear una aplicación utilizando 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 en realidad funciona cuando trato de ejecutarlo usando

$ osascript my_emacs_app.scpt /path/to/file

Abre el archivo y registra lo esperado en el archivo de registro.

Cuando lo ejecuto utilizando

$ osascript my_emacs_app.scpt

Registra en el archivo que no se han pasado argumentos. Así que estaba contento con ello. Pero recuerda que necesito un .app envoltura. Así que estoy exportando este script como aplicación (y lo coloco dentro de /Applications/ carpeta). Y luego cuando intento

$ open -a my_emacs_app /path/to/file

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

¿Alguien sabe cómo exportar tales scripts?

2voto

Aicanter Puntos 3

Después de varios intentos y hacks encontré una buena solución para resolver mi problema. Primero - implementar el script. Luego abrir el Automator.app y crear una nueva aplicación. A continuación, combine Get Specified Finder Items acción y 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 argv se almacenará el alias del archivo, no la ruta del archivo posix. Para convertirlo de alias a posix debe utilizar

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

Ah, y no olvide que tal vez quiera conseguir el 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/positivas aquí

0voto

hjdm Puntos 18

Desde man open en la sección de EJEMPLOS:

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

Así que usted puede especificar la ruta a su aplicación AppleScript después de -a argumento.

He probado esto y me funciona, la ruta no tiene que ser absoluta.

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