当用户在wxStyledTextCtrl
中按下Enter键时,光标似乎总是指向行的开头(零缩进),这很可能是预期的行为。
我希望能够用以下格式编写带有行缩进的脚本代码。
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
返回