Domanda

Possibile duplicato:
Colorazione della sintassi per l'app Cocoa

Sono interessato a evidenziazione della sintassi in un Cacao TextView.

Ho trovato diverse risorse:

  • approccio con flessione, tramite a flettere modello abbinato textStorageDidProcessEditingin un TextView delegare.In questo approccio l'intera stringa viene analizzata su ciascun evento di input, quindi le prestazioni peggiorano.

  • CocoaDev ha un propria pagina sull'argomento dell'evidenziazione della sintassi:

    1. Utilizzo NSTextStorageDidProcessEditingNotification, quindi ottieni l'intervallo modificato e applica semplicemente la colorazione lì.L'intervallo potrebbe essere costituito dai confini delle parole o altro;questo migliora sicuramente le prestazioni.

    2. Menzionato lì: Xcode, ad esempio, colora solo il testo attualmente sullo schermo e rinvia la colorazione del resto del documento finché non lo scorri. Come si potrebbe implementare questo?

    3. Utilizzo NSLayoutManager - attraverso Attributi temporanei [che] vengono utilizzati solo per il disegno sullo schermo e non sono persistenti in alcun modo... come dicono i dottori, ma quello non colora l'ultimo intervallo modificato finché non viene immesso uno spazio bianco.

    4. Mi piace l'Assistente personalizzato UKSyntaxColoredDocument – carino, ma la definizione della lingua viene effettuata tramite l'elenco delle proprietà;come utilizzare definizioni linguistiche aggiuntive/esistenti?

Nessuno degli approcci mi sembra veramente estensibile o robusto (tranne il 4.Forse ..).

Sono a conoscenza di robuste librerie esistenti per SH like pigmenti;e di PyObjC.

Domanda:Come sarebbe possibile utilizzare alcune librerie esistenti, ad es.Piace pigmenti per avere una sintassi estensibile e performante evidenziata in un Cocoa TextView?

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


Ho trovato un altro thread simile sull'argomento: Colorazione della sintassi per l'app Cocoa

È stato utile?

Soluzione

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top