Scintillanet - это управление форм Windows Forms, обертка и привязки для универсального компонента редактирования исходного кода Scintilla.
"Сцинтилия, а также функции, обнаруженные в стандартных компонентах редактирования текста, включают в себя функции, особенно полезные при редактировании и отладке исходного кода. К ним относятся поддержка стиля синтаксиса, индикаторы ошибок, завершение кода и кончики вызова. Запас выбора может содержать маркеры, подобные тем, которые используются в дебютах, чтобы указать точки остановки и текущие выборы. фоновые цвета и несколько шрифтов ". - scintilla.org
Scintillanet также можно использовать с WPF с использованием WindowsFormShost.
Scintillanet находится в активной разработке. Если вы найдете какие -либо проблемы или просто имеете вопрос, не стесняйтесь использовать функцию проблем на нашей странице GitHub.
Скомпилированные версии, готовые к производству, могут быть загружены со страницы Nuget или на странице релизов.
Для последних и лучших вы можете построить главную ветвь из источника, используя Visual Studio 2015.
На Github существует довольно яркое сцинтилянетное сообщество. Мы специально рекомендуем вам посмотреть на следующие проекты:
Дополнительные проекты и пользовательский код отслеживаются на странице рецептов, отправленных пользователем вики.
Этот проект является переписыванием проекта Scintillanet, размещенного в Codeplex и поддерживаемого мной и другими. После многих лет внесения вклад в этот проект я решил по -другому подумать об API, который мы создали, и почувствовал, что смогу сделать его лучше, если бы я хотел вернуться на чистый холст. Таким образом, этот проект является духовным преемником оригинальной Scintillanet, но был написан с нуля.
Одной из проблем, от которой Scintillanet исторически страдал, является тот факт, что нативный контроль скантилии работает на байтах, а не на персонажах. Предыдущие версии Scintillanet не учитывали это, и когда вы имеете дело с Unicode, один байт не всегда равняется одному персонажу. Результатом стал API, который иногда ожидал смещения байтовых, а в другое время ожидаемые смещения персонажа. Иногда все будет работать, как и ожидалось, а в других случаях возникнут случайные сбои и исключения из-за пределов.
Больше не надо. Одним из основных направлений этого переписывания было дать Scintillanet понимание Unicode с нуля. Каждый API теперь последовательно работает с смещениями и диапазонами, основанными на персонажах, как ожидают разработчики .NET. Внутренне мы поддерживаем картирование персонажа в байтовые смещения (и наоборот) и делаем весь перевод для вас, поэтому вам никогда не нужно беспокоиться об этом. Больше нет исключений в пределах дальности. Нет больше путаницы. Больше нет боли. Это просто работает.
Второй по популярности Scintillanet выпуская была путаница, распределяющая Scintillanet DLL и его родной компонент Scilexer DLL. Scintillanet - это обертка. Без scilexer.dll, содержащей основную функциональность скинтилы, это ничто. В качестве собственного компонента Scilexer.dll должен быть скомпилирован отдельно для 32 и 64-битных версий Windows. Так что на самом деле это были три DLL, которые разработчики должны были отправлять со своими приложениями.
Это оказалось сложной точкой, потому что разработчики часто не хотели распространять так много библиотек или хотели разместить их в альтернативных местах, которые нарушали бы механизмы нагрузки DLL, используемые Pinvoke и Scintillanet. Это также вызывает головные боли во время дизайна в Visual Studio по тем же причинам.
Чтобы обратиться к этой Scintillanet теперь внедряет 32 и 64-битную версию Scilexer.dll в Scintillanet DLL. Все, что вам нужно, чтобы запустить Scintillanet в одной библиотеке. В дополнение к успокаиванию боль, упомянутой выше, теперь позволяет нам создать пакет Scintillanet Nuget.
Другая цель переписывания состояла в том, чтобы принять оригинальный API скинтилья за то, что он есть, и не пытаться принудить его в API в стиле .NET, когда он не должен или не может быть. Хорошим примером этого является то, как Scintillanet использует индексеры для доступа к линиям, но не рассматривать их как коллекцию .NET. Линии в управлении сцинллой не являются предметами в коллекции. Не существует API, чтобы добавить, вставить или удалить линию в скинтилу, и поэтому мы не пытаемся создать ее в Scintillanet. Эти отклонения от .NET Convention встречаются редко, но сделаны для того, чтобы сохранить любую собственную сцинтиллу, имеющую отношение к управляемой обертке, и избегать ситуаций, когда попытка заставить первоначальный API в более знакомый, более вреден, чем полезен.
Примечание: это не означает, что Scintillanet не может добавить, вставить или удалять линии. Эти операции, однако, обрабатываются как изменения текста, а не изменения строки.
Полная документация API включена во все наши пакеты. Кроме того, в проекте вики есть обширная документация, которая имеет рецепты для общих задач и вопросов. Если вы новичок в Scintillanet, вики - хорошее место для начала.
Как отмечалось ранее в Charter Project, были предприняты большие усилия, чтобы сохранить Scintillanet API состоят из нативного Scintilla API. Таким образом, нативная документация с скинтилой по -прежнему остается ценным ресурсом для изучения некоторых более глубоких функций.
Вообще говоря, их API будет отображаться с нашим следующим образом:
SCI_GETTEXT и SCI_SETTEXT(value) , будет отображаться с таким же названным свойством, как Text .SCI_INDICSETFORE(indicatorNumber, ...) или SCI_STYLEGETSIZE(styleNumber, ...) , будет доступен через индексатор, такой как Indicators[0].ForeColor или Styles[0].Size . Нативное контроль скинтилы имеет привычку зажимать значения входных введений в пределах приемлемых диапазонов, а не бросить исключения, и поэтому мы сохранили такое поведение в Scintillanet. Например, метод GotoPosition требует аргумента position символа. Если это значение меньше нуля или после окончания документа, оно будет зажат как 0 , либо TextLength , а не бросает OutOfRangeException . Это имеет тенденцию привести к меньшему количеству исключений, но к тому же желаемому результату.
Лицензия MIT (MIT)
Copyright (c) 2017, Джейкоб Слуссер, https://github.com/jacobslusser
Настоящим дается разрешение, бесплатно, любому лицу, получающему копию этого программного обеспечения и связанные с ними файлы документации («Программное обеспечение»), чтобы иметь дело в программном обеспечении без ограничений, включая, без ограничения, права на использование, копирование, изменение, объединение, публикацию, распределение, сублиценность и/или продавать копии программного обеспечения и разрешения лиц, на которые программное обеспечение подходит для того, чтобы поступить так, чтобы поступить на следующие условия: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: к следующим условиям: на следующие условия: к следующим условиям: на следующие условия: на следующие условия.
Вышеуказанное уведомление об авторском праве и это уведомление о разрешении должно быть включено во все копии или существенные части программного обеспечения.
Программное обеспечение предоставляется «как есть», без гарантии любого рода, явного или подразумеваемого, включая, помимо прочего, гарантии товарной пригодности, пригодности для определенной цели и несоответствия. Ни в коем случае авторы или владельцы авторских прав не будут нести ответственность за любые претензии, убытки или другую ответственность, будь то в действии контракта, деликт или иным образом, возникающие из или в связи с программным обеспечением или использованием или другими сделками в программном обеспечении.