Ich mag meinen eigenen Quellcode-Editor machen, was sind die guten Entscheidungen zu treffen? [geschlossen]

StackOverflow https://stackoverflow.com/questions/4064813

Frage

Ich habe es von diesen dutzenden Redakteure hat die nie einfache Dinge wie sieht vor:

  • unterscheiden Typ Schlüsselwörter und Anleitung Keywords so dass ich verschiedene Farben auf sie setzen können.
  • ist Cross-Plattform einen Standard-GUI-lib mit wie qt gtk etc (Notepad ++, ja, ich hasse dich fast).
  • genug Tastenkombination wie doppelte Linie, Kommentar Auswahl, und ein anständiger Fund ersetzen.
  • Decent task Lockerung Funktionen wie Single-Click-on-the-number-line-Marge die gesamte Zeile zu wählen.
  • Scintilla oder eine andere gut genug Lexer, dass Höhepunkte genug, um verschiedene Dinge, weil Gehirn-Kompilierung Code ist eine Sache, schnell mit den Augen erkennen, was ist das, was etwas ist, ich wichtig finden.

Ich mag nur sehr grundlegende Sprachen wie C unterstützen, C ++, vielleicht Python, nicht HTML oder CSS.

Is Scintilla eine gute Wahl, um nur diese Sprachen zu markieren, und ist ein Lexer wirklich notwendig?

Ist das nicht QT genug, um einen Texteditor wie das programmieren ich tun will? Ich weiß, es ist qscintilla, aber gibt es einen Grund, warum ich sollte keinen lib verwenden, die eine Lexer integriert? Warum ist Scintilla so eine gute lib?

Qt ist eine gute Wahl für einen solchen Editor? (Ich möchte auch hart einbetten ProFont im Editor alle nur ungern Schriftproblem zwischen OSes töten).

EDIT: Kurz gesagt, ich mag einen Editor machen, nur mit der gleichen Syntax Highlight verfügt das Notepad ++. Das ist mein Hauptziel, und die Verwendung von qscintilla könnte ein wenig schwieriger, als ich dachte ...

EDIT2: Nun fand ich textadept, es ist nicht so bekannt, aber ist ziemlich genial. Ich habe es geschafft, nicht meine Lexer zu machen, da ich andere zu tun, was ich unter Windows zu tun, leider ist es langsam auf dem Mac. Offenbar gibt es keine Scite offiziellen Build für den Mac.

War es hilfreich?

Lösung

Wie alle anderen sagen, es ist wahrscheinlich mehr Mühe, als es wert ist, aber wenn Sie es wirklich tun wollen, eine gute Wahl Qt da ist es Cross-Plattform. QSyntaxHighlighter Gebrauch machen Ihr Keyword / Typ-Hervorhebung, um alle Vorteile von Qt-Unterstützung für Tastaturbefehle.

Andere Tipps

C ++ ist keine „sehr einfache Sprache“ von einer Strecke der Phantasie.

Warum wollen Sie wirklich, dies zu tun? Es gibt sooo viele Open-Source-Code-Editoren da draußen.

Wenn Sie Ihren eigenen Editor schreiben müssen, schlage ich vor, Blick auf den anderen Open-Source-Editoren und untersuchen, welche Stücke Sie Hafen zu Ihrem Editor.

Portierungs Stücke von bestehendem Arbeits und getesteten Code ist in der Regel viel besser als Ihren eigenen Code zu schreiben und es debuggen.

Nach ein paar ernsthafte Open-Source-Editoren Lesen: Emacs, Eclips, Codeblocks, CodeLight usw., ich glaube, Sie zu ändern beginnt, Ihren Geist einen Editor von Grund auf neu zu schreiben

.

- Thomas Matthews
My Info

