Еще один текстовый редактор

...
  • Сделано (rev9197).
    Выделенный текст должен быть однострочный и без символов табуляции.
  • Здравствуйте, ваш редактор безусловно на данный момент лучший в КОС, однако мне немного не понятно почему бинарник такой огромный. Он больше Eolite, и Webview. Нельзя никак сократить размер?
    Изобретайте колёса каждый раз, когда хотите написать новую программу.
  • Не такой уж он и огромный. Редактор TextEdit, который теперь перенесен в ISO, занимал в образе вместе со всеми своими файлами лишь на пару килобайт меньше.

    Можно уменьшить размер сжатого бинарника на ~17%, если скомпилировать с параметром "-nochk a" (отключить рантайм проверки). Позже, я так и сделаю, просто пока я не совсем уверен в надежности работы программы. По умолчанию, компилятор oberon-07 вставляет отладочный машинный код (проверка указателей, индексов массивов и т. д.). Если при выполнении программы произойдет разыменование нулевого указателя или нарушение границ массива, то программа выведет на доску отладки сообщение о месте и типе ошибки после чего будет остановлена. Это сильно помогает при разработке, особенно для Колибри, где чтение/запись по нулевому адресу допустимы.

    Вот сравнение размеров сжатых и несжатых бинарников для "больших" программ на c-- (webview, eolite) и oberon-07 (fb2read, cedit):

    Code: Select all

               сжатый   не сжатый   %
    webview    21720     83862     25.9
    eolite     31002    132800     23.3
    fb2read*   24711     73820     33.5
    cedit      35152    116796     30.1
    cedit*     29858     90172     33.1
    
    *  без рантайм проверок
    
    Как видно, машинный код, который генерит компилятор Оберона заметно хуже сжимается (хотя несжатый код довольно компактный). Возможно, код отличается бОльшим разнообразием, компилятор может выдать разный машинный код для одинаковых выражений в зависимости от контекста. При разработке компилятора, я стремился сделать так, чтобы компилятор производил как можно меньший по размеру код без ущерба для эффективности. Разумеется, я рассматривал только несжатый код. Для минимизации размера сжатого бинарника, вероятно, надо генерить больше одинаковых фрагментов кода пусть и бОльшего размера.
  • На самом деле это не критично. Спасибо что ответили на вопрос.
    Изобретайте колёса каждый раз, когда хотите написать новую программу.
  • Можно в редакторе внутри включить компиляторы для всех работающих языков чтобы процесс компиляции исходных текстов занимал меньше времени не прибегая к поиске отдельных компиляторов. Можно это применить?
  • denius
    Сейчас, чтобы скомпилировать или запустить программу из редактора, нужно написать скрипт, сохранить его и выбрать файл скрипта в меню "program". Если пишется большая программа, то трудозатраты на написание скрипта несопоставимы с таковыми на написание программы. Но это, конечно, неудобно, когда пишется маленькая тестовая программа. Но каким образом я могу это автоматизировать? Для того, чтобы скомпилировать программу, редактор должен знать на каком языке она написана, тогда будет понятно, какой компилятор использовать. В редакторе могут быть открыты несколько файлов на разных языках программирования, и какой из них относится к программе, знает только пользователь. Также, необходимо знать, какой из файлов программы является главным, т. е. с какого начинается компиляция. А кроме того, надо указать еще и имя выходного файла (но здесь проще -- по умолчанию, можно записывать результат в /tmp0/1). А еще есть параметры компилятора, которые тоже надо где-то указывать.
    В IDE все эти данные могут быть записаны в специальный файл проекта (при создании нового проекта или при редактировании свойств текущего). Но у меня не IDE, а просто текстовый редактор.
    Впрочем, если будут конкретные предложения что и как надо сделать для повышения удобства работы, то я их, конечно, рассмотрю.
  • Как и обещал, я исправил ВСЕ скины, так что теперь проблем с light и dark цветами быть не должно.
    Если будут, пишите.
    Из хаоса в космос
  • Горизонтальный скролл не работает.
    Из хаоса в космос
  • Leency wrote:Горизонтальный скролл не работает.
    Я такого не замечал, у меня всё работает. Может быть, нужны какие-то особые условия для воспроизведения бага. В общем, если замечу, то исправлю, а пока я ничего не вижу.
  • akron1 wrote:
    Leency wrote:Горизонтальный скролл не работает.
    Я такого не замечал, у меня всё работает. Может быть, нужны какие-то особые условия для воспроизведения бага. В общем, если замечу, то исправлю, а пока я ничего не вижу.
    Не работал в эмуле. Видно ошибка эмулирования. Сори.
    Из хаоса в космос
  • Можно ещё пожалуйста добавить хоткей CTRL+H? Делает то же самое что CTRL+F.
    (в других редакторах +F это поиск, а +H это замена).

    Изменение кодировки не делает доступным сохранение (т.е. не является "шагом"), нужно нажать например Пробел чтобы можно было сохранить документ.

    Также Encoding определяет кодировку сохранения, но нет функции преобразования текущей кодировки.
    В notepad++ это сделано так.
    Attachments
    Screenshot_1.png
    Screenshot_1.png (12.06 KiB)
    Viewed 4119 times
    Из хаоса в космос
  • Aх да, ещё хотелось бы:
    Chrl+влево или вправо переход к началу/концу слова.
    Хотелось бы Tab в строке поиска для перехода к следующему текстовому полю.
    Из хаоса в космос
  • Leency wrote:Можно ещё пожалуйста добавить хоткей CTRL+H? Делает то же самое что CTRL+F.
    (в других редакторах +F это поиск, а +H это замена).
    Сделано.
    Leency wrote: Изменение кодировки не делает доступным сохранение (т.е. не является "шагом"), нужно нажать например Пробел чтобы можно было сохранить документ.
    Теперь, изменение кодировки считается изменением текста и файл можно сразу же сохранить, а можно и отменить изменение кодировки.
    Leency wrote: Также Encoding определяет кодировку сохранения, но нет функции преобразования текущей кодировки.
    Это имеет смысл только в случае неправильного автоопределения кодировки. В нормальных текстах это практически исключено. Изменение текущей кодировки при такой структуре данных сделать сложно, а пользы от этого мало. Пока я это не планирую.
    Leency wrote:Chrl+влево или вправо переход к началу/концу слова.
    Пока сделано в таком виде: Ctrl+left/right -- переход к началу предыдущего/следующего слова. Словом считается последовательность символов {'A'..'Z', 'a'..'z', '0'..'9', '_'}. В дальнейшем, это можно усовершенствовать.
    Leency wrote:Хотелось бы Tab в строке поиска для перехода к следующему текстовому полю.
    Сделано. Хотя, чекбоксы и кнопки всё равно придется нажимать мышью.
    Last edited by akron1 on Fri Nov 26, 2021 10:31 pm, edited 1 time in total.
  • Ctrl+Влево/Вправо не работает с кириллицей (я когда-то репортил, по помню повод был другой, тут это странно).

    Ctrl+Влево работает корректно
    Ctrl+Вправо нет, перескакивает за пробел. Пример:

    Code: Select all

    Steps to reproduce:
    1. |Hello world
    2. [Ctrl+Right]
    Actual result: Hello |world
    Expected result: Hello| world
    
    Из хаоса в космос
  • Who is online

    Users browsing this forum: No registered users and 7 guests