Ein- und Ausklappbarer Text in Scite

  • Moin,

    Das Problem ist wie folgt: Ich möchte in Scite (und ISN, aber da das den Scite Editor nutzt ist die Lösung vermutlich die selbe) selbst Keywords definieren die einen Abschnitt der ein- und ausklappbar ist erzeugen.

    in den Properties habe ich schon herumgespielt (meine Keywords sind jetzt auch richtig gefärbt, haben Autocomplete usw) aber ich habe nirgends eine Einstellung gefunden bei der etwas als Start- oder Endpunkt zum ausklappen festgelegt wird.

    Die Suche über die Scite Homepage https://www.scintilla.org/SciTEDoc.html liefert mit den fold.explicit.start Ausdrücken in einer Properties datei (ich bin nicht genau sicher welche) schonmal einen Ansatz, aber ich habe es nach einem halben Tag herumprobieren immernoch nicht hinbekommen und wende mich mal ans Forum...

    lg

    M

  • Meinst du vllt:

    Nein.

    Hier ein Bsp.:

    Code
    For $i = 1 To 100 Step 1
        ConsoleWrite('$i = ' & $i & @CRLF)
    Next

    Die Keywords For und Next definieren hier einen Abschnitt, der ein- und ausklappbar ist... und Mars will nun aber eigene Keywords definieren können.

    Hier ein Bsp.:

    Code
    ;~Fold
    Local $sString = 'Huhu'
    
    ConsoleWrite('$sString = ' & $sString & @CRLF)
    ;~/Fold

    Hier sollen dann ;~Fold und ;~/Fold als Keywords verwendet werden, die einen Abschnitt definieren, der ein- und ausklappbar sein soll...

    • Offizieller Beitrag

    ich habe nirgends eine Einstellung gefunden bei der etwas als Start- oder Endpunkt zum ausklappen festgelegt wird.

    Das geht auch nicht über properties. Dazu benötigst du ein Skript, in dem du die folgenden Funktionen des SciTE-Lua-Interface benutzen kannst.

    # Set the fold level of a line.

    # This encodes an integer level along with flags indicating whether the

    # line is a header and whether it is effectively white space.

    set void SetFoldLevel=2222(int line, int level)

    # Retrieve the fold level of a line.

    get int GetFoldLevel=2223(int line,)

    # Find the last child line of a header line.

    get int GetLastChild=2224(int line, int level)

    # Find the parent line of a child line.

    get int GetFoldParent=2225(int line,)

    Ich muss mal suchen nach meinem Versuch einen Lexer in Lua zu schreiben, da hatte ich das mal getestet. Dann könnte man einen Pseudo-Lexer schreiben, der sich auf minimale Funktionen beschränkt.

    Mars

    Folgende Editorfunktionen sind dazu in SciTE integriert:

    editor.FoldExpanded[int line] = bool expanded [RW] Show the children of a header line

    editor.FoldParent[int startLine] = int line [RO] Find the parent line of a child line

    editor.FoldLevel[int line] = int level [RW] Set the fold level of a line. This encodes an integer level along with flags indicating whether the line is a header and whether it is effectively white space

    FoldLevel setzt sich aus diesen Konstanten zusammen

    enu FoldLevel=SC_FOLDLEVEL

    val SC_FOLDLEVELBASE=0x400

    val SC_FOLDLEVELWHITEFLAG=0x1000

    val SC_FOLDLEVELHEADERFLAG=0x2000

    val SC_FOLDLEVELBOXHEADERFLAG=0x4000

    val SC_FOLDLEVELBOXFOOTERFLAG=0x8000

    val SC_FOLDLEVELCONTRACTED=0x10000

    val SC_FOLDLEVELUNINDENT=0x20000

    val SC_FOLDLEVELNUMBERMASK=0x0FFF

    Vermutlich auch erforderlich:

    editor:SetFoldFlags(int flags) Set some style options for folding

    Flags:

    enu FoldFlag=SC_FOLDFLAG_

    val SC_FOLDFLAG_LINEBEFORE_EXPANDED=0x0002

    val SC_FOLDFLAG_LINEBEFORE_CONTRACTED=0x0004

    val SC_FOLDFLAG_LINEAFTER_EXPANDED=0x0008

    val SC_FOLDFLAG_LINEAFTER_CONTRACTED=0x0010

    val SC_FOLDFLAG_LEVELNUMBERS=0x0040

    Kannst ja mal experimentieren.

    EDIT:

    Zum Kombinieren der Flags wirst du eine BitOR-Funktion benötigen. Diese hatte ich mal in Lua geschrieben

  • Das sieht nach einer Menge Arbeit aus... Eigentlich sollte das nur als optisches Gimmick herhalten und ich dachte es wären "nur 1-2 Zeilen die ich irgendwo ergänzen muss, immerhin muss Scite ja auch irgendwoher wissen dass For+Next einen Block bilden".

    Daher werde ich von meiner Problemstellung zurücktreten... Es tut mir leid, dass du dir so viel Arbeit gemacht hast BugFix und ich jetzt garnichts mit den zusammengetragenen Informationen anfangen werde :/ Zumindest weiß ich jetzt, dass ich außer Farbeinstellungen niemals irgendetwas von Editoren anfassen werde, das ist genau wie RegEx, eine Welt für sich für die ich nicht die Kraft habe sie zu erforschen :D