Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

OnStyle callback is never called (confirmed also in the example file)

Offen
#108 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Anfängerfreundlichkeit
42/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
c, lua
Bereich
tooling

Rechercherichtung

Reproduziere den Callback-Ablauf mit examples/StyleCustom.lua und dem .abc-Beispieldokument, wobei du die beschriebenen print-Anweisungen verwendest. Lies src/LuaScript.cpp um Zeile 308 und verfolge, wie editor:Colourise(0, -1) mit der SCN_STYLENEEDED-Benachrichtigung zusammenhängt. Erledigt ist es, wenn OnStyle empfangen und CustomStyle aufgerufen wird, sodass das Dokument das erwartete benutzerdefinierte Styling erhält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

CustomStyle.lua example file

--[[ An example file

proc clip(int a)
« Clip into the positive zone »
if (a > 0) a
0
end 
]]

-- Define style numbers
S_DEFAULT = 0
S_IDENTIFIER = 1
S_KEYWORD = 2
S_UNICODECOMMENT = 3

-- Anytime a file is switched, check to see if it needs styled
npp.AddEventHandler("OnSwitchFile", function(filename, bufferid)
    if npp:GetExtPart() == ".abc" then
        -- Add the event handler for our custom style function
        npp.AddEventHandler("OnStyle", CustomStyle)
        
        -- Make sure to set the lexer as a custom container
        editor.Lexer = SCLEX_CONTAINER
        
        -- Set up the styles as appropriate
        editor.StyleFore[S_DEFAULT] = 0x7f007f
        editor.StyleBold[S_DEFAULT] = true
        editor.StyleFore[S_IDENTIFIER] = 0x000000
        editor.StyleFore[S_KEYWORD] = 0x800000
        editor.StyleBold[S_KEYWORD] = true
        editor.StyleFore[S_UNICODECOMMENT] = 0x008000
        editor.StyleFont[S_UNICODECOMMENT] = "Georgia"
        editor.StyleItalic[S_UNICODECOMMENT] = true
        editor.StyleSize[S_UNICODECOMMENT] = 9 
        
        -- Clear any style and re-lex the entire document
        editor:ClearDocumentStyle()
        editor:Colourise(0, -1)
    else
        -- Can remove the handler if it's not needed
        npp.RemoveEventHandler("OnStyle", CustomStyle)
    end

    return false
end)

-- Style the document. Handles UTF-8 characters
function CustomStyle(styler)
    identifierCharacters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

    styler:StartStyling(styler.startPos, styler.lengthDoc, styler.initStyle)
    while styler:More() do
        -- Exit state if needed
        if styler:State() == S_IDENTIFIER then
            if not identifierCharacters:find(styler:Current(), 1, true) then
                identifier = styler:Token()
                if identifier == "if" or identifier == "end" then
                    styler:ChangeState(S_KEYWORD)
                end
                styler:SetState(S_DEFAULT)
            end
        elseif styler:State() == S_UNICODECOMMENT then
            if styler:Match("»") then
                styler:ForwardSetState(S_DEFAULT)
            end
        end

        -- Enter state if needed
        if styler:State() == S_DEFAULT then
            if styler:Match("«") then
                styler:SetState(S_UNICODECOMMENT)
            elseif identifierCharacters:find(styler:Current(), 1, true) then
                styler:SetState(S_IDENTIFIER)
            end
        end

        styler:Forward()
    end
    styler:EndStyling()
end
  1. This source defines a function for callback OnSwitchFile. It declares to call CustomStyle for the event OnStyle if the file extension is abc.
  2. My understanding is that editor:Colourise(0, -1) should lead to invocation of callback OnStyle.
  3. Handling the callback OnStyle and thus calling CustomStyle should colorize the document as a consequence.
  4. By adding print() statements and opening the Lua Console, one can observe which functions are actually run.

Expected behavior:

  1. Callback OnSwitchFile is handled.
  2. Callback OnStyle is handled.

Actual behavior:

  1. Callback OnSwitchFile is handled.
  2. Callback OnStyle is never handled, thus the function CustomStyle is never called.

This can be confirmed by the resulting styling. The given example document (stored with a filepath ending with .abc) leads to the following coloring:

clip

This coloring (every foreground text color is purple) can be explained by the editor.StyleFore[S_DEFAULT] = 0x7f007f which is run and sets the default color to purple. But the actual styling function CustomStyle is not run.

Environment:

  • Windows 10
  • LuaScript v0.12 (64 bit). Lua 5.3.5
  • Seems like the OnStyle handling should be triggered here but SCN_STYLENEEDED does not seem to be a received Scintilla notification.
Vorherrschende Sprache
C
Sterne
130
Forks
24
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus dail8859/LuaScript

Alle Issues in dail8859/LuaScript

Ähnliche Issues

Weitere Issues zu C

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.