Opierając się na odpowiedzi CousinCocaine i tej odpowiedzi na stare pytanie, które zamieściłem na forum BBEdit, dotarłem do tego AppleScript, który jest specyficzny dla Pythona:
-------------------------------------------- -----------------------------------------------
# Auth: Christopher Stone
# modif Fabio Grazioso
# dCre: 2015/09/22 11:00
# dMod: 2017/10/03 18:40
# Appl: BBEdit, Terminal
# Zadanie: próba uruchomienia przedniego dokumentu tekstowego w Terminal.app.
# Libs: brak
# Osax: Brak
# Tagi: @Applescript, @Script, @BBEdit, @Run, @Front, @Document, @Terminal, @Python
-------------------------------------------------- -----------------------------------------
powiedz aplikacji „BBEdit”
tell front text document
jeśli on disk = false to błąd „Przedni dokument nie został zapisany!”
jeśli zmodyfikowano = prawda, a następnie zapisz
jeśli zawartość wiersza 1 nie zaczyna się od „#!” następnie błąd „Nie znaleziono poprawnej linii shebang!”
ustaw docName na jego nazwę
ustaw docFile na ścieżkę POSIX (pobierz jej plik)
koniec powiedz
koniec powiedz
ustaw shCMD na tekst od 2 do -1 z "
FILE = "& docFile &";
gdyby [[ ! -x \ "$ PLIK \"]]; następnie
chmod + x \ "$ FILE \";
fi
"
wykonaj skrypt powłoki shCMD
ustaw {oldTIDS, ograniczniki elementów tekstowych AppleScript} na {ograniczniki elementów tekstowych AppleScript, „/”}
ustaw docName na cytowaną formę docName
ustaw docParentPath na cytowaną formę ((elementy tekstowe od 1 do -2 w docFile) jako tekst)
ustaw ograniczniki elementów tekstowych AppleScript na oldTIDS
powiedz aplikacji „Terminal”
Aktywuj
jeśli nazwa windows = {brakująca wartość}, wykonaj skrypt
jeśli procesy okna frontowego = {}, wykonaj skrypt
powiedz przedniej szybie
jeśli jest zajęty = true
wykonaj skrypt "cd" & docParentPath & "&& python -i" & docName
jeszcze
wykonaj skrypt "cd" & docParentPath & "&& python -i" & docName na wybranej karcie
koniec, jeśli
koniec powiedz
koniec powiedz
-------------------------------------------------- -----------------------------------------
Uważam, że ta odpowiedź jest lepsza niż ta zaproponowana przez CousinCocaine tylko dlatego, że mogę utworzyć skrót klawiaturowy do skryptu (AFAIK nie jest możliwe skojarzenie skrótu z usługą).
Kroki, które należy wykonać, aby to zadziałało, są następujące:
- Skopiuj kod skryptu do Script Editor.app (znajdującego się w folderze / Applications / Utilities /)
- Skompiluj skrypt (ikona młotka na pasku edytora)
- Zapisz go w folderze skryptów BBEdit: / Users // Library / Application \ Support / BBEdit / Scripts /
- Opcjonalnie W BBEdit skojarz skrypt ze skrótem klawiaturowym, w Preferencjach -> Menu & Skróty -> Skrypty (musisz kliknąć na prawo od nazwy skryptu, gdzie jest napisane "brak ”i naciśnij swój skrót)
- Na koniec tworzysz skrypt w BBEdit, np. skrypt Pythona, zapisujesz go i chociaż jest to okno frontowe w BBEdit, wybierasz AppleScript z menu skryptów BBEdita. Spowoduje to wysłanie skryptu Pythona do terminala i zostanie on wykonany.
Jeśli chodzi o AppleSript, zwróć uwagę, że opcja „-i” w wywołaniu Pythona w linii
do script "cd" & docParentPath & "&& python -i" & docName
sprawia, że po wykonaniu skryptu Python interpreter Pythona nie jest zamykany, zgodnie z żądaniem w pytaniu.
Jeśli linie
do script "cd" & docParentPath & "&& python -i" & docName
wykonaj skrypt "cd" & docParentPath & "&& python -i" & docName na wybranej karcie
zastępuje się liniami
do script "cd" & docParentPath & "&& ./" & docName
do script "cd" & docParentPath & "&& ./" & docName w wybranej zakładce
następnie ten AppleScript może uruchomić dowolny skrypt, pod warunkiem, że w skrypcie znajduje się właściwa linia „shebang”, jako pierwsza linia.
W przypadku skryptu w Pythonie linia shebang powinna wyglądać następująco:
#! / usr / bin / env python
podczas gdy dla skryptu powłoki bash linia shebang powinna wyglądać następująco:
#! / bin / bash