2011-02-09 3 views
2

Visual Studio의 AvalonEdit에서와 비슷한 "Virtual Space" 기능을 구현하고 싶습니다.AvalonEdit에서 가상 공간을 활성화하는 방법은 무엇입니까?

e.e. 캐럿은 텍스트 줄의 끝을 넘어 위치 할 수 있으며 아무 키나 누르면 공백이 자동으로 추가되어 일치하게됩니다.

필자는이 기능에 익숙하지만, AvalonEdit의 코드 검색이나 연구로 전혀 지원되지 않는 경우이를 사용하는 방법에 대한 단서를 얻을 수 없습니다.

그렇지 않은 경우 캐럿 처리 메커니즘을 확장하는 방법이 좋습니다.

감사합니다.

답변

4

편집 : 버전 4.2.0.8283의 가상 공간 지원 has been added to AvalonEdit. 세트 textEditor.Options.EnableVirtualSpace = true;.

다음은 저의 원래 답변입니다.


현재 지원되지 않습니다.

코드를 추가하려면 CodeProject의 도움말 파일에있는 "좌표계"설명서를 읽어야합니다. 줄 끝 뒤의 위치가 유효하도록 "시각적 기둥"을 확장해야합니다. 그리고 위치 < -> 열 계산 (VisualLine.GetVisualColumn 및 friends)을 조정해야합니다. TextView.WideSpaceWidth를 사용하여 줄 끝을 지나친 열을 찾습니다.

위의 경우 마우스를 사용하여 가상 공간에 캐럿을 배치 할 수 있어야합니다. 그런 다음 가상 공간을 지원하기 위해 캐럿 이동 (화살표 키, CaretNavigationCommandHandler) 및 텍스트 입력 논리 (TextArea.PerformTextInput)를 변경해야합니다.

위의 단계를 성공적으로 수행 한 경우 변경 사항을 다시 AvalonEdit에 제공하는 것을 잊지 마십시오. :-) 나는 가상 공간의 팬이 아니지만, RectangleSelection을 올바르게 작동시키는 것과 같은 것이 필요하다.

+0

와우, 정말 포괄적 인 답변입니다. 고맙습니다.)이 기능이 최우선 순위는 아니지만 언젠가는이 기능을 확실히 사용할 수 있습니다. – wizzard0

+0

@ wizzard0 : 몇 주 전에이 작업을 시작했지만 다시 중단되었습니다. http://bugtracker.sharpdevelop.net/issue/ViewIssue.aspx?id=1854&PROJID=4에 첨부 된 미완성 패치를 찾을 수 있습니다. 중단 된 곳에서 자유롭게 계속하십시오. – Daniel