2009-06-09 4 views
10

가능한 중복 : 나는 코코아 텍스트 뷰에을 강조 구문에 관심이
Syntax coloring for Cocoa app구문 코코아 TextView에서 강조 표시 하시겠습니까? 경험담? 제안? 아이디어?

. TextView 위임에 textStorageDidProcessEditing 에 대해 일치 flex 패턴을 통해,

  • approach with flex :

    나는 여러 자원을 발견했다. 이 접근 방식에서는 전체 문자열이 각 입력 이벤트에서 파싱되므로 성능이 저하됩니다.

    1. 사용 NSTextStorageDidProcessEditingNotification, 다음 편집 범위를 얻을, 그냥 거기에 색상을 적용

    2. CocoaDev은 own page on the topic of syntax highlighting이 있습니다. 범위는 단어 경계 또는 기타 일 수 있습니다. 이것은 확실히 성능을 향상시킵니다.

    3. 여기에서 언급 : 예를 들어, Xcode는 현재 화면에 표시된 텍스트의 색만 지정하고 스크롤 할 때까지 나머지 문서의 색을 유지합니다. 어떻게 구현하나요?

    4. 사용 NSLayoutManager - 전용 화면 그리기에 사용되는 어떠한 방법으로 지속되지 않습니다되는 [] 임시 속성 ...를 통해이 문서가 말한대로,하지만 마지막 편집 범위를 착색하지 않습니다 , 공백 문자가 입력 될 때까지.

    5. 사용자 지정 도우미 UKSyntaxColoredDocument - 멋지지만 언어 정의는 속성 목록을 통해 이루어집니다. 추가/기존 언어 정의를 사용하는 방법? 접근 방식의

아무도 나에게 정말 확장 또는 강력한 보이지 않는다 (아마 4를 제외하고 ..).

저는 SH의 강력한 기존 라이브러리 인 pygments을 알고 있습니다. PyObjC입니다.

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

참고 :이 질문은 매우 광범위하고 (너무 오래 걸린다). 경험과 제안은 물론 솔루션도 환영합니다. 감사.Syntax coloring for Cocoa app

답변

7

내가 Smultron에 소스 코드를 살펴 본다 제안 :


는 그 문제에 대한 다른 유사한 스레드를 발견. 아주 멋진 구문 강조가 있습니다. 그것은 NSTextView의 하위 클래스를 사용하여 대부분의 어려운 작업을 수행합니다. 이 코드는 레이아웃 관리자를 사용하여 텍스트에 속성을 추가하고 다른 영리한 트릭을 사용하여 필요한만큼의 문서 만 강조 표시합니다.

+0

Smultron는 더 이상 오픈 소스가 아니며, 더 이상 소스 코드를 사용할 수 없습니다. – zpasternack

+1

소스는 soureforge 웹 사이트에서 계속 사용할 수 있습니다. 여기를 참조하십시오 : http://sourceforge.net/projects/smultron/files/smultron/3.6b1/ – Daniel

+0

나는 고쳐졌다, 고마워! – zpasternack