Page 21 of 23

Re: TinyPad 4.0.4

Posted: Tue Jul 07, 2015 8:50 pm
by Pathoswithin
XProger, мне тоже казалось, что текстовый редактор просто устроен. Но это если использовать готовый элемент edit. А внутри его текст парсится в структуры, ради табуляций, ради выделения... Хотя действительно, нафига стирать окончания?

Re: TinyPad 4.0.4

Posted: Sat Jul 11, 2015 3:00 am
by Pathoswithin
Похоже, что Марио не имеет отношения к падениям, но его "фикс" создал другой баг. Изучил TinyPad поглубже... Начал уважать IgorA за то, что он не стал принимать участие в этом безумии. К сожалению, несмотря на все его усилия, с TextEdit работы больше, так что придётся разгребать говно...
Для начала, нужно разобраться что баг, а что фича. Прошу высказать мнения по следующим пунктам:

1. Возможность поставить каретку в любом месте окна.
2. Стрелки вправо/влево не позволяют перейти на другую строку.
3. Превращение всех табуляций в пробелы, превращение пробелов в табуляции только при "оптимальном сохранении".
4. Стирание окончаний, запись CRLF при сохранении.

Posted: Sat Jul 11, 2015 11:28 am
by punk_joker
1. В TinyPad если быть точнее, длина всех строк делается равной длине наиболее длинной строки. И каретку можно поместить только в приделах этой длины (или я что-то не так понял?).
2. Насколько я понимаю, это в некотором роде следствие п.1 Было бы неплохо если бы всеже была возможность перехода с конца строки в начало следующей.
3. Это думаю лучше оставить.
4. Что за стирание окончаний?

Re: TinyPad 4.0.4

Posted: Sat Jul 11, 2015 1:22 pm
by paulcodeman
4. Думаю, что баг, сохраняться должно без единой потери.

Re: TinyPad 4.0.4

Posted: Sat Jul 11, 2015 2:41 pm
by kiv
ИМХО 2 и 4 - баг, как следствие, учитывая слова punk_joker, и 1 тоже баг.

Re: TinyPad 4.0.4

Posted: Sat Jul 11, 2015 8:51 pm
by Pathoswithin
Значит фиксить всё, кроме табуляций? Тогда другой вопрос: кто знает, зачем в конце каждой строки добавляются 10 пробелов?

punk_joker
1. Максимальная ширина редактора = самая длинная строка + 10 пробелов. Но в коротких строках каретку можно ставить там, где нет даже пробела.
2. Не связано.
4. https://ru.wikipedia.org/wiki/Перевод_строки

Posted: Sat Jul 11, 2015 10:02 pm
by punk_joker
1. Про ширину строки писал исключительно из наблюдений за редактором. И у меня он делает строки шириной равной наиболее длинной строки, и ни пробелом больше. Смотрел в r5570
4. Имелось ввиду, что редактор не обрабатывакт данный символ при навигации по документу?

Re: TinyPad 4.0.4

Posted: Sun Jul 12, 2015 7:47 am
by kiv
ИМХО как фича (1) хорош только при реакции исключительно на мышь, но не на клавиатуру и как следствие не как стандартный конструктивный элемент...

punk_joker, там есть разные наборы из 2х символов или 1го (символ CR и символ LF) в зависимости от ОС (доисторическая времен DOS, win или *nix) используется один из трех вариантов: CR, LF, CRLF. видимо, имелось в виду, что элемент выполняющий ф-ции стандартного edit стирает один из этих символов и ставит в конец строки (перед ними) кучу пробелов. вероятно, именно это причина многих багов и способ выделения памяти под символы... даже возможно, что переводы строки заменяются на пустые строки максимальной длинны, а при сохранении все пробельные символы обрезаются и замещаются обратно. в любом случае, это только для моноширных шрифтов, что не есть гуд...

Re: TinyPad 4.0.4

Posted: Mon Jul 13, 2015 2:48 am
by Pathoswithin
punk_joker, имелось ввиду, что TinyPad "немного по-дебильному написан". При открытии файла он копирует содержимое во второй буфер, в начале строк вставляет структуры, превращает табуляции в пробелы, удаляет переводы строк, в конце строк добавляет по 10 пробелов. Половина кода занимается тасованием этого ужаса. В конце процесс обратный. И это вместо того, чтобы просто завести массив структур отдельно. Ширина наиболее длинной строки, таки да, рассчитывается без пробелов в конце.

Вообще, создаётся впечатление, что TinyPad редактировали люди со смутным представлением об ассемлере. Я бы поставил диагноз — рак кода:

Code: Select all

proc key.f3
   call search
   jc   @f
@@:ret
endp
Или вот в самом начале tp-common.asm

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) хорош только при реакции исключительно на мышь
Можно сделать. Можно сделать настройку.

Re: TinyPad 4.0.4

Posted: Mon Jul 13, 2015 2:51 am
by Pathoswithin
Короче, удалил опухоли из key.ctrl_v + пункты 1 и 2 без учёта особенностей. Проверяйте.

Posted: Mon Jul 13, 2015 1:49 pm
by punk_joker
При копмровании многострочного текста, и вставки в нем же, редактор вылетает. Когда открываю example.asm (тот что в корне рамдиска), по окончанию строки курсор проходит 10 пробелов и таки пепеходит на новую строку. В документе созданном в самом TinyPad этого не происходит, но наблюдаются глюки с установкой выделения всей строки, или же одного или всех последующих пробелов.

Posted: Mon Jul 13, 2015 1:52 pm
by punk_joker
В общем поведение редактора теперь не предсказуемое, то вставит, иногда не правильно правда, изменит там пару символов строке, другой раз вылетит сразу.

Re: TinyPad 4.0.4

Posted: Mon Jul 13, 2015 2:16 pm
by kiv
пока, важно чтобы edit-элемент работал нормально и архитектурно правильно, а сколько при этом выкинешь кода и функционала неважно. :D
он в netsurf пригодится при переходе на версию 1 с чем-то и в куче разных мест...

Re: TinyPad 4.0.4

Posted: Mon Jul 13, 2015 6:57 pm
by Pathoswithin
punk_joker, поведение непредсказуемое с самого начала, потому я и спрашивал уловил ли кто-то закономерность? Файл, координаты источника, размер источника, координаты приёмника. У тебя комп нежный, а мне сейчас вообще не удаётся TinyPad уложить.

Редактор не позволяет установить каретку дальше ширины наиболее длинной строки, которая рассчитывается без пробелов в конце.

Posted: Mon Jul 13, 2015 10:16 pm
by punk_joker
Попробуй после запуска, скопировать один символ и вставить в начале любой строки.