Come utilizzare l'applicazione AppleScript con "apri file -a AppleScriptApp"?

1

Alcune informazioni su ciò che sto cercando di ottenere

Sto usando emacs all'interno del terminale. So dell'esistenza di versioni di cacao di emacs (come GNU Emacs per OS X , Aquamacs e Porta Mac Emacs ). Ma preferisco inserire il codice all'interno del terminale.

Tutto è a posto nel mio setup tranne il fatto che a volte voglio aprire il file all'interno di emacs dal Finder o da qualsiasi altro software. Quindi ho bisogno di trovare il processo in esecuzione di emacs nel terminale o crearne uno nuovo e aprire la fine all'interno di eseguire emacs.

Quindi in pratica ho bisogno di creare un wrapper .app per aprire i file in emacs del terminale.

Cerca di farlo

Per quanto ho capito, open -a my_emacs_app /path/to/file è uguale all'apertura del file nell'applicazione dal finder. Ecco perché sto testando my_emacs_app usando il comando open .

Il mio primo tentativo è creare un'applicazione usando AppleScript. Ecco il codice che elabora gli argomenti passati:

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

E in effetti funziona quando provo a eseguirlo usando

$ osascript my_emacs_app.scpt /path/to/file

Apre il file e registra ciò che si prevede di registrare il file.

Quando lo eseguo utilizzando

$ osascript my_emacs_app.scpt

Registra nel file che non sono stati passati argomenti. Quindi ero felice con esso. Ma ricorda, ho bisogno di un wrapper .app . Quindi sto esportando questo script come applicazione (e lo colloco all'interno della cartella /Applications/ ). E poi quando provo a

$ open -a my_emacs_app /path/to/file

Vedo che l'applicazione viene eseguita per un breve periodo e quindi viene chiusa. Ma non succede nulla di buono. Voglio dire, il file non è aperto in emacs e nulla è registrato nel file di log.

Qualcuno sa, come esportare tali script?

    
posta d12frosted 23.01.2015 - 11:46
fonte

2 risposte

1

Dopo alcuni tentativi e hack diversi ho trovato una buona soluzione per risolvere il mio problema. Primo: implementa lo script. Quindi apri Automator.app e crea una nuova applicazione. Quindi combina Get Specified Finder Items azione e Run AppleScript . Quindi ora open -a my_automator_app /path/to/file passerà /path/to/file/ al mio script. E questo è bello.

P. S. nell'argv verrà memorizzato l'alias nel file, non nel percorso del file posix. Per convertirlo da alias a posix dovresti usare

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

Oh e non dimenticare che potresti voler ottenere quoted form of filePath nel caso contenga caratteri speciali (come lo spazio o ~ ).

Puoi ottenere maggiori informazioni sui percorsi alias / posix qui

    
risposta data 25.01.2015 - 09:27
fonte
0

Da man open nella sezione EXAMPLES:

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

Quindi puoi specificare il percorso per la tua applicazione AppleScript dopo l'argomento -a .

Ho provato questo e funziona per me, il percorso non deve essere assoluto.

    
risposta data 23.01.2015 - 12:38
fonte

Leggi altre domande sui tag