Jak najlepiej zaimplementować podświetlanie składni kodu źródłowego w Cocoa? [zamknięte]

zamknięte. to pytanie nie spełnia wytycznych dotyczących przepełnienia stosu . Obecnie nie przyjmuje odpowiedzi.

chcesz poprawić to pytanie? Update the pytanie więc to on-topic {[3] } dla przepełnienia stosu.

Zamknięte 5 lat temu .

Popraw to pytanie

Pracuję nad aplikacją Cocoa, która powinna być w stanie analizować i wyróżniać kod źródłowy napisany w takich językach jak Objective-C, SQL, JavaScript, Python itp. Tekst powinien być również edytowalne (np. za pomocą NSTextView).

Proszę o poradę, jak najlepiej zaimplementować taką funkcję w systemie Mac OS X 10.5.

Nie ma potrzeby obsługi automatycznego uzupełniania i innych dodatkowych funkcji. Proste formatowanie według słów kluczowych, ciągów, # zawiera I liczb, ale z fajną wydajnością jest po prostu OK.

Również byłoby świetnie, gdyby konfiguracja według języków była obsługiwana.

Dzięki!
Author: Jonathan Leffler, 2009-04-16

5 answers

Przygotowując projekt, który będzie wymagał czegoś podobnego, znalazłem następujące (ale nie oceniałem ich dogłębnie):

  • / Developer/Examples/OpenGL/Cocoa / GLSLEditorSample implementuje podświetlanie składni.
  • IDEKit , "open-source framework, który zapewnia edytowanie kodu źródłowego programisty, w tym kolorowanie składni, funkcje popup i dzielone ramki". To nie zostało zaktualizowane przez jakiś czas (to deklaruje kompatybilność 10.2 i 10.3 i pochodzi z Kreatora projektów projekt - można przekonwertować za pomocą Xcode 2.5).
  • UKSyntaxColoredTextDocument .
 16
Author: Jens Ayton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 17:54:52

Popieram Radę Ahrumana - szczególnie patrząc na UKSyntaxColoredTextDocument Uli, ponieważ to wskaże ci właściwy kierunek, do których klas itp. będziesz musiał się o tym dowiedzieć.

To kolejne doskonałe źródło informacji:

Http://www.cocoadev.com/index.pl?ImplementSyntaxHighlighting

Powodzenia - podświetlanie składni jest trudne do poprawienia, ale dużo zabawy po drodze!

 6
Author: Dunk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 23:08:48

Ostatnio musiałem poszukać rozwiązania podświetlania składni dla Cocoa i po przeszukaniu Stack Overflow, Google i GitHub nie znaleźli nic nowoczesnego, łatwego do ponownego użycia i wciąż w aktywnym rozwoju.

Wydaje się, że większość zakreślaczy składni w dzisiejszych czasach jest pisana dla sieci. Na szczęście osadzenie ich w widoku sieci Web jest dość łatwe do użycia w dowolnej aplikacji Cocoa. Komunikacja z edytorem może odbywać się poprzez protokół WebKit WebScriptObject .

Oto przykładowy wrapper dla popularnego edytora tekstu JavaScript CodeMirror dla Cocoa: https://github.com/swisspol/CodeMirrorView

 2
Author: Pol,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-30 20:50:56

Możesz użyć Pygments, który jest napisany w Pythonie, aby wygenerować HTML reprezentację kodu źródłowego, który następnie może być przedstawiony w widoku sieci Web.

(Uwaga, Jak widać w komentarzu poniżej-ta odpowiedź była na pierwotne pytanie, które nie wspominało o edytowalnym tekście.)

 1
Author: Matthew Schinckel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-16 14:05:20

Możesz rozważyć użycie flex w sposób opisany (w języku niemieckim) tutaj [1]. Przykład takiego podejścia można znaleźć tutaj [2].

[1] http://www.osxentwicklerforum.de/thread.php?postid=14764 [2] http://objectiveous.github.com/davenport/

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-04-18 19:56:25