NSI Nim-SciTE-Interface - Projekt

  • Ich habe nun versucht mein SciTEInterface auf Nim Basis auszuführen.

    Das Übertragen in Richtung SciTE klappt. Aber ich bekomme es nicht gebacken, die Callbackfunktion zu installieren. Sie muss vom Typ SENDASYNCPROC sein - das bekomme ich nicht umgesetzt. Die entsprechenden Bereiche sind auskommentiert.


    Zum Testen muss SciTE geöffnet sein, ich habe noch keine Fehlerbehandlung drin und gehe davon aus, dass ich ein Handle bekomme.

    Vielleicht habt ihr einen zündenden Gedanken .


  • Vielleicht habt ihr einen zündenden Gedanken .

    Das auslesen des Dateinamens habe ich hinbekommen (so nebenbei noch Dein "MyFindWindow" etwas verkürzt):

  • Ich habe das jetzt zur Verwendung mit den Interface-Funktionen angepasst. Das Ergebnis einer Funktion wird in der Variablen "received" abgelegt.



    Jetzt kann ich mal ein wenig spielen und AddOns, die ich in Lua erstellt hatte, mit Nim ausführen.

  • BugFix

    Hat den Titel des Themas von „NSI Nim-SciTE-Interface - Wie Callback für WM_COPYDATA installieren?“ zu „NSI Nim-SciTE-Interface - Projekt“ geändert.
  • Ich poste hier mal meine weiteren Schritte in diesem Projekt. Dann könnt ihr bei Bedarf auch experimentieren.

    Momentan sind es 3 Dateien ("sciteConstants.nim", "nsiface.nim", "main.nim") im Projekt (den Anhang in einen gemeinsamen Ordner entpacken). Stört euch nicht an "UnusedImport" in der main. Zum Testen braucht man die Imports dann doch, somit lasse ich sie immer drin.


    Hier mal die "main"


    Ich habe eine Prozedur LuaFuncGet zum Aufrufen von Lua-Funktionen (LuaCurrPos) mit Rückgabewert und wahlweise Übergabe von Parametern (2.ter Aufruf $(lcp.pos - 50).

    Für das Parsen des Returnwertes ist eine Funktion erforderlich (ParseLuaCurrPos), ebenso wird der Datentyp benötigt (EditorPosition) in dem der geparste Return gespeichert ist.

    Was mir fast den Nerv geraubt hat, war das Einbringen der Lua-Funktion. In meiner AutoIt-Version des Interfaces lief diese anstandslos. 1:1 übertragen und immer meckerte Lua, es würde ein "end" am Dateiende fehlen. Das ist erfahrungsgemäß ein Fehler der kommt, wenn z.B. versucht wird eine UTF8BOM-Datei in Lua zu verwenden, aber auch wenn vergessen wurde ordentlich zu maskieren. Das traf hier aber nicht zu. -- Die Lösung: In Nim darf der String mit der Lua-Funktion keine Zeilenumbrüche enthalten!

  • Ich habe jetzt die Websuche (Suche nach markiertem Begriff aus SciTE) mit Nim umgesetzt.

    Die Suchbegriffabfrage erfolgt mit dem SciTEInterface (SearchSelection). MIt dem gefundenen Begriff wird das Suchfenster aufgerufen. Das ist ein eigenständiges Programm (WebSearch) und kann mit oder ohne Suchbegriff aufgerufen werden. Für die Nutzung mit SciTE muss sich die websearch.exe im selben Ordner, wie die SearchSelection.exe befinden.


    Neben den beiden Projektordnern habe ich für Interessierte auch die kompilierten Versionen angehängt.


    Die Anbindung in SciTE könnte dann so aussehen:

    Code: SciTEUser.properties
    # 35 Search Selected text
    command.name.35.*=Suche markierten Begriff
    command.35.*="C:\CODE\nim\SciTETools\SearchSelection.exe"
    command.mode.35.*=0
    command.shortcut.35.*=Ctrl+Shift+S





    Hier mal noch ein Bild dazu: