Syntax Highlighting in der Shell
-
Ich steh grad vor ein Problem. Ein reines Shellprogramm, ohne irgendeine GUI etc. . Programmiert auf Linux.
Sollte folgendes können, Syntax Highlighting. Zum kurzen Verständnis, liegen die Keywords sortiert in einer Datei. Es sollte nun während der Eingabe von Zeichen, auf Leerzeichen geschaut werden, somit sollte ein Keyword erkannt werden. Beispiel man gibt Apfel ein. Aha Apfel ist ein Keyword, und zu diesen Keyword, gehört der und der Paramter. Parameter wie Farbe oder Abschluss des Commands.Eigentlich wäre getch(() recht gut dafür gemacht, aber getch kommt ja nicht so klar mit Return zb. . Zum anderen bleibt die Problematik, wie kann ich egal wie die Shell angezeigt wird, ein gleichen Aufbau gewährleisten? So das bei ein terminal was auf maximal 10 Zeichen ausgelegt ist, die gleiche Optik entsteht wie bei einer Shell wo 80 Zeichen pro Zeile passen. Bietet Linux da was an um die maximal möglichen Zeichenanzahl auszulesen? Ist get() wirklich geeignet? Und wie kann ich realisieren das ich an eine bestimmte Position, Buchstaben ausgeben kann und die denn auch noch farblich?
Die Windows System Calls sind ja nicht machbar.
-
Schonmal ncurses angeschaut?
-
ncurses ist das einfachste.
ansonsten müsstest du das ganze selber implementieren. da wäre der richtige startpunkt dir die funktionsweise von ttys und dem vt100 durchzulesen. alles wirst du nicht brauchen, aber zumindest die grundstrukturen und die esc-sequenzen sind zwingend notwendig. das ist aber alles andere als ein zuckerschlecken...
-
Willst du dein eigenes Syntaxhighlighting oder reicht es dir, wenn „Übliches“ eingefärbt wird?
Für Letzteres kannst du pygments nehmen und mit einer Umgebungsvariable (LESSCOLOR=yes, LESSCOLORIZE=pygmentize glaub ich, kann aber auch sein, dass das so nur in Gentoo geht) less damit ausstatten.
-
Ich will das selbst programmieren, und damit einfach mal wieder meine Kenntnisse auffrischen. Da ich eh Linux mit Shell verbinde, dürfte es auch für weitere Projekte interessant sein, wie man in der reinen Shell sowas programmiert.
-
um es mal offen zu sagen: außer den (n)curses-entwicklern macht das niemand und alle sind froh, dass die sich mit dem ganzen scheiß abgeben.
du kannst es gerne selber entwickeln. nur hoffe ich, dass du eine sehr hohe frustationsschwelle hast. das ist mein ernst. wenn du irgendwie hoffst, dass dich das befassen mit dem system näher an linux bindet, liegst du mit der console völlig falsch. das ist leider unix von seiner schlechtesten seite. unübersichtlich, nicht intuitiv und c in seiner hässlichsten form.
-
Naja, oder machs dir doch einfach und google dir die ASCII-Escape-Sequenzen. Du scheinst ja wohl nur Farbe und keine wirkliche Bewegung im Terminal zu gebrauchen.
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Linux/Unix verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.