Basarsi sulla risposta di CousinCocaine e su questa risposta a una vecchia domanda che ho postato sul forum BBEdit, sono arrivato a questo AppleScript, che è specifico per Python:
-------------------------------------------------------------------------------------------
# Auth: Christopher Stone
# modif Fabio Grazioso
# dCre: 2015/09/22 11:00
# dMod: 2017/10/03 18:40
# Appl: BBEdit, Terminal
# Task: Attempt to run the front text document in Terminal.app.
# Libs: None
# Osax: None
# Tags: @Applescript, @Script, @BBEdit, @Run, @Front, @Document, @Terminal, @Python
-------------------------------------------------------------------------------------------
tell application "BBEdit"
tell front text document
if on disk = false then error "Front document is not saved!"
if modified = true then save
if contents of line 1 does not start with "#!" then error "No valid shebang line found!"
set docName to its name
set docFile to POSIX path of (get its file)
end tell
end tell
set shCMD to text 2 thru -1 of "
FILE=" & docFile & ";
if [[ ! -x \"$FILE\" ]]; then
chmod +x \"$FILE\";
fi
"
do shell script shCMD
set {oldTIDS, AppleScript's text item delimiters} to {AppleScript's text item delimiters, "/"}
set docName to quoted form of docName
set docParentPath to quoted form of ((text items 1 thru -2 of docFile) as text)
set AppleScript's text item delimiters to oldTIDS
tell application "Terminal"
activate
if name of windows = {missing value} then do script
if processes of front window = {} then do script
tell front window
if its busy = true then
do script "cd " & docParentPath & " && python -i " & docName
else
do script "cd " & docParentPath & " && python -i " & docName in selected tab
end if
end tell
end tell
-------------------------------------------------------------------------------------------
Trovo questa risposta migliore di quella proposta da CousinCocaine solo perché posso creare una scorciatoia da tastiera per lo script (AFAIK non è possibile associare un collegamento a un servizio).
I passi da seguire per farlo funzionare sono i seguenti:
- Copia il codice dello script in Script Editor.app (che si trova nella cartella / Applicazioni / Utility /)
- Compilare lo script (icona martello sulla barra dell'Editor)
- Salvalo nella cartella degli script di BBEdit: / Users // Library / Application \ Support / BBEdit / Scripts /
-
Opzionale In BBEdit associare lo script a una scorciatoia da tastiera, in Preferenze - > Menu e amp; Scorciatoie - > Script (devi fare clic a destra del nome dello script, dove dice "none" e premere il tuo collegamento)
Infine, si crea uno script in BBEdit, ad es. uno script python, lo salvi e mentre è la finestra frontale in BBEdit, selezioni AppleScript dal menu Script di BBEdit. Questo invierà lo script python al terminale e lo script verrà eseguito.
Informazioni su AppleSript, si noti che l'opzione "-i" nella chiamata python nella riga
do script "cd " & docParentPath & " && python -i " & docName
fa in modo che dopo l'esecuzione dello script python, l'interprete python non sia uscito, come da richiesta nella domanda.
Se le linee
do script "cd " & docParentPath & " && python -i " & docName
do script "cd " & docParentPath & " && python -i " & docName in selected tab
sono sostituiti dalle linee
do script "cd " & docParentPath & " && ./" & docName
do script "cd " & docParentPath & " && ./" & docName in selected tab
allora questo AppleScript può lanciare qualsiasi script, a condizione che la linea "shebang" sia presente nello script, come prima linea.
Per uno script python, la riga shebang dovrebbe essere:
#!/usr/bin/env python
mentre per uno script di shell bash la riga di shebang dovrebbe essere:
#!/bin/bash