Evidenziazione della sintassi in Cocoa TextView?Esperienze?Suggerimenti?Idee?[duplicare]
-
13-09-2019 - |
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
textStorageDidProcessEditing
in unTextView
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:
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.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?
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.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
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.