En s'appuyant sur la réponse de CousinCocaine et sur cette réponse à une vieille question que j'ai moi-même postée sur le forum BBEdit, je suis arrivé à cet AppleScript, qui est spécifique pour 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
-------------------------------------------------------------------------------------------
Je trouve cette réponse meilleure que celle proposée par CousinCocaine simplement parce que je peux créer un raccourci clavier vers le script (AFAIK il n'est pas possible d'associer un raccourci à un service).
Les étapes à suivre pour que cela fonctionne sont les suivantes :
- Copiez le code script dans le script Editor.app (trouvé dans le dossier /Applications/Utilities/)
- Compilez le script (icône en forme de marteau sur la barre de l'éditeur).
- Enregistrez-le dans le dossier BBEdit scripts : /Users//Library/Application\ Support/BBEdit/scripts/
-
En option Dans BBEdit, associez le script à un raccourci clavier, dans les Préférences -> Menus & Raccourcis -> script (vous devez cliquer à droite du nom du script, là où il est écrit "none", et appuyer sur votre raccourci).
- Enfin, vous créez un script dans BBEdit, par exemple un script Python, vous le sauvegardez, et alors qu'il est la fenêtre avant dans BBEdit, vous sélectionnez l'AppleScript dans le menu script de BBEdit. Ceci enverra le script Python au Terminal et le script sera exécuté.
À propos de l'AppleSript, remarquez que l'option "-i" dans l'appel Python à la ligne
do script "cd " & docParentPath & " && python -i " & docName
fait en sorte qu'après l'exécution du script Python, l'interpréteur Python ne soit pas quitté, comme demandé dans la question.
Si les lignes
do script "cd " & docParentPath & " && python -i " & docName
do script "cd " & docParentPath & " && python -i " & docName in selected tab
sont remplacées par les lignes
do script "cd " & docParentPath & " && ./" & docName
do script "cd " & docParentPath & " && ./" & docName in selected tab
alors cet AppleScript peut lancer n'importe quel script, à condition que la bonne ligne "shebang" soit présente dans le script, comme toute première ligne. Pour un script Python, la ligne shebang devrait être :
#!/usr/bin/env python
alors que pour un shell bash script la ligne shebang devrait être :
#!/bin/bash