Когда пользователь нажимает клавишу 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).
Кстати, я использую wxWidgets-3.1.0 в Windows 10.
Любые идеи были бы хорошы.