Wenn Sie wirklich tun wollen (und es klingt wie eine Menge Arbeit) Ich würde auf ANTLR sucht den Code zum Parsen. Sie können einige Ideen von ihrer ANTLRWorks Anzeige. So verknüpfen könnte den Parsing-Baum auf eine Anzeige, die eine Menge Arbeit sein, so würde ich sehen, was eine IDE-Plattform wie Eclipse zu bieten hat,

Sind Sie OK mit Java?

Wenn ja, geht für Eclipse-Technologien: SWT und JFace . Letztere liefert Ihnen org.eclipse.jface.text Paket mit vielen Funktionen. Dann können Sie eigene Editor rollen leicht auf das zu stützen. (ich ziehe Eclipse-basierten Editoren Scintilla-basierten, ich glaube, sie sind in der Regel weiter fortgeschritten und feature-rich sein, aber das ist meine persönliche Meinung.)

Aber dann, möchten Sie vielleicht einen Schritt weiter gehen und verwenden Sie die Eclipse RCP Rahmen für Sie Anwendung ... Aber warum dann nicht das Eclipse-IDE selbst verwenden und fügen Sie einfach, was Sie wollen als Plug-In.

Die Eclipse-Codebasis ist riesig und es ist an Ihnen, wie viel Sie wieder verwenden wollen.

Ich habe versucht, etwas Ähnliches mich für ein Projekt zu tun, ich arbeite im Moment schaute ich in die QScintilla und hatte es von meinem Projekt zu entfernen, denn wenn man in einem QGraphicsView eingebettet kann ich nicht die Auflösung steuern des Widgets Bild, den Text als Bild zu malen scheint und das ist, was wir sehen, spielte ich mit der Glätte der QFont zunimmt und dass es sich verbessert, aber immer noch ein no-go.

gefunden Also habe ich einen einfachen Code-Editor innerhalb Qt-Code-Basis kommt es bei jeder Installation von QT, wenn Sie schauen in:

C:\Qt\4.7.3\src\scripttools\debugging\qscriptedit.h
C:\Qt\4.7.3\src\scripttools\debugging\qscriptedit.cpp

Wenn Sie auf den Quellcode von OpenShapeFactory gehen, wo ich einzubetten einen Code-Editor bin versucht: Check, wie ich die Syntax Highlighter bekommt und die Autovervollständigung:

Widget verwendet das qscriptedit Widget, dass Schiffe mit qt, können Sie Ihre eigenen Schlüsselwörter an die Syntax hightlighter aus einer Datei sowie für die automatische Vervollständigung Dropdownlist hinzufügen können.

Dies ist der Header, scriptwidget.h und die Umsetzung scriptwidget.cpp sind als Teil von der ganze Projektcode .

Die nächste Stufe ist in den QtCreator zu suchen und den Code sehen, dass sie alle schon haben, wenn nicht die meisten dieser Funktionen, nachdem Sie ihre Version kompilieren erhalten, finden gerade da, wo deine kleine Mods hinzufügen und Sie vielleicht die werden immer näher einfacher Code-Editor.

Ich wünsche Ihnen viel Glück auf diese Richtung, und wenn Sie eine Lösung finden, bitte senden Sie es über, :) Heads-up einen Aussichtspunkt oben für die Repository-Verbindung halten, wenn ich zum ersten Mal einen Weg, um es finden, könnte ich Dich auf die Antwort jagen.

würde ich etwas Mühe mit dem Emacs Farbe Themenpaket und die verschiedenen Modi experimentieren Langauge aufwenden; sehen, wenn Sie das Lispeln biegen kann zu tun, was Sie wollen. Sie können fast sicher. meiner Meinung nach Emacs und ein wenig Aufwand auf Ihrer Seite werden Sie Ihre ultimative Editor (nicht vergessen, Emacs ist wirklich nur ein DIY-Editor Toolkit) erhalten. Wenn Sie Emacs in die Form biegen können nicht mögen, dass Sie Sie gut platziert werden, um den Aufwand in dem Schreiben eigenes aufwenden.

Verwendung so etwas wie C, QT und Lua für das Scripting-Engine.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top