문제

가능한 복제 :
코코아 앱의 구문 색칠

나는 관심이있다 구문 강조 표시 안에 코코아 텍스트 뷰.

몇 가지 자원을 찾았습니다.

  • Flex와 접근, a 몸을 풀다 패턴이 일치합니다 textStorageDidProcessEditing안에 TextView 대리자. 이 접근법에서는 전체 문자열이 각 입력 이벤트에서 구문 분석되므로 성능 저하가 저하됩니다.

  • Cocoadev는 있습니다 구문 강조 주제에 대한 자체 페이지:

    1. 사용 NSTextStorageDidProcessEditingNotification, 그런 다음 편집 된 범위를 가져 와서 색칠을 바르십시오. 범위는 WordBoundaries 또는 다른 것일 수 있습니다. 이것은 확실히 성능을 향상시킵니다.

    2. 언급 : 예를 들어 Xcode는 현재 화면에있는 텍스트를 색칠하고 문서를 스크롤 할 때까지 나머지 문서를 색상화합니다. 이것을 어떻게 구현합니까?

    3. 사용 NSLayoutManager - 을 통해 스크린 도면에만 사용되는 임시 속성 []는 어떤 식 으로든 지속적이지 않습니다 ... 문서가 말한 것처럼 공백 문자가 입력 될 때까지 마지막 편집 범위를 채색하지 않습니다.

    4. 맞춤 도우미가 좋아요 UksyntaxColoredDocument - 좋지만 언어 정의는 속성 목록을 통해 수행됩니다. 추가/기존 언어 정의를 사용하는 방법?

접근 방식 중 어느 것도 나에게 실제로 확장 가능하거나 강력한 것처럼 보이지 않습니다 (4. 어쩌면 .. 제외).

나는 Sh Like의 기존 라이브러리를 강력하게 알고 있습니다. pygments; 그리고 pyobjc.

의문: 기존 라이브러리를 어떻게 사용할 수 있습니까? pygments 코코아에서 확장 가능하고 성능 구문을 강조 표시하려면 TextView?

메모: 나는이 질문이 매우 넓다는 것을 알고 있습니다. 솔루션뿐만 아니라 경험과 제안을 환영합니다. 감사.


그 문제에 대해 또 다른 유사한 스레드를 찾았습니다. 코코아 앱의 구문 색칠

도움이 되었습니까?

해결책

소스 코드를 살펴 보는 것이 좋습니다. Smultron. 아주 좋은 구문 강조 표시가 있습니다. NstextView의 서브 클래스를 사용하여 대부분의 무거운 리프팅을 수행합니다. 이 코드는 레이아웃 관리자를 사용하여 텍스트에 속성을 추가하고 다른 영리한 트릭을 사용하여 필요한만큼 문서의 대부분 만 강조합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top