当用户按Enter 键时wxStyledTextCtrl
,光标似乎总是移到行首(零缩进),这很可能是预期的行为。
我希望能够使用以下格式编写带有行缩进的脚本代码。
for i=1,10 do --say there is no indentation
i=i+1 -- now there is indentation via tab key
-- pressing enter should proceed with this level of indentation
print(i) -- same level of indentation with the previous code line
end
我使用以下 C++ 代码能够在非常基本的级别上控制缩进。
void Script::OnKeyUp(wxKeyEvent& evt)
{
if ((evt.GetKeyCode() == WXK_RETURN || evt.GetKeyCode() == WXK_NUMPAD_ENTER)) {
long int col, line;
PositionToXY(GetInsertionPoint(), &col, &line);
int PreviousIndentation = GetLineIndentation(line-1);
SetLineIndentation(line, PreviousIndentation);
GotoPos(GetCurrentPos() + PreviousIndentation);
}
}
上面的 C++ 代码保留了缩进级别,但是,光标先到行首,然后到缩进级别。在使用其他 IDE 时,不会发生这种情况,例如先到行首再到缩进级别。相反,光标会立即转到 / 跟随缩进级别。有没有一种方法可以使光标立即进入缩进级别,而无需最初进入零缩进级别。
顺便说一句,我试过了EVT_STC_CHARADDED
,这似乎是ZeroBraneStudio中实现的方式,但是当按下 Enter 键时evt.GetKeyCode()
返回一个奇怪的整数并evt.GetUnicodeKey
返回\0
,而且EVT_STC_CHARADDED
事件被调用了两次(我猜是由于 CR+LF)。
顺便说一句,我在 Windows 10 上使用 wxWidgets-3.1.0。
任何想法,将不胜感激。