Mode Central
- Mehr Modi
Fehlt Ihre Lieblingssprache in SubEthaEdit? Vielleicht findet sie sich ja schon in unserer Sammlung von selbstgeschriebenen Modi.
- Einen Modus schreiben
Einen eigenen Modus schreiben? Hier gibt es Dokumentation und ein Entwickler Kit.
- Skripte schreiben
Hier erfahren Sie wie man Skripte für SubEthaEdit schreiben kann die die Funktionalitäten des Programms erweitern.
SubEthaEdit skripten
SubEthaEdit kann mit AppleScript geskriptet werden und (aus AppleScript heraus) auch mit anderen Sprachen. Skripten können im "Resources/Scripts/" Ordner eines Modus abgelegt werden um dann im "Modus" Menü und in der Symbolleiste aufzutauchen. Wenn ein Skript grundsätzlich nützlich erscheint, kann es auch in "~/Library/Application Support/SubEthaEdit/Scripts/" abgelegt werden und erscheint dann in SubEthaEdits AppleScript Menü. Diese Skripte können auch in "/Library/Application Support/SubEthaEdit/Scripts/" installiert werden, damit alle Benutzer des Rechners sie verwenden können. Die Reihenfolge der Skripte in den Menüs entspricht der alphabetischen Reihenfolge ihrer Dateinamen.
Bilder für die Symbolleiste können für Modus Skripte im "Resources" Verzeichnis des Modes abgelegt werden. Bei globalen Skripten können Sie im Verzeichnis des Skripts abgelegt werden. Ausserdem bietet SubEthaEdit noch einige eingebaute Icons für Skripte, die da wären: "ToolbarIconBuild", "ToolbarIconBuildAndRun", "ToolbarIconRun", "ToolbarIconRunInTerminal", "ToolbarIconTerminal", "ToolbarIconColorChooser" und "ToolbarIconOpenURL".
Jedes Skript sollte einen "seescriptsettings()" Handler bereitstellen der SubEthaEdit mitteilt welche Eigenschaften das Skript hat (z.B. Name, Tastaturkürzel oder Bild für die Symbolleiste). Das folgende Beispiel stellt eine Liste der derzeit unterstützten Eigenschaften in seinen Kommentaren bereit.
Beispiel: Rotate13
Das folgende Skript zeigt eine typische Anwendung von SubEthaEdits AppleScript Schnittstelle. Es zeigt unter anderem Interaktion mit Selektionen und der Zwischenablage und ruft ein externes Perl Skript auf um den ROT13 Algorithmus zu implementieren.
-- Skript Eigenschaften
on seescriptsettings()
return {displayName:"Rotate13", shortDisplayName:"Run", keyboardShortcut:"^~$@r", toolbarIcon:"ToolbarIconRunInTerminal", inDefaultToolbar:"yes", toolbarTooltip:"Super secure encryption", inContextMenu:"yes"}
-- Hier eine Übersicht über die zur Zeit unterstützten Skript Eigenschaften
-- displayName: Name der in Menüs angezeigt wird
-- shortDisplayName: Kurzer Name für die Werkzeugleiste
-- keyboardShortcut: Ein Tastaturkürzel. alt=~, ctrl=^, shift=$, cmd=@
-- toolbarIcon: Ein Bild für die Werkzeugleiste
-- inDefaultToolbar: Soll es anfänglich in der Werkzeugleiste auftauchen?
-- toolbarTooltip: Tooltip für die Werkzeugleiste
-- inContextMenu: Soll es im Ctrl-Klick Menü auftauchen?
end seescriptsettings
-- das eigentliche Skript
tell application "SubEthaEdit"
set savedClipboard to the clipboard
if (length of selection = 0) then
set the clipboard to contents of front document as text
else
set the clipboard to contents of selection as text
end if
end tell
-- Das folgende Kommando ruft ein Perl Skript auf. Bitte achten Sie auf
-- die export Preambel die sicherstellt das pbpaste den Text in der
-- richtigen Dateikodierung erhält
set shellscriptString to "export __CF_USER_TEXT_ENCODING=0x1F5:0x8000100:0x8000100; pbpaste | /usr/bin/perl -pe 'y/A-Za-z/N-ZA-Mn-za-m/'"
set shellresult to do shell script shellscriptString without altering line endings
tell application "SubEthaEdit"
set the clipboard to savedClipboard
if (length of selection = 0) then
set contents of front document to shellresult
else
set contents of selection of front document to shellresult as text
end if
end tell
Fallstricke beim Skripten
Wenn Skripte innerhalb von SubEthaEdit ausgeführt werden, gilt es folgende Feinheiten zu beachten:
- Cocoa Scripting liefert beim Sichern, z.B. "save front document", sofort einen Timeout. Wenn Sie also sichern wollen, ohne vorher etwas anderes im Skript gemacht zu haben, sollte Sie wie folgt vorgehen:
Der try Block um "save front document" fängt den Timeout ab und fährt fort. Das Kommando sichern wird trotzdem ausgeführt. Der if Block wird benötigt, da beim ersten Sichern ein Dialog angezeigt wird. Da "save front document" leider ohne zu warten sofort zurückkehrt, würde man sonst falsche Daten erhalten.
- Es gilt außerdem den Kontext zu beachten. Befehle in tell Blöcken werden in einer etwas anderen Umgebung ausgeführt als im Skripteditor. Überprüfen Sie daher Ihre Skripte immer auch in SubEthaEdit selbst.
- Leider funktioniert "path to resource" auf Grund eines Fehlers in Mac OS X derzeit leider nicht korrekt.