Aufbauend auf der Antwort von CousinCocaine und auf dieser Antwort auf eine alte Frage, die ich selbst im BBEdit-Forum gepostet habe, bin ich zu diesem AppleScript gekommen, das spezifisch für Python ist:
-------------------------------------------------------------------------------------------
# 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
-------------------------------------------------------------------------------------------
Ich finde diese Antwort besser als die von CousinCocaine vorgeschlagene, nur weil ich eine Tastenkombination für das Skript erstellen kann (AFAIK es ist nicht möglich, eine Tastenkombination mit einem Dienst zu verknüpfen).
Folgende Schritte müssen ausgeführt werden, damit dies funktioniert:
- Kopieren Sie den Skriptcode in die Datei "Script Editor.app" (im Ordner "/ Applications / Utilities /").
- Kompilieren Sie das Skript (Hammersymbol in der Editorleiste)
- Speichern Sie es im BBEdit-Skriptordner: / Users // Library / Application \ Support / BBEdit / Scripts /
- Optional Verknüpfen Sie das Skript in BBEdit mit einer Tastenkombination in den Voreinstellungen -> Menüs und Verknüpfungen -> Skripten (Sie müssen rechts neben dem Namen des Skripts auf "Keine" klicken und die Verknüpfung drücken).
- Schließlich erstellen Sie ein Skript in BBEdit, z. B. ein Python-Skript, und speichern es. Während es sich in BBEdit um das vordere Fenster handelt, wählen Sie das AppleScript aus dem Menü "Skripte" von BBEdit aus. Dadurch wird das Python-Skript an das Terminal gesendet und das Skript ausgeführt.
Beachten Sie beim AppleSript, dass die Option "-i" im Python-Aufruf in der Zeile steht
do script "cd " & docParentPath & " && python -i " & docName
bewirkt, dass nach der Ausführung des Python-Skripts der Python-Interpreter gemäß der Anfrage in der Frage nicht beendet wird.
Wenn die Zeilen
do script "cd " & docParentPath & " && python -i " & docName
do script "cd " & docParentPath & " && python -i " & docName in selected tab
werden durch die Zeilen ersetzt
do script "cd " & docParentPath & " && ./" & docName
do script "cd " & docParentPath & " && ./" & docName in selected tab
dann kann dieses AppleScript jedes Skript starten, vorausgesetzt, die richtige "shebang" -Zeile ist in dem Skript als allererste Zeile vorhanden. Für ein Python-Skript sollte die Shebang-Zeile wie folgt lauten:
#!/usr/bin/env python
Für ein Bash-Shell-Skript sollte die Shebang-Zeile wie folgt lauten:
#!/bin/bash