FAQ - SciTE Editor

  • Habe ich vor kurzem mit der letzten AutoIt-Version bekommen, die ich hier im Homeoffice neu installiert habe - glaube ich zumindest. Wundert mich jetzt nicht, dass so einiges bei mir anders war. Also SciTE neu aufsetzen - wie am sichersten und richtig?

  • Habe ich vor kurzem mit der letzten AutoIt-Version bekommen

    Dann hättest du nur die SciTE-Lite... und die kannst du vergessen. Ob dem so ist, siehst du, wenn dir in Windows 10 unter Programe und Features keine SciTE4AutoIt3 angezeigt wird. Denn SciTE4AutoIt3 musst du separat installieren! Hier bekommst du es her: SciTE4AutoIt3 und dort wird auch erklärt, wie du es installieren musst. Wo du die ältere Version findest, kann ich momentan nicht sagen, aber notfalls kannst du sie von mir bekommen.


    Also SciTE neu aufsetzen - wie am sichersten und richtig?

    Das wie war ja schon geklärt... wie am sichersten... schwer zu beantworten, kommt auf deine Installation an, bzw. was du daran geändert hast... aber wenn du folgende Verzeichnisse sicherst, sollte nichts schief gehen:


    Halt, noch besser... hier kannst du sehen, wie ich es mache und hast somit auch gleich die Verzeichnisse... oder du benutzt meinen Batch... musst dann nur die Pfade anpassen.

  • Habe nur auf Deutsch umgestellt und "unused vars" eingefügt - ich habe SciTE immer nur oberflächlich benutzt und gar nicht gewusst, welche nützlichen Funktionen schon implementiert sind :thumbup:

  • Kannst Du mir auch noch kurz das Versioning erklären? Ich bin im Moment so ins Programmieren vertieft, dass ich die Anleitung dazu, weil nicht sofort verstanden, erstmal beiseite gelegt habe.

  • Kannst Du mir auch noch kurz das Versioning erklären?

    Hm, ich denke mal, du meinst das hier: Using SVN Versioning on a local Computer


    Ich benutze allerdings eine einfachere Lösung von BugFix, da ich ein Einzelkämpfer bin: TimeStamp - erweitert zu kleiner Versionsverwaltung für (.au3 und .lua) alle Typen


    Das sieht dann etwa so aus:

    Es können folgende Marker gesetzt werden (direkt hinter die aktuelle Versionsnummer):

    - v Subversionsnr. wird um 1 erhöht

    - V Mainversionsnr. wird um 1 erhöht, Subversionsnr. wird auf 0 gesetzt

    - n die autom. Zählung ist nicht aktiv - aber eine per Hand eingetragene Änderung der Versionsnr. wird übernommen


    Steht aber auch alles sehr gut erklärt auf der Seite...

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


    Die Hilfe soll immer mit F1 aufgerufen werden, also die jeweils entsprechende Hilfe für Au3- und Lua-Scripts.

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

    • Offizieller Beitrag

    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


  • Ok, ich kriegs nicht gebacken. Damit der Thread hier nicht unnötig aufgebläht wird, werde ich dafür einen eigenen Thread erstellen.


    Im Moment macht mich was anderes fix und fertig: Ich hasse es, wenn ein Programm macht, was ich sage, anstatt was ich meine. Zum Beispiel wenn du jemandem sagst: "schmeiß mal die Fernbedinung rüber" und du dann in Deckung gehen musst.


    Es geht um das Ein-Auskommentieren von Code. SciTE nimmt "Block Comment or Uncomment" viel zu wörtlich und toggled jede einzelne Zeile in einem markierten Block, anstatt den ganzen Block auszukommentieren. Auskommentiere Zeilen kommentiert es ein, einkommentierte Zeilen kommentiert es aus. Das nervt gewaltig!


    Aus


    local sel = props["CurrentSelection"] \

    if sel == "" then manual = "file:///C:/CODE/Lua/doc/lua5.3/manual.html" end \

    #~ shell.exec('"'..chrome..'" "'..manual..sel..'"')

    #~ os.execute('start "'..WaterFox..'" "'..manual..sel..'"')

    command.help.subsystem.$(file.patterns.lua)=3


    wird


    #~ local sel = props["CurrentSelection"] \

    #~ if sel == "" then manual = "file:///C:/CODE/Lua/doc/lua5.3/manual.html" end \

    shell.exec('"'..chrome..'" "'..manual..sel..'"')

    os.execute('start "'..WaterFox..'" "'..manual..sel..'"')

    #~ command.help.subsystem.$(file.patterns.lua)=3


    Wie stelle ich ein, dass es einen ganzen Block auskommentiert, wenn die erste Zeile des markierten Blocks einkommentiert ist?

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

    • Offizieller Beitrag

    Es geht um das Ein-Auskommentieren von Code. SciTE nimmt "Block Comment or Uncomment" viel zu wörtlich und toggled jede einzelne Zeile in einem markierten Block, anstatt den ganzen Block auszukommentieren. Auskommentiere Zeilen kommentiert es ein, einkommentierte Zeilen kommentiert es aus. Das nervt gewaltig!

    Du befindest dich dort in einer *.properties - Datei. Da gibt es keinen Blockkommentar! Jede Zeile wird deshalb mit einem Kommentarzeichen versehen.

    • Offizieller Beitrag

    In Au3 Dateien ist es aber genauso.

    Dann prüfe mal deine Einstellungen. So sollte es in etwa aussehen:

    Code: SciTEUser.properties
    #Comments functions definition
    comment.block.au3=;~
    comment.block.at.line.start.au3=1
    comment.stream.start.au3=#cs
    comment.stream.end.au3=#ce
    comment.box.start.au3=#cs
    comment.box.middle.au3=
    comment.box.end.au3=#ce
  • Leider keine Änderung. Funktioniert es denn bei dir? Beispiel:

    Wenn ich nun den ganzen Block markiere (von While bis WEnd) und den Shortcut für Blockkommentar drücke, wird alles was auskommentiert ist einkommentiert und umgekehrt. Ist das bei dir anders?

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

    • Offizieller Beitrag

    Ist das bei dir anders?

    Ja - obiger Code komplett markiert: Strg+Shift+Q ergibt


    Hast du evtl. deinen Shortcut für Blockkommentar überschrieben?




    Edit:

    Allerdings hat diese Funktion noch nie als Toggle funktioniert - du kannst also nur den Blockkommentar setzen.

  • obiger Code komplett markiert: Strg+Shift+Q ergibt

    Du hast den Befehlt für "Stream Comment" benutzt, nicht "Block Comment!. 8o


    Wenn meine Lua Kenntnisse mal groß genug sind, schreibe ich vielleicht eine Routine, die sich nur an der ersten markierten Zeile orientiert. Ist die erste Zeile einkommentiert, werden alle markierten Zeilen auskommentiert, egal ob sich schon auskommentiert sind, oder nicht.

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

    • Offizieller Beitrag

    Du hast den Befehlt für "Stream Comment" benutzt, nicht "Block Comment!.

    Genau, weil BlockComment nicht funktioniert. Hatte ich mich gar nicht dran erinnert, dass dem so ist und ich das umgestellt hatte.

    Ich werd mal eine ordentliche Block-Comment-Toggle-Funktion schreiben.

    schreibe ich vielleicht eine Routine, die sich nur an der ersten markierten Zeile orientiert. Ist die erste Zeile einkommentiert, werden alle markierten Zeilen auskommentiert, egal ob sich schon auskommentiert sind, oder nicht.

    Dann wirst du bald merken, dass das kontraproduktiv ist. In 99% aller Fälle (jedenfalls bei mir) kommentierst du Zeilen aus, weil du eine andere Codezeile einfügst und die vorige dann auskommentierst. Du switchst also zwichen den beiden Zeilen (oder auch Zeilenblöcken). Und da ist es natürlich super, wenn du alles markierst und die Kommentierung dann wechselt.

  • Und da ist es natürlich super, wenn du alles markierst und die Kommentierung dann wechselt.

    Das stimmt wohl und kommt auch bei mir häufig vor. Aber ebenso häufig kommt es vor, dass ich beim Testen z.B. eine ganze Funktion dupliziere, die alte auskommentiere und in der neuen arbeite. Die alte kommentiere ich komplett aus und benutze sie als Orientierung, während ich in der neuen Funktion nach herzenslust neues reinschreiben oder altes löschen kann. Wenn ich dann vor lauter testen und recherchieren nicht mehr weiß, wie der Ausgangs-Code war, ist die alte auskommentierte Funktion ja direkt darüber und ich kann nachsehen. ;)


    Ich werd mal eine ordentliche Block-Comment-Toggle-Funktion schreiben.

    Prima! :)

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

  • Eine weitere Strg+Shift+Q Kuriosität.


    Caret an den Anfang einer Zeile setzen und Strg+Shift+Q drücken.

    AutoIt
    Func Example()

    ergibt

    AutoIt
    #CS
    Func
    #CE
     Example()

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