Skript für "erweiterte" Hilfe in SciTE

  • Erledigt :)

    water
    28. November 2021 um 19:20
  • Ist im offizillen Download Thread bereits gefixt:

    water
    28. November 2021 um 19:20
  • Hallo BugFix!

    Wenn ich Deine Originaldoku richtig verstehe, dann darf "chm.path.<Kennung>=" keine Leerzeichen enthalten . Dies gilt aber nicht für "udf.path.<Kennung>="

    Sehe ich das richtig?

    Code
    ==>  #~ IMPORTANT! The path to the help file must never contain a space!!
    
         #~ Active Directory
         #~ If "chm.mainfolder" is used, you can apply it like this:
         chm.path._AD_=$(chm.mainfolder)\AD.chm
         #~ otherwise use the full path:
         #~ chm.path._AD_=C:\CODE\AutoIt\helpfiles\AD.chm
    ==>  udf.path._AD_=C:\CODE\AutoIt\FREMD_CODE\AD 1.6.0.0\AD.au3
  • Sehe ich das richtig?

    Richtig. Das ist nur relevant für den Pfad der chm-Datei. Im Parameter mk ist es nicht möglich Leerzeichen zu maskieren (zumindest habe ich keine Möglichkeit gefunden).

    mk:@MSITStore:'..path..'::/funcs/'.._item..'.htm'

    EDIT:

    Mir ist gerade was anderes aufgefallen. Ich hatte die Befehlszeile ja von dir übernommen. Aber laut Aufrufbeschreibung fehlt da ein :.

    Erstaunlich, dass der Aufruf trotzdem funktioniert. ;)


    IE ab Vers. 4.0 Syntax: HH.EXE ms-its::Pfad/name.chm::/Pfad/name.htm

  • Danke!

    Andere Frage.

    Ich denke ich habe einen kleinen Bug in call.advanced.help.au3 gefunden:

    @AutoItExe - The full path and filename of the AutoIt executable currently running. For compiled scripts it is the path of the compiled script; for .a3x and .au3 files it is the path of the interpreter running the file.

    D.h. die Zeile

    Code
    If Not $CmdLine[0] Then
        ShellExecute(StringTrimRight(@AutoItExe, 11) & 'Autoit3Help.exe')

    funktioniert im kompilierten Skript nicht.

  • Ich denke ich habe einen kleinen Bug in call.advanced.help.au3 gefunden:

    OK, das kann gut sein.

    Ersetze die ersten Skriptzeilen hiermit:

    AutoIt
    Global $g_SciTECmd
    GUIRegisterMsg(74, "MY_WM_COPYDATA")  ; $WM_COPYDATA = 74
    
    Global $sAu3, $sCmd, $au3, $param, $pos, $PID, $aWin, $hWnd, $last_hh = 0
    
    If Not $CmdLine[0] Then
        $sAu3 = SendSciTE_Command("askproperty:autoit3dir", 1)
        ShellExecute($sAu3 & '\Autoit3Help.exe')
    Else
  • Danke für die schnelle Antwort!

    Ist eingebaut und getestet - passt :)

  • In meiner au3abbrev.properties (und auch nur da) ist folgende Property deklariert:

    # Directories

    autoit3dir=C:\\Program Files (x86)\\AutoIt3\\|

    In advanced.help.lua wird autoit3dir in der Funktion tAU3Help.CallHelp benutzt, um den Pfad zur Autoit3Help.exe zu bilden.

    cmd = '"'..props['autoit3dir']..'\\Autoit3Help.exe" "'.._item..'"'

    Der fertige Pfad sieht bei mir so aus und kann natürlich nicht funktionieren:

    C:\\Program Files (x86)\\AutoIt3\\|\Autoit3Help.exe

  • Das ist in der au3abbrev.properties bereits so vorgegeben

    Seltsam, war bei mir nicht der Fall und ist auch definitiv falsch. Aber ich werde eine Codezeile hinzufügen, die das prüft und korrigiert.


    Das ist in der au3abbrev.properties bereits so vorgegeben... ich habe lediglich das " (x86)" hinzugefügt. Und nun, was mache ich, damit es fuktioniert?

    Bevor ich eine Änderung poste:

    Das was du schreibst, ist nicht möglich. Ein Backslash am Zeilenende einer Properties Datei bedeutet: weiter in der nächsten Zeile. Die Pipe wird bei Aufzählungen verwendet, also mehrere Werte für eine Variable.

    "autoit3dir" hat nur einen einzigen Wert, weder Zeilenfortschreibung noch Trenner ist erforderlich.

    Dein Eintrag ist also falsch.


    Änderungen, nur für dich :P -- aber einfacher: \| am Pfadende einfach löschen

    AutoIt: In der Au3-Datei
    If Not $CmdLine[0] Then
        $sAu3 = SendSciTE_Command("askproperty:autoit3dir", 1)
        $sAu3 = StringRegExpReplace($sAu3, '\\\|$', '')
        ShellExecute($sAu3 & '\Autoit3Help.exe')
    Else
  • Hier die aktuelle SciTE4AutoIt3-Version:

    https://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3_Portable.zip

    Da guckst du dann in die Datei au3abbrev.properties bei # Directories:

    # Directories

    autoit3dir=C:\\Program Files\\AutoIt3\\|

    aut2exedir=C:\\Program Files\\AutoIt3\\Aut2Exe\\|

    icondir=C:\\Program Files\\AutoIt3\\Aut2Exe\\Icons\\|

    includedir=C:\\Program Files\\AutoIt3\\Include\\|

    scitedir=C:\\Program Files\\Autoit3\\SciTe\\|

    Vergleiche das mal mit deiner au3abbrev.properties...

    autoit3dir wird sonst nirgendwo bei mir deklariert... kann es sein, dass die au3abbrev.properties in der portablen Version anders sind, als die in dem Installer?

  • Das ergibt keinen Sinn und ist in der Installer Version nicht so.

    Wenn man diese Property ausliest (autoit3dir) kommt bei dir folgendes raus:

    C:\\Program Files\\AutoIt3\\|aut2exedir=C:\\Program Files\\AutoIt3\\Aut2Exe\\|icondir=C:\\Program Files\\AutoIt3\\Aut2Exe\\Icons\\|includedir=C:\\Program Files\\AutoIt3\\Include\\|scitedir=C:\\Program Files\\Autoit3\\SciTe\\|

    Und das ist nur gequirlte Kacke. Jede dieser Zeilen muss alleine stehen und darf nicht fortgeschrieben werden.

    Wie soll man hier z.B. das includedir abfragen?? - Es ist als Bestandteil des autoit3dir gespeichert.


    Vergleiche das mal mit deiner au3abbrev.properties...

    Gibt es in der Installerversion gar nicht.

    Die Property "autoit3dir" befindet sich in der "au3.properties".

    EDIT

    Da die portable Version wohl anders mit den properties umgeht, werde ich morgen mal eine Ergänzung dafür schreiben.

  • Die Portable überschreibt tatsächlich das autoit3dir in au3.properties, mit dem autoit3dir in au3abbrev.properties. Ja, so geht es auch...

    Habe jetzt das autoit3dir in au3abbrev.properties in au3dir umbenannt, und siehe da, so funktioniert es... denn jetzt greift das autoit3dir in au3.properties.

    autoit3dir=$(SciteDefaultHome)\..

    Einmal editiert, zuletzt von Bitnugger (1. Dezember 2021 um 00:31)

  • Wenn man diese Property ausliest (autoit3dir) kommt bei dir folgendes raus:

    C:\\Program Files\\AutoIt3\\|aut2exedir=C:\\Program Files\\AutoIt3\\Aut2Exe\\|icondir=C:\\Program Files\\AutoIt3\\Aut2Exe\\Icons\\|includedir=C:\\Program Files\\AutoIt3\\Include\\|scitedir=C:\\Program Files\\Autoit3\\SciTe\\|

    Das stimmt allerdings nicht!

    Code: Test.lua
    -- au3abbrev.properties
    
    print('> autoit3dir', props["autoit3dir"])
    
    -- > autoit3dir    C:\\Program Files (x86)\\AutoIt3\\|
  • Aber mir ist unverständlich, was die Pipe am Ende soll.

    Die Pipe kennzeichnet die Stelle, an der das Caret nach Einfügen des Textes anstelle der Abbreviation gesetzt wird.

    Bsp.:

    Abbrev eintippen, | ist die Stelle, an der das Caret steht:

    autoit3dir|

    Leerzeichentaste drücken:

    C:\\Program Files (x86)\\AutoIt3\\|