2009-06-09 11 views
10

Eventuali duplicati:
Syntax coloring for Cocoa appEvidenziazione della sintassi in Cocoa TextView? Esperienze? Suggerimenti? Idee?

Mi interessa evidenziazione della sintassi in un cacao TextView.

ho trovato diverse risorse:

  • approach with flex, tramite un modello flex confrontati textStorageDidProcessEditing in un TextView delegato. In questo approccio l'intera stringa viene analizzata su ogni evento di input, quindi le prestazioni diminuiscono.

  • CocoaDev ha un own page on the topic of syntax highlighting:

    1. Usa NSTextStorageDidProcessEditingNotification, quindi ottenere la gamma modificato, e basta applicare la colorazione lì. L'intervallo potrebbe essere wordboundaries o qualsiasi cosa; questo migliora decisamente le prestazioni.

    2. Messo in evidenza lì: Xcode, ad esempio, colorizza solo il testo attualmente visualizzato sullo schermo e rimuove colorando il resto del documento fino a quando non lo si scorre. Come si potrebbe implementare questo?

    3. Usa NSLayoutManager - via attributi temporanei [che] vengono utilizzati solo per il disegno sullo schermo e non sono persistenti in alcun modo ... come la documentazione dire, ma che non colora l'ultimo intervallo modificato , finché non viene inserito un carattere di spazio bianco.

    4. Helper personalizzato come UKSyntaxColoredDocument - bello, ma la definizione della lingua viene eseguita tramite l'elenco delle proprietà; come usare definizioni di lingua aggiuntive/esistenti?

Nessuno degli approcci sembrano davvero allungabile o solido a me (tranne il 4. forse ..).

Sono consapevole di robuste librerie esistenti per SH come pygments; e di PyObjC.

Domanda: Come sarebbe possibile utilizzare alcune librerie esistenti, ad es. come pygments per avere una sintassi estensibile e performante evidenziando in un cacao TextView?

Nota: So che questa domanda è molto ampia (e troppo lunga). Esperienze e suggerimenti e soluzioni sono benvenute. Grazie.


Trovato un altro thread simile su quella materia: Syntax coloring for Cocoa app

risposta

7

vorrei suggerire di dare un'occhiata al codice sorgente per Smultron. Ha un'evidenziazione della sintassi molto bella. Usa una sottoclasse di NSTextView per fare la maggior parte del sollevamento pesante. Il codice utilizza il gestore di layout per aggiungere attributi al testo e utilizza altri trucchi intelligenti per evidenziare solo la parte del documento necessaria.

+0

Smultron non è più open source, quindi il codice sorgente non è più disponibile. – zpasternack

+1

La fonte è ancora disponibile sul sito Web di soureforge. Vedi qui: http://sourceforge.net/projects/smultron/files/smultron/3.6b1/ – Daniel

+0

Mi correggo, grazie! – zpasternack

Problemi correlati