FAQ - SciTE Editor

  • Wie funktioniert das Properties Dateisystem von SciTE?


    (Original Dokumentation scintilla)


    Es werden bis zu 4 Basis Properties Dateien verwendet in dieser Rangfolge:


    1. Local properties (SciTE.properties), überschreiben Einstellungen aus 2. bis 4.

    Wird bei Bedarf im selben Verzeichnis erstellt, indem sich die editierte Datei befindet.

    Umgebungsvariablen stehen auch als Proprty zur Verfügung und können hier z.B. explizit überschrieben werden.


    2. Directory properties (SciTEDirectory.properties), überschreiben Einstellungen aus 3. und 4.

    Wird bei Bedarf im selben oder im Elternverzeichnis der editierten Datei erstellt.

    Z.B. verwendbar als projektspezifische Einstellungsdatei, da es für alle Unterverzeichnisse wirksam ist.


    3. User properties (SciTEUser.properties), überschreiben Einstellungen aus 4.

    Bei Standardinstallation in: C:\Users\USER-NAME\AppData\Local\AutoIt v3\SciTE

    Hier kommen alle eigenen Änderungen an Aussehen und Verhalten des Editors hinein.


    4. Global properties (SciTEGlobal.properties)

    Bei Standardinstallation in: C:\Program Files (x86)\AutoIt3\SciTE

    Enthält alle Editoreinstellungswerte.


    Wenn SciTE intern auf eine Proprty zugreift, geschieht das nach dieser Priorität. D.h., nur wenn kein Eintrag in Local/Directory oder User vorhanden ist wird auf die Standardeinstellung (Global) zugegriffen.



    "SciTEGlobal.properties" enthält alle Nicht-sprachspezifischen Properties.

    Wenn diese Properties geändert werden sollen:

    - Property kopieren

    - in "SciTEUser.properties" eintragen

    - gewünschten Benutzerwert setzen


    Grundsätzlich sollen in der Global keine Änderungen vorgenommen werden, da diese die Standardeinstellungen vorhält.


    Sprachbezogene Einstellungen werden sinnvollerweise in eigenen Properties Dateien gespeichert und mit dem Schlüsselwort "import" eingebunden (s. letzter Block in "SciTEGlobal.properties").

    Man kann auch ganz individuelle Properties Dateien erstellen, welche in der User Datei ganz am Anfang eingebunden werden. Kann so aussehen:

    import ownhotkeys

    import python_user

    import lua_user



    Alle nur AutoIt-relevanten Einstellungen finden wir in der "au3.properties". Das betrifft z.B. die Hotkeys für Run/Compile etc.

    Wenn in einer *.au3 der Hotkey "Ctrl+1" aufgerufen wird, wird eine Konfigurationsoberfläche eingeblendet. Diese greift lesend auf die au3.properties zu und ändert die Werte durch Einträge in der SciTEUser.properties.

    Auch hier empfielt es sich für Änderungen ausserhalb des Konfig-Tools, die gewünschte Property zu kopieren und in der User Datei den individuellen Wert zuzuweisen.

    Um eine in der au3.properties vergebene Kommando-Nr. zu deaktivieren, weist man dieser einen leeren Kommando-Namen zu, z.B.: command.name.10.$(au3)=.

    Zum Neu Belegen müssen dann alle Befehlskomponenten angepasst werden ( command.10.$(au3)=, command.mode.10.$(au3)=, command.shortcut.10.$(au3)= )

  • Wie richte ich User-Shortcuts ein.

    Meine Quellen sind:


    User-Shortcuts kann man in der SciTEUser.properties einrichten, indem man die Anweisung "user.shortcuts=\" erstellet und die Shortcuts hinzufügt. Dabei dient der Backslash "\" zur Zeilenfortsetzung und die Pipe "|" als Trenner. Als Beispiel hier die Einträge, die in der SciTEGlobal.properties schon drin stehen, aber das Prinzip dürfte klar sein.

    Code
    1. user.shortcuts=\
    2. Ctrl+Shift+V|IDM_PASTEANDDOWN|\
    3. Ctrl+PageUp|IDM_PREVFILE|\
    4. Ctrl+PageDown|IDM_NEXTFILE|\
    5. KeypadPlus|IDM_EXPAND|\
    6. KeypadMinus|IDM_BLOCK_COMMENT|\
    7. Ctrl+F1|IDM_HELP_SCITE|


    Eine Shortcut-Zuweisung besteht aus einem Key und einem Command, die durch die Pipe "|" getrennt werden. Ein Key besteht aus Modifikatoren (Ctrl, Shift, Alt, und Super) und einer Taste (Von F1 über 1-0, A-Z, bis zu Links, Hoch, Esc, usw.). Ein Command ist entweder ein String oder eine nummerische ID. (Weitere Details siehe SciTE Documentation, Suchbegriff: user.shortcuts)


    Die User-Shortcuts in der SciTEUser.properties überschreiben vorhandene Shortcuts entsprechend der Hierarchie, die BugFix im Posting #2 beschrieben hat.


    Zur Beachtung:


    "user.shortcuts" ist kein wirklicher "Bereich", sondern nur eine einzige virtuelle Zeile, die mithilfe von Zeilenfortsetzungszeichen in mehrere reale Zeilen umgebrochen werden kann. Deshalb werden ALLE User-Shortcuts in der SciTEGlobal.properties außer Kraft gesetzt, selbst wenn in der SciTEUser.properties nur ein einziger Shortcut steht. Sollte man nach dem Erstellen der eigenen User-Shortcuts einen Shortcut vermissen, der vorher noch funktioniert hat, kann man die gewünschten Shortcuts aus der SciTEGlobal.properties in die SciTEUser.properties zu den eigenen hinzu kopieren.


    Aus dem gleichen Grund können Kommentare nur vor oder nach der kompletten Anweisung stehen. Fügt man Kommentare innerhalb der Anweisung ein, sind alle Shortcuts ab dem ersten Kommentar ungültig.

  • Hier mal etwas was mich besonders genervt hat, vielleicht kann es ja jemand gebrauchen:


    Wie kann man die Konsolenausgabe während der Ausführung mitscrollen lassen und nach dem Beenden des Programms das Ende der Konsolenausgabe anzeigen?


    Dazu einfach in die SciTEGlobal.properties gehen welche sich in C:\Program Files (x86\AutoIt\SciTE\ (bzw. im Installationspfad von AutoIt) befindet.

    Solltet ihr SciTE nicht für AutoIt explizit nutzen schaut im Startpost den Properties-FAQ-Post an.


    Den Kommentar in Zeile 32 #output.scroll=0 mit output.scroll=2 ersetzen, oder einfach in die Zeile dadrunter schreiben, spielt keine Rolle.


    Es gibt insgesamt drei Optionen:

    • output.scroll=0 scrollt bei der Ausführung nicht mit, sondern behält die aktuelle Position bei (bzw. zeigt den Anfang)
    • output.scroll=1 scrollt bei der Ausführung mit, und scrollt zurück zum Anfang sobald die Ausführung abgeschlossen ist
    • output.scroll=2 scrollt bei der Ausführung mit, und behält nach der Ausführung die Position bei
  • Wie kann man das aktuelle Datum an der Cursor-Position einfügen?


    Python
    1. command.name.19.*=Insert Date
    2. command.19.*=dostring editor:AddText(os.date('%d.%m.%Y'))
    3. command.mode.19.*=subsystem:lua,savebefore:no
    4. command.shortcut.19.*=Shift+Alt+F11


    "19" mit einer nicht belegten Kommando-Nr. ersetzen, für "Shift+Alt+F11" setzt ihr den gewünschten HotKey.

    Der Vorteil des Properties wird hier sichtbar: Das Subsystem ist "lua" - das bedeutet Lua-Code soll ausgeführt werden. Somit kann ich hier auch komplexe Lua-Skripte direkt einsetzen ohne extra Dateien aufzurufen.


    Wo finde ich freie Kommando-Nummern?

    Man sucht in der au3.properties nach der letzten belegten Kommandonummer - bei mir ist das z.B. :

    # 34 Generate UDF header ...

    command.name.34.$(au3)=Make UDF Header
    ...


    (in dieser Datei bitte nichts ändern !)


    Die Nummern bis 49 können dann individuell genutzt werden.

    Wenn man in der SciTE-Konfiguration einige der AutoIt-Tools abgewählt hat, werden automatisch die frei gewordenen Kommando-Nr. in die SciTEUser.properties übertragen und können auch verwendet werden. Bei mir sieht das z.B. so aus:

    command.name.16.*=

    command.name.15.*=

    command.name.4.$(au3)=

    command.name.2.$(au3)=

    command.name.1.$(au3)=

    command.name.0.$(au3)=

  • Wie kann ein Button der SciTE-Toolbar En/Disabled werden?


  • Wie richte ich das User-Kontext-Menü ein?


    Für sehr Maus-affine User ist das Kontextmenü unabdingbar, weil man u. A. alle Funktionen, die im Menü Extras liegen, auf dieses Menü umleiten kann.

    Speicherung und Syntax sind analog zu den User-Shortcuts (Anzeigename=Kommando).


    user.context.menu=\

    ||\

    Next File|IDM_NEXTFILE|\

    Prev File|IDM_PREVFILE|


    Möchte man auf die Kommandos der au3.properties und SciTEUser.properties zugreifen, verwendet man

    als KommandoNummer die "11"

    & die Nummer von: command.24.*.au3=.

    So kann man z.B. Lua-Befehle auf ein Kommando legen und dieses als Kontextmenü Eintrag verfügbar machen:


    command.name.24.*=Delete Current Line

    command.mode.24.*=subsystem:lua,savebefore:no

    command.24.*=dostring scite.SendEditor(SCI_LINEDELETE)


    user.context.menu=\

    ||\

    Delete Current Line|1124|

  • Wie kann man den Toolbar-Speicher-Button ausgrauen, wenn keine Änderung im Script vorhanden, also nichts zu speichern ist?


    Dazu habe ich folgende AutoIt-Lösung erstellt.

    EDIT: Modifikationen von Bitnugger übernommen

    Die kompilierte Exe über den Autostart laden ist der einfachste Weg. Dann dümpelt das Skript ständig im Hintergrund und tut seine Arbeit, kann aber bei Bedarf auch mit dem Parameter /Exit beendet werden.

  • Wie kann ich den Hintergrund beim Ausdruck aus SciTE anpassen?


    Das wird geregelt mit print.colour.mode

    Einfügen in die SciTEUser.properties mit dem gewünschten Modus:

    Zitat von Hilfe zu SciTE


    Einige Leute bevorzugen hellen Text auf einem schwarzen Hintergrund auf dem Bildschirm, aber dunklen Text auf Weiß auf Papier. Wenn print.colour.mode auf 1 gesetzt ist, wird jede Farbe zum Drucken invertiert. Bei der Einstellung 2 wird beim Drucken schwarzer Text auf weißem Hintergrund ausgegeben. 3 setzt den Hintergrund auf Weiß und 4 setzt den Standardhintergrund auf Weiß.

  • SciTE in Mehrbenutzerinstallation ohne Adminrechte


    SciTE/AutoIt wurde von Admin (oder anderem User mit Adminrechten) installiert. Selbst hat man keine Adminrechte. Somit ist keine normale Funktionalität gewährleistet.


    Lösung:


    C:\Users\InstallationsUser\AppData\Local\AutoIt v3\SciTE

    nach

    C:\Users\NormalerUser\AppData\Local\AutoIt v3\SciTE

    kopieren und

    Umgebungsvariable SCITE_USERHOME

    auf dieses Verzeichnis setzen.

  • Da es nun stramm auf Weihnachten zugeht, hier schonmal meine Wunschliste. :D


    1. Ist das Bulk-Rename von Variablen (siehe hier) mittlerweile integriert worden?


    2. Mit check.if.already.open=0 in z. B. SciteUser.properties kann man SciTE veranlassen, Dokumente in mehreren SciTE-Instanzen (Fenster) zu laden, statt in mehreren Tabs. Leider verhindert SciTE dann nicht mehr, dass ein und das selbe Dokument mehrfach geöffnet wird. Wie kann man beides erreichen?


    3. Und zum Schluss: Im Output-Fenster kann man mit ConsoleWrite Meldungen ausgeben. Diese kann man farblich verändern, z. B. "- " Ein Minus und ein Leerzeichen (ohne Anführungszeichen) = orange Ausgabe. Gibt es eine Liste, welche Farbe man wie einstellen kann?


    Tja, jetzt wo ich's geschrieben habe, habe ich es auch in der AutoIt-Hilfe gefunden. :rolleyes: Das Beispiel dort funktioniert jedoch nicht ganz. Z. B. wie kriegt man pink, oder grau? Und wie das Springen in die angegebene Zeile, wenn man doppelklickt?


    4. Wie kann man die Unit finden, in der eine bestimmte Funktion implementiert ist? Beispiel: "FileExists".



    Edit: Zur besseren Übersicht Nummerierungen hinzugefügt und den Punkt 4 aus meinem anderen Posting in die Liste hier aufgenommen.

  • Ist das Bulk-Rename von Variablen (siehe hier) mittlerweile integriert worden?

    Nein, hatte ich noch nicht wieder auf der Agenda.


    Mit check.if.already.open=0 in z. B. SciteUser.properties kann man SciTE veranlassen, Dokumente in mehreren SciTE-Instanzen (Fenster) zu laden, statt in mehreren Tabs. Leider verhindert SciTE dann nicht mehr, dass ein und das selbe Dokument mehrfach geöffnet wird. Wie kann man beides erreichen?

    Das Problem hatte ich noch nie. Eine zweite Instanz öffnen hat für mich nur dann Sinn, wenn ich ein bereits geöffnetes Skript parallel in anderen Abschnitten betrachten möchte. Somit ist es zwingend erforderlich, dass das selbe Dokument geöffnet werden kann.

    Anderes Einsatzgebiet einer anderen Instanz habe ich noch nicht gefunden. - Wozu brauchst du das?


    Z. B. wie kriegt man pink, oder grau? Und wie das Springen in die angegebene Zeile, wenn man doppelklickt?

    s. hier: Farbspielereien bei der Konsolenausgabe

  • Eine zweite Instanz öffnen hat für mich nur dann Sinn, wenn ich ein bereits geöffnetes Skript parallel in anderen Abschnitten betrachten möchte.

    Ei jei jei, da hab ich mich aber verdrückt ausgekehrt! :S


    Statt mehrere Dokumente in 1 Editor-Fenster mit mehreren Tabs zu laden, mag ich es lieber, wenn man pro Dokument 1 Editor-Fenster hat. Ich will NICHT ein und das selbe Dokument nochmal öffnen, weder in Einzel-Fenster, noch in Tabs.


    SciTE4AutoIt3 läd bei Standard-Einstellungen mehrere Dockumente in mehrere Tabs. Wenn man ein und das selbe Dokument zweimal öffnet, wird KEIN weiterer Tab geöffnet, sondern der vorhandene in den Fokus gebracht.


    Das gleiche Verhalten wünsche ich mir mit einzelnen SciTE-Fenstern, statt mit Tabs in 1 Fenster. check.if.already.open=0 veranlasst, dass jedes Dokument in ein eigenes SciTE-Fenster geladen wird. Doc1 öffnen = 1 SciTE-Fenster, Doc2 auch noch öffnen = 2 SciTE-Fenster, usw.


    Soweit, so gut. Jetzt ist eine Möglichkeit gesucht, um eben zu verhindern, dass ein und das selbe Dokument 2x geöffnet wird. Wenn ich z. B. Doc1 schon geöffnet habe und (aus Versehen) nochmal öffne, dann soll KEIN zweites SciTE-Fenster geöffnet, sondern das vorhandene in den Fokus bebracht werden.


    Ich hoffe, ich konnte es jetzt besser erklären. :rock:

  • verhindern, dass ein und das selbe Dokument 2x geöffnet wird

    Wie oft arbeitest Du mit so vielen Dateien (egal ob in eigenem Fenster bzw. eigenem Tab), dass Du den Überblick verlierst und nicht mitkriegst, wenn Du eine Datei 2x öffnest?

    Ist mir noch nie passiert.

    Andererseits hätte ich genau diese Möglichkeit gerne: 2 Fenster mit derselben Datei um unterschiedliche Bereich der Datei nebeneinander darstellen zu können z.B. für Vergleiche des Codes.

  • Wie oft arbeitest Du mit so vielen Dateien (egal ob in eigenem Fenster bzw. eigenem Tab), dass Du den Überblick verlierst und nicht mitkriegst, wenn Du eine Datei 2x öffnest?

    Ist mir noch nie passiert.

    Tja, weißt du, ... damals, als ich noch in deinem Alter war, ... ist mir das auch nicht passiert. Aber das ist nicht schlimm, kann jedem Mann mal passieren. :D (Falls nicht klar, das war => :ironie: )


    Im Ernst sieht es bei mir allerdings nicht wirklich besser aus. Da genügen schon 3 Dateien, damit ich nicht mehr merke, wenn ich die selbe 2x öffne. Insbesondere wenn ich mit mehreren Versionen mit gleichem Namen arbeite.



    Andererseits hätte ich genau diese Möglichkeit gerne: 2 Fenster mit derselben Datei um unterschiedliche Bereich der Datei nebeneinander darstellen zu können z.B. für Vergleiche des Codes.

    Wenn du auf Tabs in SciTE verzichten kannst, steht die Lösung weiter oben. ;)