TinyPad 4.0.4
-
XProger, мне тоже казалось, что текстовый редактор просто устроен. Но это если использовать готовый элемент edit. А внутри его текст парсится в структуры, ради табуляций, ради выделения... Хотя действительно, нафига стирать окончания?
Похоже, что Марио не имеет отношения к падениям, но его "фикс" создал другой баг. Изучил TinyPad поглубже... Начал уважать IgorA за то, что он не стал принимать участие в этом безумии. К сожалению, несмотря на все его усилия, с TextEdit работы больше, так что придётся разгребать говно...
Для начала, нужно разобраться что баг, а что фича. Прошу высказать мнения по следующим пунктам:
1. Возможность поставить каретку в любом месте окна.
2. Стрелки вправо/влево не позволяют перейти на другую строку.
3. Превращение всех табуляций в пробелы, превращение пробелов в табуляции только при "оптимальном сохранении".
4. Стирание окончаний, запись CRLF при сохранении.
Для начала, нужно разобраться что баг, а что фича. Прошу высказать мнения по следующим пунктам:
1. Возможность поставить каретку в любом месте окна.
2. Стрелки вправо/влево не позволяют перейти на другую строку.
3. Превращение всех табуляций в пробелы, превращение пробелов в табуляции только при "оптимальном сохранении".
4. Стирание окончаний, запись CRLF при сохранении.
1. В TinyPad если быть точнее, длина всех строк делается равной длине наиболее длинной строки. И каретку можно поместить только в приделах этой длины (или я что-то не так понял?).
2. Насколько я понимаю, это в некотором роде следствие п.1 Было бы неплохо если бы всеже была возможность перехода с конца строки в начало следующей.
3. Это думаю лучше оставить.
4. Что за стирание окончаний?
2. Насколько я понимаю, это в некотором роде следствие п.1 Было бы неплохо если бы всеже была возможность перехода с конца строки в начало следующей.
3. Это думаю лучше оставить.
4. Что за стирание окончаний?
to infinity and beyond
4. Думаю, что баг, сохраняться должно без единой потери.
Технологии меняют мир, а я - меняю технологии.
ИМХО 2 и 4 - баг, как следствие, учитывая слова punk_joker, и 1 тоже баг.
Значит фиксить всё, кроме табуляций? Тогда другой вопрос: кто знает, зачем в конце каждой строки добавляются 10 пробелов?
punk_joker
1. Максимальная ширина редактора = самая длинная строка + 10 пробелов. Но в коротких строках каретку можно ставить там, где нет даже пробела.
2. Не связано.
4. https://ru.wikipedia.org/wiki/Перевод_строки
punk_joker
1. Максимальная ширина редактора = самая длинная строка + 10 пробелов. Но в коротких строках каретку можно ставить там, где нет даже пробела.
2. Не связано.
4. https://ru.wikipedia.org/wiki/Перевод_строки
1. Про ширину строки писал исключительно из наблюдений за редактором. И у меня он делает строки шириной равной наиболее длинной строки, и ни пробелом больше. Смотрел в r5570
4. Имелось ввиду, что редактор не обрабатывакт данный символ при навигации по документу?
4. Имелось ввиду, что редактор не обрабатывакт данный символ при навигации по документу?
to infinity and beyond
ИМХО как фича (1) хорош только при реакции исключительно на мышь, но не на клавиатуру и как следствие не как стандартный конструктивный элемент...
punk_joker, там есть разные наборы из 2х символов или 1го (символ CR и символ LF) в зависимости от ОС (доисторическая времен DOS, win или *nix) используется один из трех вариантов: CR, LF, CRLF. видимо, имелось в виду, что элемент выполняющий ф-ции стандартного edit стирает один из этих символов и ставит в конец строки (перед ними) кучу пробелов. вероятно, именно это причина многих багов и способ выделения памяти под символы... даже возможно, что переводы строки заменяются на пустые строки максимальной длинны, а при сохранении все пробельные символы обрезаются и замещаются обратно. в любом случае, это только для моноширных шрифтов, что не есть гуд...
punk_joker, там есть разные наборы из 2х символов или 1го (символ CR и символ LF) в зависимости от ОС (доисторическая времен DOS, win или *nix) используется один из трех вариантов: CR, LF, CRLF. видимо, имелось в виду, что элемент выполняющий ф-ции стандартного edit стирает один из этих символов и ставит в конец строки (перед ними) кучу пробелов. вероятно, именно это причина многих багов и способ выделения памяти под символы... даже возможно, что переводы строки заменяются на пустые строки максимальной длинны, а при сохранении все пробельные символы обрезаются и замещаются обратно. в любом случае, это только для моноширных шрифтов, что не есть гуд...
punk_joker, имелось ввиду, что TinyPad "немного по-дебильному написан". При открытии файла он копирует содержимое во второй буфер, в начале строк вставляет структуры, превращает табуляции в пробелы, удаляет переводы строк, в конце строк добавляет по 10 пробелов. Половина кода занимается тасованием этого ужаса. В конце процесс обратный. И это вместо того, чтобы просто завести массив структур отдельно. Ширина наиболее длинной строки, таки да, рассчитывается без пробелов в конце.
Вообще, создаётся впечатление, что TinyPad редактировали люди со смутным представлением об ассемлере. Я бы поставил диагноз — рак кода:
Или вот в самом начале tp-common.asm
Вообще, создаётся впечатление, что TinyPad редактировали люди со смутным представлением об ассемлере. Я бы поставил диагноз — рак кода:
Code: Select all
proc key.f3
call search
jc @f
@@:ret
endp
Code: Select all
proc clear_selection
push eax ebx
mov eax,[cur_editor.SelStart.Y]
mov ebx,[cur_editor.Caret.Y]
cmp eax,ebx
jle @f
xchg eax,ebx
@@:push [cur_editor.Caret.X] [cur_editor.Caret.Y]
pop [cur_editor.SelStart.Y] [cur_editor.SelStart.X]
pop ebx eax
ret
endp
Можно сделать. Можно сделать настройку.kiv wrote:ИМХО как фича (1) хорош только при реакции исключительно на мышь
Короче, удалил опухоли из key.ctrl_v + пункты 1 и 2 без учёта особенностей. Проверяйте.
При копмровании многострочного текста, и вставки в нем же, редактор вылетает. Когда открываю example.asm (тот что в корне рамдиска), по окончанию строки курсор проходит 10 пробелов и таки пепеходит на новую строку. В документе созданном в самом TinyPad этого не происходит, но наблюдаются глюки с установкой выделения всей строки, или же одного или всех последующих пробелов.
to infinity and beyond
В общем поведение редактора теперь не предсказуемое, то вставит, иногда не правильно правда, изменит там пару символов строке, другой раз вылетит сразу.
to infinity and beyond
пока, важно чтобы edit-элемент работал нормально и архитектурно правильно, а сколько при этом выкинешь кода и функционала неважно.
он в netsurf пригодится при переходе на версию 1 с чем-то и в куче разных мест...
он в netsurf пригодится при переходе на версию 1 с чем-то и в куче разных мест...
punk_joker, поведение непредсказуемое с самого начала, потому я и спрашивал уловил ли кто-то закономерность? Файл, координаты источника, размер источника, координаты приёмника. У тебя комп нежный, а мне сейчас вообще не удаётся TinyPad уложить.
Редактор не позволяет установить каретку дальше ширины наиболее длинной строки, которая рассчитывается без пробелов в конце.
Редактор не позволяет установить каретку дальше ширины наиболее длинной строки, которая рассчитывается без пробелов в конце.
Попробуй после запуска, скопировать один символ и вставить в начале любой строки.
to infinity and beyond
Who is online
Users browsing this forum: No registered users and 1 guest