FAQ - SciTE Editor

    • Offizieller Beitrag
    • Offizieller Beitrag

    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:

    Spoiler anzeigen

    SciTE Documentation: https://www.scintilla.org/SciTEDoc.html

    (Suchbegriff: user.shortcuts)

    Sowie eigene Erfahrungen durch Tests, Internet-Recherche und Hinweise hier im Forum.

    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
    user.shortcuts=\
    Ctrl+Shift+V|IDM_PASTEANDDOWN|\
    Ctrl+PageUp|IDM_PREVFILE|\
    Ctrl+PageDown|IDM_NEXTFILE|\
    KeypadPlus|IDM_EXPAND|\
    KeypadMinus|IDM_BLOCK_COMMENT|\
    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.

    Wenn jemand sagt: "Das geht nicht!" Denke daran: Das sind seine Grenzen, nicht deine.

    5 Mal editiert, zuletzt von Professor Bernd (23. Juni 2019 um 09:30) aus folgendem Grund: Ergänzungen.

  • 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
    • Offizieller Beitrag

    Wie kann man das aktuelle Datum an der Cursor-Position einfügen?

    Python
    command.name.19.*=Insert Date
    command.19.*=dostring editor:AddText(os.date('%d.%m.%Y'))  
    command.mode.19.*=subsystem:lua,savebefore:no
    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)=

    • Offizieller Beitrag

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

    • Offizieller Beitrag

    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|

    • Offizieller Beitrag

    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.

    • Offizieller Beitrag

    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ß.

    • Offizieller Beitrag

    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.

  • Wie kann ich eine "Sitzung" (also z.B. meine aktuell bearbeiteten Dateien) mit wenig Aufwand gleichzeitig öffnen? - Teil 1

    Wie kann ich eine "Sitzung" (also z.B. meine aktuell bearbeiteten Dateien) mit wenig Aufwand gleichzeitig öffnen?

    Aus SciTE-Menu heraus:

    DE: SciTE Menu Datei ==> Sitzung laden...

    EN: SciTE Menu File ==> Load session...

    Wenn du SciTE4AutoIt3 installiert hast, und nicht nur SciTE-Lite, wird die letzte Sitzung via Lua automatisch geladen. Den Eintrag dazu findest du in der Datei "C:\Program Files (x86)\AutoIt3\SciTE\lua\SciTEStartup.lua"

    LoadLuaFile("LoadSession.lua")

    SciTE mit beliebiger Sitzung starten:

    "C:\Programme (x86)\AutoIt3\SciTE\SciTE.exe" "-loadsession:%1"

    Das Problem mit obiger Syntax besteht allerdings darin, dass, wenn der Pfad (%1) Backslashes (\) enthält, diese mit doppelten Backslashes (\\) maskiert werden müssen.

    Zum Beispiel:

    "C:\Programme (x86)\AutoIt3\SciTE\SciTE.exe" "-loadsession: c:\abc\def\other.session"

    Damit SciTE die Sitzung findet, müsste die Zeile so geändert werden:

    "C:\Programme (x86)\AutoIt3\SciTE\SciTE.exe" "-loadsession: c:\\abc\\def\\other.session"

    Wenn ich eine Session speichere und dann die .session anklicke, öffnet sich die Datei zum Lesen. Kann man nicht durch Anklicken die Dateien öffnen?

    Ja, das ginge z.B. mit:

    assoc .session=SciTE4AutoIt3.File.session

    ftype SciTE4AutoIt3.File.session="C:\Program Files (x86)\AutoIt3\SciTE\scite.exe" "-loadsession:%1"

    ...was aber zu dem oben beschrieben Problem mit den Backslashes (\) und evtl. auch anderen führt, da *.session nicht nur von SciTE benutzt wird, um Sitzungen zu laden/speichern - so z.B. auch AutoHotkey, OneDrive und Excel. Abhilfe könnte man dadurch schaffen, wenn anstelle von SciTE ein Batch oder AutoIt-Script aufgerufen wird, welches die Behandlung der Backslashes erledigt und SciTE dann mit korrigiertem Pfad zur .session startet.

    Ich hätte vermutet, dass das irgendwie mit "Sitzung laden" geht, finde aber nichts in der Hilfe unter "Session" dazu.

    Dann hast du wohl in der falschen Hilfe geguckt, oder aber nur SciTE-Lite und nicht SciTE4AutoIt3 installiert. Denn SciTE4AutoIt3 hat eine eigene Hilfe-Datei:

    "c:\Program Files (x86)\AutoIt3\SciTE\SciTE4AutoIt3.chm"

  • Wie kann ich eine "Sitzung" (also z.B. meine aktuell bearbeiteten Dateien) mit wenig Aufwand gleichzeitig öffnen? - Teil 2

    Abhilfe könnte man dadurch schaffen, wenn anstelle von SciTE ein Batch oder AutoIt-Script aufgerufen wird, welches die Behandlung der Backslashes erledigt und SciTE dann mit korrigiertem Pfad zur .session startet.

    So, hier für Mutige die erste Version des AutoIt-Scripts... ich habe das mal als Archiv in den Anhang gepackt, weil es so einfacher ist.

    Damit beim Anklicken einer *.session das AutoIt-Script aufgerufen wird und die angeklickte "SciTE.session" als Parameter übergeben bekommt, muss zuvor eine Verknüpfung mit diesem Dateityp erstellt bzw. diese geändert werden.

    Dies geschieht mit den Befehlen assoc und ftype, die in einer cmd.exe als Administrator ausgeführt werden müssen.

    Normalerweise gibt es keine Verknüpfung für .session... aber das können wir ja überprüfen und dies sähe dann so aus:

    assoc .session

    Dateizuordnung für die Erweiterung .session nicht gefunden.

    Gibt es eine Verknüpfung mit .session... sähe das z.B. so aus:

    assoc .session

    .session=SciTE.session

    In dem Fall können wir uns auch gleich den Wert für ftype anzeigen lassen:

    ftype SciTE.session

    SciTE.session="F:\AutoIt\AutoIt3_Tools\Load_SciTE_Session\SciTE\SciTE.exe" "%1"

    Jedenfalls müssen wir das dann so ändern, wobei die Pfade natürlich angepasst werden müssen:

    assoc .session=SciTE4AutoIt3.File.session

    for compiled AutoIt script ...

    ftype SciTE4AutoIt3.File.session="F:\AutoIt\AutoIt3_Tools\Load_SciTE_Session\Load_SciTE_Session.exe" "%1"

    for uncompiled AutoIt script ...

    ftype SciTE4AutoIt3.File.session="C:\Program Files (x86)\AutoIt3\AutoIt3.exe" "F:\AutoIt\AutoIt3_Tools\Load_SciTE_Session\Load_SciTE_Session.au3" "%1"

    ftype also für die .exe oder die .au3 ausführen, nicht für beide!

    In dem AutoIt-Script speichere ich die alten Werte für assoc und ftype (falls vorhanden) in eine Datei... es sollte also nichts schief gehen.

    Da die Extension *.session aber nicht nur von SciTE genutzt wird, muss der Inhalt geprüft werden, was von dem Script auch gemacht wird. Welche überprüft werden, könnt ihr im Script nachsehen, denn ich will mir hier nicht die Finger wund tippen. ;)

    Noch was... SciTE kennt folgende Properties, die mit einer Session zu tun haben:

    save.session 

    save.session.advanced 

    session.loaded 

    session.bookmarks 

    session.folds

    Welche Bedeutung/Funktion sie haben, könnt ihr der SciTE4AutoIt3-Hilfe entnehmen.

    SciTE4AutoIt3 bringt übrigens auch ein Lua-Script mit, dass auch etwas mit Sessions zu tun hat:

    C:\Program Files (x86)\AutoIt3\SciTE\lua\LoadSession.lua

    Geladen wird es beim Start von SciTE, aktiv wird das Script aber nur, wenn save.session.advanced=1 ist, und dann wird session.loaded auch auf 1 gesetzt, falls es das nicht schon war.

    So, macht damit was ihr wollt...

    • Offizieller Beitrag

    Wie kann man in SciTE4AutoIt3 eine weitere Hilfedatei einbinden, z.B. für Lua?

    Wie kann man in SciTE4AutoIt3 eine weitere Hilfedatei einbinden, z.B. für Lua?

    Ich habe lokal abgespeichert: C:/CODE/Lua/doc/lua/www.lua.org/manual/5.1/manual.html

    Das Verzeichnis "doc" habe ich angehängt, dann brauchst du nur den Rest des Pfades (und den Pfad deines Browsers) anpassen.

    Wenn du keine shell.exec verwendest, musst du dort: os.execute verwenden. Oder mit Default-Browser: os.execute('start "" "'..manual..sel..'"')

    (dann gibts das Aufpoppen des Cmd-Windows)

    Der Aufruf einer Hilfedatei ist immer an das hinterlegte Filepattern gebunden (au3->AutoIt, lua->Lua, etc.)

    In den "SciTEUser.properties" dann einfügen:

    Code
    command.help.$(file.patterns.lua)=dostring \
    local chrome = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" \
    local manual = "file:///C:/CODE/Lua/doc/lua/www.lua.org/manual/5.1/manual.html#pdf-" \
    local sel = props["CurrentSelection"] \
    if sel == "" then manual = "file:///C:/CODE/Lua/doc/lua/www.lua.org/manual/5.1/manual.html" end \
    shell.exec('"'..chrome..'" "'..manual..sel..'"')
    command.help.subsystem.$(file.patterns.lua)=3

    Wenn du jetzt einen Begriff in einem lua-Skript markierst und F1 drückst, wird das Manual mit dem Begriff geöffnet (sofern dafür eine Beschreibung hinterlegt ist). Ohne Markierung wird das Manual am Beginn geöffnet.

    UPDATE

    Die Version 5.1 ist ja obsolet. Ich habe mal die 5.3 noch angefügt.

    Für den Aufruf dann "lua5.3.zip" entpacken und mit "file:///Lw:/DEIN/PFAD/lua5.3/manual.html" darauf verweisen:

    Code
    command.help.$(file.patterns.lua)=dostring \
    local chrome = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe" \
    local manual = "file:///C:/CODE/Lua/doc/lua5.3/manual.html#pdf-" \
    local sel = props["CurrentSelection"] \
    if sel == "" then manual = "file:///C:/CODE/Lua/doc/lua5.3/manual.html" end \
    shell.exec('"'..chrome..'" "'..manual..sel..'"')
    command.help.subsystem.$(file.patterns.lua)=3

    EDIT

    Bei Verwendung von Hilfedateien (*.chm) würde der Aufruf so erfolgen (Bsp. Python):

    Code
    command.help.$(file.patterns.py)=$(CurrentWord)!C:\Python27\Doc\python274.chm
    command.help.subsystem.$(file.patterns.py)=4


    Sicher auch sinnvoll: Lua-Skripte mit F5 ausführen

    (ebenfalls in "SciTEUser.properties" eintragen)

    Code
    command.go.$(file.patterns.lua)=dofile $(FilePath)
    command.go.subsystem.$(file.patterns.lua)=3

    EDIT:

    Syntaxcheck ist auch brauchbar ;)

    Dazu habe ich eine Funktion geschrieben, die so in "SciTEUser.properties" eingebunden wird:

    Code
    # 22 Syntax Check Lua, if error --> selects error line and makes it visible
    command.name.22.$(file.patterns.lua)=SyntaxCheck Lua
    command.22.$(file.patterns.lua)=dofile $(Lua.User.Scripts.Path)/LuaCheck.lua
    command.mode.22.$(file.patterns.lua)=subsystem:lua,savebefore:yes
    command.shortcut.22.$(file.patterns.lua)=Ctrl+F5

    Lua.User.Scripts.Path ist eine Property, die vorher definiert werden muss, z.B. Lua.User.Scripts.Path=C:\Code\Lua

  • Wie kann das aktive Tab-Item hervorgehoben werden?

    BugFix
    15. März 2023 um 20:44