dail8859 / dail8859/LuaScript

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

Đang mở
#108 2 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
C
Star
129
Fork
24
Chỉ số merge pull request
Không có pull request nào được merge trong 30 ngày

Mô tả

**[CustomStyle.lua](https://github.com/dail8859/LuaScript/blob/a4dd230779d099f16962bc4c00f465a7d58e36d9/examples/StyleCustom.lua) example file**

```lua
--[[ 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](https://github.com/user-attachments/assets/b9c5c810-130b-4305-849d-4efdfd15b11e)

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](https://github.com/dail8859/LuaScript/blob/a4dd230779d099f16962bc4c00f465a7d58e36d9/src/LuaScript.cpp#L308) but SCN_STYLENEEDED does not seem to be a received Scintilla notification.

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.