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 unTextView
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:
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.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?
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.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
Smultron non è più open source, quindi il codice sorgente non è più disponibile. – zpasternack
La fonte è ancora disponibile sul sito Web di soureforge. Vedi qui: http://sourceforge.net/projects/smultron/files/smultron/3.6b1/ – Daniel
Mi correggo, grazie! – zpasternack