SCINTILLANET est un contrôle, un emballage et des liaisons Windows Forms pour le composant d'édition de code source scintille polyvalent.
"En plus des fonctionnalités trouvées dans les composants d'édition de texte standard, le scintilla comprend des fonctionnalités particulièrement utiles lors de la modification et du débogage du code source. Ceux-ci incluent la prise en charge du style de syntaxe, des indicateurs d'erreur, de l'achèvement du code et des conseils d'appel. La marge de sélection peut contenir des marqueurs comme ceux utilisés dans les débogueurs pour indiquer et les points de rupture et la ligne actuelle. Couleurs d'arrière-plan et plusieurs polices. " - scintilla.org
SCINTILLANET peut également être utilisé avec WPF à l'aide du WindowsFormShost.
SCINTILLANET est en développement actif. Si vous trouvez des problèmes ou si vous avez simplement une question, n'hésitez pas à utiliser la fonctionnalité des problèmes sur notre page GitHub.
Les versions compilées qui sont prêtes à la production peuvent être téléchargées à partir de NuGet ou de la page des versions.
Pour le dernier et le plus grand, vous pouvez construire la branche maître à partir de Source à l'aide de Visual Studio 2015.
Une communauté scintillanet assez dynamique existe ici sur Github. Nous vous recommandons spécifiquement des projets suivants:
Les projets supplémentaires et le code soumis à l'utilisateur sont suivis dans la page des recettes soumises par l'utilisateur du wiki.
Ce projet est une réécriture du projet Scintillanet hébergé chez Codeplex et entretenu par moi-même et les autres. Après de nombreuses années à contribuer à ce projet, j'ai décidé de penser différemment à l'API que nous avions créé et j'ai senti que je pouvais en faire un meilleur si j'étais prêt à retourner à une toile vierge. Ainsi, ce projet est le successeur spirituel du scintillanet original mais a été écrit à zéro.
Historiquement, l'un des problèmes dont Scintillanet a souffert est le fait que le contrôle natif de scintille fonctionne sur des octets, pas des personnages. Les versions antérieures de ScilLiLlanet ne sont pas tenues de tenir compte de cela, et lorsque vous avez affaire à Unicode, un octet n'égale pas toujours un personnage. Le résultat a été une API qui s'attendait parfois à des décalages d'octets et à d'autres moments attendus des compensations de caractère. Parfois, les choses fonctionnaient comme prévu et d'autres fois des échecs aléatoires et des exceptions hors de portée se produiraient.
Pas plus. L'une des principales orientations de cette réécriture a été de donner à Scintillanet une compréhension de l'Unicode à partir de zéro. Chaque API fonctionne désormais systématiquement avec les décalages et les gammes basés sur des personnages, tout comme les développeurs .NET s'attendent. En interne, nous maintenons une cartographie de caractère pour les décalages d'octets (et vice versa) et faisons toute la traduction pour vous afin que vous n'ayez jamais à vous en soucier. Plus d'exceptions hors gamme. Plus de confusion. Plus de douleur. Ça marche juste.
Le deuxième numéro de scintillanet le plus populaire était la confusion distribuant la DLL ScilLiLlanet et son composant natif, la DLL Scilexer. Scintillanet est un emballage. Sans le Scilexer.dll contenant la fonctionnalité de Core Scintilla, ce n'est rien. En tant que composant natif, Scilexer.dll doit être compilé séparément pour les versions 32 et 64 bits de Windows. C'était donc en fait trois DLL que les développeurs devaient expédier avec leurs applications.
Cela s'est avéré un point de douleur parce que les développeurs ne voulaient souvent pas distribuer autant de bibliothèques ou voulaient les placer dans des endroits alternatifs qui briseraient les mécanismes de chargement de la DLL utilisés par Pinvoke et Sciltillanet. Il provoque également des maux de tête pendant le temps de conception dans Visual Studio pour les mêmes raisons.
Pour aborder ce scintillanet, intègre désormais une version 32 et 64 bits de Scilexer.dll dans la DLL ScilLiLLANET. Tout ce dont vous avez besoin pour exécuter SCINTILLANET dans une bibliothèque. En plus d'apaiser la douleur mentionnée ci-dessus, cela nous permet maintenant de créer un package SCINTILLANET NUGET.
Un autre objectif de la réécriture était d'accepter l'API scintilla d'origine pour ce qu'il est et de ne pas essayer de le contraindre dans une API de style .NET alors qu'elle ne devrait pas ou ne peut pas l'être. Un bon exemple de ceci est la façon dont Scintillanet utilise des indexers pour accéder aux lignes, mais ne pas les traiter comme une collection .NET. Les lignes dans un contrôle scintille ne sont pas des articles dans une collection. Il n'y a pas d'API à ajouter, à insérer ou à supprimer une ligne en scintille et donc nous n'essayons pas d'en créer un dans SCINTILLANET. Ces écarts par rapport à la convention .NET sont rares, mais sont faits pour garder toute documentation de scintille native pertinente pour l'emballage géré et pour éviter les situations où essayer de forcer l'API d'origine à une API plus familière est plus préjudiciable qu'utile.
Remarque: Cela ne veut pas dire que SCINTILLANET ne peut pas ajouter, insérer ou supprimer les lignes. Ces opérations, cependant, sont gérées à mesure que les changements de texte, et non les changements de ligne.
La documentation complète de l'API est incluse avec tous nos packages. De plus, il existe une documentation approfondie au Wiki du projet qui a des recettes pour des tâches et des questions courantes. Si vous êtes nouveau dans ScilLiLlanet, le wiki est un bon endroit pour commencer.
Comme indiqué précédemment dans la Charter du projet, de grands efforts ont été faits pour garder l'API SCINTILLANET sont composés de l'API Native Sciltilla. En tant que tel, la documentation native SCINTILLA continue d'être une ressource précieuse pour apprendre certaines des caractéristiques plus profondes.
D'une manière générale, leur API mappera les nôtres de la manière suivante:
SCI_GETTEXT et SCI_SETTEXT(value) , mappera à une propriété nommée de manière similaire telle que Text .SCI_INDICSETFORE(indicatorNumber, ...) ou SCI_STYLEGETSIZE(styleNumber, ...) , sera accessible via un indexeur tel que Indicators[0].ForeColor ou Styles[0].Size . Le contrôle natif du scintille a l'habitude de serrer les valeurs d'entrée à des gammes acceptables plutôt que de lancer des exceptions et nous avons donc maintenu ce comportement dans Scitillanet. Par exemple, la méthode GotoPosition nécessite un argument position de caractère. Si cette valeur est inférieure à zéro ou au-delà de la fin du document, elle sera fixée à 0 ou à TextLength plutôt que de lancer une OutOfRangeException . Cela a tendance à entraîner moins d'exceptions, mais le même résultat souhaité.
La licence du MIT (MIT)
Copyright (c) 2017, Jacob Slusser, https://github.com/jacobslasser
L'autorisation est accordée gratuitement à toute personne qui obtient une copie de ce logiciel et des fichiers de documentation associés (le "logiciel"), pour traiter le logiciel sans restriction, y compris sans limiter les droits d'utilisation, de copie, de modification, de fusion, de publication, de distribution, de sublince et / ou de vendre des copies des conditions suivantes.
L'avis de droit d'auteur ci-dessus et le présent avis d'autorisation sont inclus dans toutes les copies ou des parties substantielles du logiciel.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les détenteurs de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors du logiciel ou de l'utilisation ou d'autres relations dans le logiciel.