|
Модераторы: Vitalik |
|
Sep. |
|
||||
Шустрый Профиль Группа: Участник Сообщений: 109 Регистрация: 22.7.2004 Репутация: 6 Всего: 6 |
Понимаю что тема немного оффтопного характера, но все таки спрашиваю здесь, потому как здесь знающие люди тусуются.
После разборок с очередным багом кодфолдинга в SinMix я решил все же посмотреть поближе на основного конкурента: Scintilla. Сайт: http://www.scintilla.org/ Русские сборки SciTE с бонусами: http://scite.ruteam.ru Обертка для дельфи: http://delphisci.sourceforge.net/ Есть официальный хелп по параметрам движка, доступ ко всем ним осуществляется в обертке через одноменные методы. Параметров и возможностей действительно ОЧЕНЬ много. Из основных плюсов: * поддержка Unicode напрямую * paint можно делать в два прохода, поэтому например край у буквы V написанной италиком в конце диапазона не будет урезаться. * можно одновременно использовать различные шрифты разных размеров. И даже не моноширинные вместе с моноширинными. * стабильный кодфолдинг =), можно копировать свернутые строки * есть простой способ разделить зону редактирования, без лишнего использования памяти. Один и тот же текст можно будет редактировать в разных местах в двух разных окнах. (Типа как в ворде: Окно->Разделить) * можно подчеркивать определенный участок волнистой линией =) * поддержка dwell'ов (когда мышку задерживаешь над словом, появляется хинт) * раскраска синтаксиса зашита во внешнюю SciLexer.dll Это позволяет очень быстро красить, и не ограничивает сложность правил для раскраски. (Нормально красит heredoc в php и т.д.) Но из этого также вытекают и свои минусы. Минусы: * IndentGuides не рассчитываются, а просто выводятся слева через каждые Tab пробелов * нет 10 закладок, есть 32 типа маркеров по которым можно перемещаться только вперед и назад * поддержка AutoComplete и Calltip рудиментарна(листбокс и хинт) и не идет ни в какое сравнение с AutoCompletitionProposal * Т.к. раскраска синтаксиса зашита в движок, то можно менять только цвета уже определенных стилей (Variable, text, string и т.д.) и набор ключевых слов. При этом можно сохранить в файл только все цвета и ключевые слова для ВСЕХ языков. Для какого либо одного нельзя. Это дает нехилое торможение при старте. Формат для сохраняемого файла пытались сделать совместимым с файлами .properties из SciTE. Но в SciTE есть не один а много файлов .properties для каждого языка и кроме ключевых слов и цветов там также могут быть указаны:
Оценить возможности delphisci можно в примере. sciTest.rar (520кб) В архиве исходники и сама тестовая болванка. Можно открыть файл, поменять лексер, вызвать стандартный диалог настроек обертки. Приложен последний SciLexer.dll v1.70 Поэтому я вижу 2 пути для развития своего проекта: 1. Использовать scintilla * закладки и переход по ним можно легко сделать самому. * портирование AutoCompletitonProposal под delphisci (вроде как решаемая задача, поскольку SearchReplaceDialog там уже портирован из SynEdit'a) * написание дизайнера подсветки, который будет совместим с форматом .properties и не будет уничтожать в них дополнительную информацию и коментарии. Вроде как тоже решаемо. И уже есть пара идей как это можно сделать. Должен сохранять каждый язык в свой файл. Соответсвенно при старте программы можно будет загружать только информацию для нужного языка. * Это также выливается в написание парсера для файлов .properties, т.к. там можно использовать переменные :
* неизвестно насколько хороши правила расцветки зашитые в движок. может когда нибудь меня что то там не устроит, а поменять правило уже возможности нет, только цвета. хотя пока проверял на php ошибок не выявил. 2. НЕ использовать scintilla * помочь/дождаться версии UniHighlighter для UniSynEdit * Виталик говорит что есть еще порох в пороховницах. Для раскраски сложных правил есть возможность добавить: Правила-ссылки, рэгэекспы, возможность токена задавать только закрывающим тегом, улучшение возможностей Set' и KeyWords' (добавление им некоторых свойств диапазона), сам открывающий тег потом еще разбивать на токены. * вновь начинается дебаг и поиск утечек памяти и мелких багов , недоработок что более менее поправлены в SynMix * теряется кодфолдинг. Соответственно можно либо опять портировать вариант из мистикса. (Он был сделан поверх синедита видимо так чтобы как можно меньше затрагивать оригинальный код. Идея такова что свернутая строка вырезается из основного текста и сохраняется в массиве. Массив содержит все места возможного сворачивания и переменные: FromLine, ToLine, Level, RealLevel, LinesCollapsed, ParentCollapsed, Collapsed, CollapsedBy и сам свернутый текст CollapsedLines. То есть система довольно сложна и есть множество багов) Либо реализовать идею кодфолдинга синтиллы. А она там намного проще: есть массив где для каждой строки содержится вычисленное движком число индента - level. А так же для каждой строки есть параметр visible. Вот в принципе и все =) * Есть множество веток и патчей для SynEdit'a но нет определенной политики партии. Как то разрозненно идет продвижение. PS Пока все же склоняюсь в сторону синтиллы. Она регулярно обновляется и разработка поддерживается такими компаниями как activestate.com и т.д. Все же синедит находится в позиции догоняющего, и там реализовываются те фишки что уже есть в синтилле. Мне кажется лучше переносить ACP на хороший движок , чем развивать движок под хороший ACP. Сам нахожусь в глубоких задумках... кому есть что сказать - говорите Это сообщение отредактировал(а) Sep. - 28.7.2006, 18:43 --------------------
Syn - TotalCommander lister plugin | SynTree - coders sourcebook |
||||
|
|||||
Quadr0 |
|
|||
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:48 |
|||
|
||||
navykeds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.3.2006 Репутация: 3 Всего: 3 |
А есть ли там пред. просмотр перед печатью? Открытые исходники на Delphi? Вот-вот.
Сомнительное преимущество. Plain-text редактор не для этого предназначен. По тексту. Сейчас два основных препятствия для использования SynEdit это: — поддержка Юникода. Решается переходом на UniSynEdit и адаптацией под него SynUniHighlighter. — CodeFolding. В SynMix, как мне кажется, не самое удачное решение. То есть, все опять вытекает в создание собственного пакета SynEdit, который уже будет включать и Юникод-версию компонентов и поддержку CodeFolding. А вот после этого, я бы уже не стал утверждать, что SynEdit — догоняющий. P.S: это теория, на практике Quadr0 (сам говорил ) уже занимается адаптацией хайлайтера под UniSynEdit, с CodeFolding могут возникнуть сложности, ибо не особо понятно, кто будет им заниматься. Это сообщение отредактировал(а) navykeds - 28.7.2006, 20:09 |
|||
|
||||
WhiteWind |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 19.7.2006 Репутация: нет Всего: нет |
Насколько я понял, у scintilla нет опции Scroll past EOL, а это для меня главный критерий при выборе редактора.
Также, насколько я понял, я (как пользователь) не смогу создать подсветку для какого-нибудь другого языка. В общем, я против scintilla. |
|||
|
||||
Sep. |
|
||||||||||
Шустрый Профиль Группа: Участник Сообщений: 109 Регистрация: 22.7.2004 Репутация: 6 Всего: 6 |
Что ж, раз оппонентов от стана сцинтиллы не нашлось, тогда я сам немного поддержу ее =)
1. Поговорив с Виталиком появилась идея написать лексер который будет те же HGL файлы читать. Тогда бы UniHighlighter был бы действительно UNI !=) 2. Тебе маркеры не нравятся? Так их наоборот можно настраивать намного шире чем в синедите. Там больше типов иконок, кроме того можно использовать вообще свои иконки для гуттера. А если ты про любимый всеми нами значек [...] =) то уже есть решение и выглядит получше. 3. AutoComplete есть, а AutoCOrrect легко сделать по onKeyDown 4. Можно самому сделать через маркеры. И преимуществом будет то что маркеры там нормально фолдятся. А в синедите закладки не сворачиваются =(.
а что будет когда вы с Виталиком перестанете поддерживать? =)
печать есть, экспорты в htm и т.д. есть. Все равно я например из SynPlus ничего не печатал. Уверенее чуствую себя если сохранить как rtf и печатать из ворда.
по моему там останется еще много чего доделывать. К тому же за это время я в delphisci ACP могу успеть перенести =)
вот именно =( Я кинул ссылку на наш пакет на sf.net странице SynEdit. Может кто присоединится да поможет.
Это да. Автор сказал что не станет этим заниматься. Но он не один там проект ведет. К тому же я сам эту фишку люблю, и заморочился бы даже с С++ ради этого. Еще пара плюсов сцинтиллы: * Есть довольно плавный зум, в довольно больших пределах * Есть еще 2 свободные колонки на гуттере под маркеры. Легко реализовать фишку из BDS2006 где цветом отображается редактировалась ли строка и сохранена ли она. Синедит конечно стабилен. Пока основные баги связаны лишь с кодфолдингом. Трудности с копированием и стиранем свернутых строк если они были в выделении. Undo не распространяется на фолдинг. Потеря свернутых регионов если просто стирать текст вокруг них. GetUncollapsedStrings иногда возвращает nil. Закладки не сворачиваются. --------------------
Syn - TotalCommander lister plugin | SynTree - coders sourcebook |
||||||||||
|
|||||||||||
Seldon |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 114 Регистрация: 23.12.2005 Где: Minsk Репутация: 2 Всего: 2 |
слегка не в тему, но может поможет
гляньте вот это: http://www.delphikingdom.com/zip/mpsyntaxmemo.zip чувак в одиночку (!) написал аналог SynEdit'a с поддержкой кодфолдинга, настраиваемых пожсветок, не-моноширинных шрифтов... конечно не готовое решение, надо обрабатывать напильником, но может пригодится. --------------------
MiBEditor v2.Alpha 10 - Программерский редактор |
|||
|
||||
navykeds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.3.2006 Репутация: 3 Всего: 3 |
Интересно. Автор — молодец. Но для серьезного использования не годится. Да и заброшен уже проект, кажется.
|
|||
|
||||
Sep. |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 109 Регистрация: 22.7.2004 Репутация: 6 Всего: 6 |
Похоже найдена панацея - и уникод есть, и настройка подсветок есть:
http://www.econtrol.ru/syntedit_e.html он используется в phpExpertEditor , с сайта можно скачать демку поглядеть возможности. Пока конкретней не могу сказать, поглядел только демку, но то что увидел очень понравилось. Качаю компонент... =) --------------------
Syn - TotalCommander lister plugin | SynTree - coders sourcebook |
|||
|
||||
Seldon |
|
|||
Шустрый Профиль Группа: Участник Сообщений: 114 Регистрация: 23.12.2005 Где: Minsk Репутация: 2 Всего: 2 |
я вот полазив по сайту не понял: а эта дрянь бесплатная? open source?
--------------------
MiBEditor v2.Alpha 10 - Программерский редактор |
|||
|
||||
Dende-Soft |
|
|||
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 10.3.2007 Репутация: нет Всего: нет |
Не, без бабок пишет на текстовом поле, что версия не зарегистрированная. Что касается Скинтилы. Ну, Во первых SynEdit создан на основе Скинтилы (я думаю у авторов хватит смелости это не отрицать). Однако мне все еще не понятно. Как реализовать подсветку скажем 3-4 нужных мне языков? |
|||
|
||||
navykeds |
|
|||
Новичок Профиль Группа: Участник Сообщений: 36 Регистрация: 16.3.2006 Репутация: 3 Всего: 3 |
Какой фантастический бред. SynEdit has been started as an attempt to continue the no longer maintained sources of the mwEdit project. ... The mwEdit project was started in 1998 by Martin Waldenburg, aim was to produce a syntax highlighting editor component for an Open Source IDE. In the 15 months that mwEdit was developped in public Martin was increasingly dissatisfied with the direction the development of mwEdit took, so he finally requested that his name and initials had to be removed from the project. Старт Scintilla - 1998 г. Старт mwEdit - 1998 г. Не нужно быть смелым, чтобы: 1. Различать языки, на которых написана Scintilla и mwEdit (SynEdit), прежде чем употреблять словосочетание "на основе". 2. Понимать простые вещи и не говорить о том, чего не знаешь. Это сообщение отредактировал(а) navykeds - 5.1.2008, 22:10 |
|||
|
||||
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | SynUniHighlighter и SynEdit | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |