TinyPad 4.0.4

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

    1. Возможность поставить каретку в любом месте окна.
    2. Стрелки вправо/влево не позволяют перейти на другую строку.
    3. Превращение всех табуляций в пробелы, превращение пробелов в табуляции только при "оптимальном сохранении".
    4. Стирание окончаний, запись CRLF при сохранении.
  • 1. В TinyPad если быть точнее, длина всех строк делается равной длине наиболее длинной строки. И каретку можно поместить только в приделах этой длины (или я что-то не так понял?).
    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/Перевод_строки
  • 1. Про ширину строки писал исключительно из наблюдений за редактором. И у меня он делает строки шириной равной наиболее длинной строки, и ни пробелом больше. Смотрел в r5570
    4. Имелось ввиду, что редактор не обрабатывакт данный символ при навигации по документу?
    to infinity and beyond
  • ИМХО как фича (1) хорош только при реакции исключительно на мышь, но не на клавиатуру и как следствие не как стандартный конструктивный элемент...

    punk_joker, там есть разные наборы из 2х символов или 1го (символ CR и символ LF) в зависимости от ОС (доисторическая времен DOS, win или *nix) используется один из трех вариантов: CR, LF, CRLF. видимо, имелось в виду, что элемент выполняющий ф-ции стандартного edit стирает один из этих символов и ставит в конец строки (перед ними) кучу пробелов. вероятно, именно это причина многих багов и способ выделения памяти под символы... даже возможно, что переводы строки заменяются на пустые строки максимальной длинны, а при сохранении все пробельные символы обрезаются и замещаются обратно. в любом случае, это только для моноширных шрифтов, что не есть гуд...
  • 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) хорош только при реакции исключительно на мышь
    Можно сделать. Можно сделать настройку.
  • Короче, удалил опухоли из key.ctrl_v + пункты 1 и 2 без учёта особенностей. Проверяйте.
  • При копмровании многострочного текста, и вставки в нем же, редактор вылетает. Когда открываю example.asm (тот что в корне рамдиска), по окончанию строки курсор проходит 10 пробелов и таки пепеходит на новую строку. В документе созданном в самом TinyPad этого не происходит, но наблюдаются глюки с установкой выделения всей строки, или же одного или всех последующих пробелов.
    to infinity and beyond
  • В общем поведение редактора теперь не предсказуемое, то вставит, иногда не правильно правда, изменит там пару символов строке, другой раз вылетит сразу.
    to infinity and beyond
  • пока, важно чтобы edit-элемент работал нормально и архитектурно правильно, а сколько при этом выкинешь кода и функционала неважно. :D
    он в netsurf пригодится при переходе на версию 1 с чем-то и в куче разных мест...
  • punk_joker, поведение непредсказуемое с самого начала, потому я и спрашивал уловил ли кто-то закономерность? Файл, координаты источника, размер источника, координаты приёмника. У тебя комп нежный, а мне сейчас вообще не удаётся TinyPad уложить.

    Редактор не позволяет установить каретку дальше ширины наиболее длинной строки, которая рассчитывается без пробелов в конце.
  • Попробуй после запуска, скопировать один символ и вставить в начале любой строки.
    to infinity and beyond
  • Who is online

    Users browsing this forum: No registered users and 4 guests