Wie kann verhindert werden, dass der Skripteditor beim Kompilieren scrollt (und die Cursorposition verliert)?

Ich habe einige lange .scpt-Dateien. Mit "lang" spreche ich von Zeichenzahlen (ohne Leerzeichen) von 200.000.

Ich verwende Script Editor.app, um AppleScripts zu erstellen und zu bearbeiten (einfach, weil der Script Editor bereits installiert war).

Wenn ich eine lange Datei im Skripteditor speichere (z. B. durch Drücken von ⌘ command+ S), scrollt die Datei fast immer viel weiter nach unten in der Datei. Das Ergebnis ist, dass ich weit von der Stelle im Skript entfernt bin, an der ich gerade bearbeitet habe, und mein Textcursor verloren geht. Wenn ich direkt nach dem Speichern einen Text eingebe, wird der Text in die allerletzte Zeile des Dokuments eingefügt.

Ich muss also einige Zeit damit verbringen, die Codezeile oder den Codebereich zu finden, den ich gerade bearbeitet habe. Ich spare oft, also summiert sich diese Zeit erheblich.

Erschwerend kommt hinzu, dass die Bildlaufleiste im Skripteditor nach dem Speichern etwa 30 Sekunden lang fehlerhaft und unregelmäßig ist. Das macht manuelles Scrollen weitgehend kontraproduktiv. Manchmal beträgt diese unregelmäßige Periode bis zu einer Minute.

Zusammen führen diese beiden Fehler zu einem frustrierenden und zeitraubenden Einsparerlebnis.

Das einzige Szenario, in dem ich gesehen habe, dass diese beiden Probleme vollständig verschwunden sind, ist, wenn das Skript kurz ist. Kurz genug, um überhaupt keine Bildlaufleiste zu besitzen.

Ich habe im Allgemeinen nicht viele Programme, die auf meinem Computer laufen, wenn ich den Skripteditor verwende, und es sind nie Anwendungen, die anspruchsvoll sind. Normalerweise habe ich ein paar Chrome-Fenster, ein paar TextEdit-Fenster, ein Skript-Editor-Fenster und das war's. Meine Maschine ist ein Retina MacBook Pro Anfang 2013 mit 16 GB RAM.

Ist dieses Verhalten des Skripteditors normal? Gibt es etwas, was ich tun kann, um es zu mildern?

Ja, es ist ein normales Verhalten im (Apple) Script Editor bis OS X 10.11.6 und wie in der Antwort von wch1zpin erwähnt, ist es nicht in macOS Sierra.

Antworten (1)

Ich habe gerade versucht, was Sie mit dem Skripteditor in Sierra erklärt haben, und es ist nicht das gleiche Problem aufgetreten, das Sie haben. Dies ist vielleicht nicht die beste Lösung für Ihre Fragen, aber es wird Ihnen definitiv Zeit sparen. Warum nicht einfach einen kleinen Kommentar an der Stelle im Skript einfügen, an der sich der Cursor nach dem Speichern einer Datei befinden soll. Fügen Sie einfach etwas wie hinzu --cursorund kopieren Sie diesen Kommentar --cursorin Ihre Zwischenablage, nachdem Sie ⌘ command+ gemacht haben S, fahren Sie fort und klicken Sie auf ⌘ command+ F(was das Suchfeld direkt dort in Ihrem Skript-Editor-Fenster öffnet), dann könnten Sie auf ⌘ command+ klicken V(was automatisch so kurz einfügen würde kommentierte Zeile in das Suchfeld) wird dieser Text natürlich in Ihrem Skript hervorgehoben und bringt Sie direkt zu seiner Position.


UPDATE - NEUER ANDERER ANSATZ

Fügen Sie diesen Handler einfach am Ende einer Ihrer Skriptdateien hinzu. (Ich platziere meine Handler gerne am Ende des Skripts, damit sie den Rest des Skripts nicht überladen.)

Wenn Sie den Handler an einem beliebigen Punkt in Ihrem Skript aufrufen, werden letztendlich die Koordinaten Ihrer Bildlaufleiste abgerufen, dann wird das aktuelle Skript automatisch mit dem keycode-Befehl gespeichert und Ihre Bildlaufleiste dann wieder auf ihre ursprünglichen Koordinaten zurückgesetzt. Kommentieren oder kommentieren Sie einfach den Aufruf des Handlers, je nachdem, ob Sie Ihr Dokument speichern möchten oder nicht. Das Aufrufen des Handlers unkommentiert lassen So wie ich es jetzt eingestellt habe, wird Ihr Skript jedes Mal automatisch gespeichert, wenn Sie im Skripteditor auf die Schaltfläche „RUN“ klicken.

on setScrollPosition()
    tell application (path to frontmost application as text) to (path to me as text)
    set theFile to result
    set theFile2 to alias theFile
    tell application "Finder"
        set theName to name of theFile2
    end tell
    delay 1
    tell application "System Events"
        get value of value indicator 1 of scroll bar 1 of scroll area 1 of splitter group 1 of splitter group 1 of window theName of application process "Script Editor"
        set thePosition to the result
        key code 1 using command down
        delay 10
        set value of value indicator 1 of scroll bar 1 of scroll area 1 of splitter group 1 of splitter group 1 of window theName of application process "Script Editor" to thePosition
    end tell
end setScrollPosition

setScrollPosition()

SEITENBEMERKUNG: Ich habe das Verzögerungsset 5, das mir Zeit gibt, mit der Scrollposition herumzuspielen, nachdem ich auf „Ausführen“ geklickt habe, um zu sehen, ob es tatsächlich funktioniert oder nicht (was in der neuesten Version von Sierra der Fall ist). Sie können den Verzögerungswert anpassen oder kommentieren Sie es aus, wenn Sie es nicht brauchen.