Cocoa TextView에서 구문 강조 표시? 경험담? 제안? 아이디어? [복제하다
-
13-09-2019 - |
문제
가능한 복제 :
코코아 앱의 구문 색칠
나는 관심이있다 구문 강조 표시 안에 코코아 텍스트 뷰.
몇 가지 자원을 찾았습니다.
Flex와 접근, a 몸을 풀다 패턴이 일치합니다
textStorageDidProcessEditing
안에TextView
대리자. 이 접근법에서는 전체 문자열이 각 입력 이벤트에서 구문 분석되므로 성능 저하가 저하됩니다.Cocoadev는 있습니다 구문 강조 주제에 대한 자체 페이지:
사용
NSTextStorageDidProcessEditingNotification
, 그런 다음 편집 된 범위를 가져 와서 색칠을 바르십시오. 범위는 WordBoundaries 또는 다른 것일 수 있습니다. 이것은 확실히 성능을 향상시킵니다.언급 : 예를 들어 Xcode는 현재 화면에있는 텍스트를 색칠하고 문서를 스크롤 할 때까지 나머지 문서를 색상화합니다. 이것을 어떻게 구현합니까?
사용
NSLayoutManager
- 을 통해 스크린 도면에만 사용되는 임시 속성 []는 어떤 식 으로든 지속적이지 않습니다 ... 문서가 말한 것처럼 공백 문자가 입력 될 때까지 마지막 편집 범위를 채색하지 않습니다.맞춤 도우미가 좋아요 UksyntaxColoredDocument - 좋지만 언어 정의는 속성 목록을 통해 수행됩니다. 추가/기존 언어 정의를 사용하는 방법?
접근 방식 중 어느 것도 나에게 실제로 확장 가능하거나 강력한 것처럼 보이지 않습니다 (4. 어쩌면 .. 제외).
나는 Sh Like의 기존 라이브러리를 강력하게 알고 있습니다. pygments; 그리고 pyobjc.
의문: 기존 라이브러리를 어떻게 사용할 수 있습니까? pygments 코코아에서 확장 가능하고 성능 구문을 강조 표시하려면 TextView
?
메모: 나는이 질문이 매우 넓다는 것을 알고 있습니다. 솔루션뿐만 아니라 경험과 제안을 환영합니다. 감사.
그 문제에 대해 또 다른 유사한 스레드를 찾았습니다. 코코아 앱의 구문 색칠
해결책
소스 코드를 살펴 보는 것이 좋습니다. Smultron. 아주 좋은 구문 강조 표시가 있습니다. NstextView의 서브 클래스를 사용하여 대부분의 무거운 리프팅을 수행합니다. 이 코드는 레이아웃 관리자를 사용하여 텍스트에 속성을 추가하고 다른 영리한 트릭을 사용하여 필요한만큼 문서의 대부분 만 강조합니다.