Как включить виртуальное пространство в AvalonEdit? - PullRequest
2 голосов
/ 09 февраля 2011

Я хочу добиться «Виртуального пространства» функциональности, аналогичной функции в Visual Studio, в AvalonEdit.

Т.е. каретка может быть расположена за концом текстовой строки, иесли вы нажмете любую клавишу, для соответствия автоматически добавятся пробелы.

Я очень привык к этой функции, но ни поиск в Google, ни изучение кода AvalonEdit не дали мне никаких подсказок о том, как включить его, если он поддерживаетсявообще.

Если это не так, было бы неплохо, как бы расширить механизмы обработки карет.

Спасибо!

1 Ответ

4 голосов
/ 09 февраля 2011

Edit: Поддержка виртуального пространства была добавлена ​​в AvalonEdit в версии 4.2.0.8283. Набор textEditor.Options.EnableVirtualSpace = true;.

Ниже мой оригинальный ответ.


В настоящее время не поддерживается.

Если вы хотите попробовать добавить его, обязательно прочитайте документацию по «системам координат» (в файле справки CodeProject). Вы захотите расширить «визуальный столбец», чтобы позиции после конца строки были действительными. И вам придется настроить положение <-> столбца вычислений (VisualLine.GetVisualColumn и друзья). Используйте TextView.WideSpaceWidth, чтобы вычислить столбцы после конца строки.

Вышесказанное должно позволить вам использовать мышь для размещения каретки в виртуальном пространстве. После этого вам потребуется изменить движение каретки (клавиши со стрелками, CaretNavigationCommandHandler) и логику ввода текста (TextArea.PerformTextInput), чтобы также поддерживать виртуальное пространство.

И если вы успешно справились с вышеуказанными шагами, не забудьте отправить свои изменения обратно в AvalonEdit. :-) Хотя я сам не фанат виртуального пространства, нам нужно что-то подобное для правильной работы RectangleSelection.

...