Szintillanet ist eine Windows -Formulare, Wrapper und Bindungen für die vielseitige Scintilla -Quellcode -Bearbeitungskomponente.
"Neben den Funktionen in Standard -Textbearbeitungskomponenten enthält Szintilla Features, die besonders nützlich sind, wenn sie den Quellcode bearbeiten und debuggen. Dies beinhaltet die Unterstützung für das Syntax -Styling, die Fehlerindikatoren, den Abschluss und die Aufruf -Tipps. Der Auswahlrand kann Marker wie diejenigen enthalten, die in Debuggen verwendet werden, um Breakpoint -Breakpoint und die aktuellen Linien zu zeigen. Billig. Schriftarten. " - scintilla.org
Szintillanet kann auch mit WPF mit dem WindowsFormShost verwendet werden.
Szintillanet ist in aktiver Entwicklung. Wenn Sie Probleme finden oder nur eine Frage haben, können Sie die Probleme auf unserer GitHub -Seite gerne verwenden.
Kompilierte Versionen, die Produktionsbereitschaft sind, können von Nuget oder der Releases -Seite heruntergeladen werden.
Für das neueste und größte Bestand können Sie den Master -Zweig mit der Quelle mit Visual Studio 2015 aus erstellen.
Eine ziemlich lebendige Szintillanet -Community gibt es hier auf Github. Wir empfehlen ausdrücklich, dass Sie sich die folgenden Projekte ansehen:
Zusätzliche Projekte und benutzerfreundliche Code werden auf der Seite "Nutzer-übermitteltes Rezepte des Wiki" nachverfolgt.
Dieses Projekt ist ein Umschreiben des Szintillanet -Projekts, das in Codeplex gehostet und von mir und anderen gepflegt wird. Nach vielen Jahren, in denen ich zu diesem Projekt beigetragen hatte, entschied ich mich, anders über die API nachzudenken, die wir geschaffen hatten, und das Gefühl, ich könnte besser machen, wenn ich bereit wäre, zu einer leeren Leinwand zurückzukehren. Somit ist dieses Projekt der spirituelle Nachfolger des ursprünglichen Szintillanet, wurde aber von Grund auf neu geschrieben.
Eines der Probleme, an denen Szintillanet historisch gelitten hat, ist die Tatsache, dass die native Szintilla -Kontrolle auf Bytes und nicht auf Charakteren arbeitet. Frühere Versionen von Szintillanet haben dies nicht berücksichtigt, und wenn Sie mit Unicode zu tun haben, ist ein Byte nicht immer ein Charakter. Das Ergebnis war eine API, die manchmal Byte -Offsets und zu anderen Zeiten erwartete Charakter -Offsets. Manchmal funktionierten die Dinge wie erwartet und manchmal traten zufällige Ausnahmen und Ausnahmen außerhalb des Bereichs auf.
Nicht mehr. Eines der Hauptschwerpunkte dieser Umschreibung bestand darin, Szintillanet von Grund auf ein Verständnis von Unicode zu vermitteln. Jede API arbeitet nun konsequent mit charakterbasierten Offsets und Bereichen, genau wie .NET-Entwickler erwarten. Intern haben wir eine Zuordnung des Charakters zu Byte -Offsets (und umgekehrt) und machen die gesamte Übersetzung für Sie, sodass Sie sich nie Sorgen machen müssen. Keine Ausnahmen mehr außerhalb des Bereichs. Keine Verwirrung mehr. Kein Schmerz mehr. Es funktioniert einfach.
Das zweitbeliebteste Szintillanet -Problem war die Verteilung der Szintillanet -DLL und der nativen Komponente, die Scilexer DLL. Szintillanet ist ein Wrapper. Ohne die Scilexer.dll, die die Kernfunktionalität enthält, ist es nichts. Als native Komponente muss Scilexer.dll für 32- und 64-Bit-Versionen von Windows separat zusammengestellt werden. Es waren also drei DLLs, die Entwickler mit ihren Bewerbungen versenden mussten.
Dies erwies sich als Schmerzpunkt, da Entwickler oft nicht so viele Bibliotheken verteilen wollten oder sie an alternativen Orten platzieren wollten, die die von Pinvoke und Szintillanet verwendeten DLL -Lademechanismen durchbrechen wollten. Es verursacht auch aus den gleichen Gründen Kopfschmerzen während der Designzeit in Visual Studio.
Um dieses Szintillanet anzusprechen, bettet nun eine 32- und 64-Bit-Version von scilexer.dll in die Szintillanet-DLL ein. Alles, was Sie brauchen, um Szintillanet in einer Bibliothek auszuführen. Zusätzlich zu den oben genannten Schmerzen ermöglicht es uns, ein Szintillanet -Nuget -Paket zu erstellen.
Ein weiteres Ziel des Umschreibens war es, die ursprüngliche Szintilla-API für das zu akzeptieren, was es ist, und nicht zu versuchen, sie in eine API im .NET-Stil zu zwingen, wenn sie nicht sein sollte oder nicht. Ein gutes Beispiel dafür ist, wie Szintillanet Indexer verwendet, um auf Linien zuzugreifen, sie jedoch nicht als .NET -Sammlung zu behandeln. Linien in einer Szintilla -Steuerung sind keine Elemente in einer Sammlung. Es gibt keine API zum Hinzufügen, Einfügen oder Entfernen einer Linie in Szintilla, und daher versuchen wir nicht, eine in Szintillanet zu erstellen. Diese Abweichungen von der .NET -Konvention sind selten, werden jedoch durchgeführt, um eine native Szintilla -Dokumentation für den verwalteten Wrapper relevant zu halten und Situationen zu vermeiden, in denen der Versuch, die ursprüngliche API zu zwingen, nachteilig als hilfreich ist.
Hinweis: Dies bedeutet nicht, dass Szintillanet Zeilen hinzufügen, einfügen oder entfernen kann. Diese Operationen werden jedoch als Textänderungen behandelt, nicht als Zeilenänderungen.
Die vollständige API -Dokumentation ist in allen unseren Paketen enthalten. Darüber hinaus gibt es umfangreiche Unterlagen im Projekt Wiki, das Rezepte für gemeinsame Aufgaben und Fragen enthält. Wenn Sie neu in Szintillanet sind, ist das Wiki ein guter Ort, um loszulegen.
Wie bereits in der Projektcharter erwähnt, wurden große Anstrengungen unternommen, um die Szintillanet -API mit der nativen Szintilla -API zu halten. Daher ist die einheimische Dokumentation der nativen Szintilla weiterhin eine wertvolle Ressource, um einige der tieferen Merkmale zu erlernen.
Im Allgemeinen wird ihre API unsere auf folgende Weise zugeordnet:
SCI_GETTEXT und SCI_SETTEXT(value) hat, wird einer ähnlich benannten Eigenschaft wie Text zugeordnet.SCI_INDICSETFORE(indicatorNumber, ...) oder SCI_STYLEGETSIZE(styleNumber, ...) zugreifen zu können, wird über einen Indexer wie Indicators[0].ForeColor oder Styles[0].Size zugegriffen. Die native Szintilla -Kontrolle hat die Angewohnheit, Eingangswerte auf akzeptable Bereiche zu klemmen, anstatt Ausnahmen zu werfen, und wir haben dieses Verhalten in Szintillanet gehalten. Beispielsweise erfordert die GotoPosition -Methode ein Argument position . Wenn dieser Wert weniger als Null oder über das Ende des Dokuments hinaus ist, wird er entweder auf 0 oder auf die TextLength geklemmt, anstatt eine OutOfRangeException zu werfen. Dies führt tendenziell zu weniger Ausnahmen, aber dem gleichen gewünschten Ergebnis.
Die MIT -Lizenz (MIT)
Copyright (C) 2017, Jacob Slusser, https://github.com/jacobslusser
Die Erlaubnis wird hiermit einer Person, die eine Kopie dieser Software und zugehörigen Dokumentationsdateien (der "Software") erhält, kostenlos erteilt, um die Software ohne Einschränkung zu behandeln, einschließlich ohne Einschränkung der Rechte, zu verwenden, zu kopieren, zu modifizieren, zusammenzufassen, zu veröffentlichen, zu veröffentlichen, zu verteilen, zu verteilt, und/oder Kopien der Software zu ermöglichen, um Personen zu beanstanden, an denen die Software zugänglich ist, um die folgenden Bedingungen zu beantragen.
Die oben genannte Copyright -Mitteilung und diese Erlaubnisbekanntmachung müssen in alle Kopien oder wesentlichen Teile der Software enthalten sein.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.