Здравствуйте, <Аноним>, Вы писали:
А>У меня парочка мыслей появилась после прочтения статьи и беглово знакомства с исходниками:
А>1. Зачем делать word wrap для строк которые не видны на экране? Лишняя работа.
Чтобы сделать точный скролинг и точное отображение позиции в документе.
А>2. Для адресации позиции в тексте достаточно знать смещение символа от начала текста, а уж строку которой принадлежит символ и смещение в строке можно расчитать.
И каждый раз бегать по тексту рассчитывая строку? А смысл? Тормоза от этого конечно увеличатся, а вот бенефиты...
А> Тогда можно было бы обойтись без Position<View> и Position<Document>. Понятно, что если использовать, грубо говоря, string[] в качестве хранилища текста, то вариант с адресацией символов по номеру строки и смещению выглядит естественно. IMHO простота string[] обманчива. Упретесь рано или поздно в масштабируемость.
Как-то проблем с масштабируемостью я пока не видел. Как и ее необходимости. Поясни, плиз, о чем речь.
А>3. IMHO не получилось полностью отделить документ от вида. Зачем в Document-е ссылки на IView и Formatter? IMHO разумно в классе Document держать только код для доступа к тексту, его изменеию (insert/erase) и undo/redo. Модификация документа IMHO никак не связана с тем как он отформатирован.
Возможно. Надо будет подумать на этот счет.
ЗЫ
Чесно говоря сейчас волнуют несколько другие вещи. Есть несклько просчетов и несколько недоделок.
1. Так плохой идеей было использовать дотнетный Font. Это не позволяет менять в стилях отдельные атрибуты шрифта. Например, чтобы сделать жирным ключевые слова. Это же не дает реализовать простое масштабирование шрифтов. Мне очень нравится как в Сцинтиле или ИЕ можно менять размер ширфтов просто покрутив колесико мыши удерживая при этом Ctrl.
2. Надо сделать сменяемый парсер для языков. Для этого нужно как-то создать генератор лексеров по удобной граматике.
3. Для реализации п. 2 не плохо было бы реарганизовать Formatter. Выделить из него парсер и т.п. Возможно твой п. 3 можно как раз объеденить с этим пунктом.
В любом случае, спасибо за конструктивные комментарии.

... << RSDN@Home 1.2.0 alpha rev. 631>>