CudaText: Вопрос о внутренней логике выделения текста

tiun
Posts: 16
Joined: 10.01.2021 19:35

Post by tiun »

(Сутки почти просидел без Интернета, только-только восстановилась связь, и сразу надо убегать на пару дней "на мороз" - в прямом смысле, работа такая внезапно приключилась.)

Поигрался в консоли с множественными выделениями (каретками), обнаружил неожиданное для себя. Реакция: "Прекрасно! Просто великолепно!" То, какая логика их создания используется сейчас, радикальнейше уменьшает вероятность конфликта моей затеи со сторонними плагинами.
Но заодно обнаружил и кое-что нехорошее (с пользовательской точки зрения):

1. Непостоянство поведения программы.

Ситуация: есть текст, в котором уже расставлено несколько выделений. Создаю ещё одно: нажимаю Ctrl, нажимаю кнопку мышки, двигаю мышку. За мышкой тянется след выделения. И если этот след пересекается с каким-то уже существующим выделением, то, в зависимости от непонятных пользователю обстоятельств, происходит одно из трёх:
а) Задетое существующее выделение сбрасывается. Навсегда. А создание нового продолжается.
б) Два эти выделения объединяются в одно, а процесс захвата новых частей текста прекращается. Хотя мышка с нажатой кнопкой всё ещё двигается, и прямоугольник (тонкая рамка) за ней тянется.
в) Создаваемое выделение сбрасывается. Что происходит при этом с процессом, к сожалению, забыл, а вариант этот очень редкий и сознательно воспроизвести его не получается.

Было бы и лучше, и удобнее, если бы в такой ситуации редактор всегда действовал единообразно, а именно - объединял два пересекшихся выделения. Но делать это, опять-таки, лучше не сразу в момент пересечения, а только когда процесс создания нового выделения завершён (кнопка мышки отпущена). Это даст возможность, если пересечение произошло случайно, увести мышку в сторону и ничего не потерять.

2. Пробовал сымитировать "неконвенционные" действия пользователя.

Ситуация та же: есть текст, в котором уже расставлено несколько выделений. Создаю ещё одно: нажимаю Ctrl, нажимаю кнопку мышки, двигаю мышку. Отпускаю Ctrl и продолжаю двигать мышку с нажатой кнопкой.
Реакция редактора: все имеющиеся выделения сбрасываются, создаётся одного больше выделение от начала самого первого (по тексту файла) выделения до текущего положения мышки, и процесс создания продолжается.

Думаю, что предложенное выше решение (в части отложенной реакции) автоматически устранит и эту проблему.
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

Запостил эти моменты в Github issues. спасибо, буду смотреть.
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

Ответы
2. Поправил, теперь Ctrl отжатие не делает ничего при mouse selection, как и в Субл
1. Сомневаюсь что надо менять- т.к. делалось это как в Сублиме, примерно так же.

А вот это вообще трудно реализовать-
Но делать это, опять-таки, лучше не сразу в момент пересечения, а только когда процесс создания нового выделения завершён (кнопка мышки отпущена).
tiun
Posts: 16
Joined: 10.01.2021 19:35

Post by tiun »

Сегодня на денёк вернулся с мороза домой и продолжил ковыряния.
Поскольку в моей затее ожидаемым "больным местом" являются табуляции, то исследовал нюансы работы с ними и обнаружил нечто похожее на "шероховатость" в алгоритме редактора:

Берём вот такой текст. (Для удобства экспериментов в настройках было вписано "tab_size": 8.)

Code: Select all

sdfgfdhvdfhgfhgjhjdghfhgfjhf
cgbdngbfgdfbfnfnlhm,jmhbj,
sdfgfdhvdfhgfhgjhjdghfhgfjhf
cgbdngbfgdfbfnfnlhm,jmhbj,
srg	fgthhgkfgjhg
cgbgcgfjfgyjgjkdfhghh
sdfgfdhvdfhgfhgjhjdghfhgfjhf
cgbdngbfgdfbfnfnlhm,jmhbj,
Дырка в строке 5 - это табуляция.
Становлюсь курсором в кол.6 первой строки и иду (стрелочками клавиатуры) вниз - на последнюю строку.
При переходе на строку 5 курсор перескакивает в кол.4 (начало дырки), а при последующем переходе на строку 6 возвращается в кол.6, в которой и остаётся при последующем опускании на все нижележащие строки.
Когда, дойдя до последней строки, начинаю подниматься на первую - всё происходит точно так же.

А теперь, вернувшись на первую строку, перехожу на одну позицию вправо - на кол. 7 - и опять начинаю опускаться вниз.
При переходе на строку 5 курсор перескакивает в кол.9 (конец дырки), а при последующем переходе на строку 6 возвращается в кол.7 - как и ожидается. Но при переходе ещё на одну строку вниз курсор почему-то перепрыгивает на кол.9 и остаётся там при любых последующих перемещениях вверх и вниз!

Аналогично, если стать курсором в кол.7 последней строки и начать подниматься вверх, то при переходе со строки 5 курсор сначала возвращается с кол.9 на кол.7 (строка 4), а потом прыгает на кол.9 (строка 3).

----------------
И, пользуясь случаем, спрошу: можно ли сделать так, чтобы по "дырке", образуемой табуляцией, можно было ходить курсором, как если бы там была не табуляция, а пробелы?
Attachments
Снимок текста примера
Снимок текста примера
Tab.png (2.36 KiB) Viewed 1003 times
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

>можно было ходить курсором, как если бы там была не табуляция, а пробелы?
Этого нельзя.
записал issue в ГХ, потом подумаю-- https://github.com/Alexey-T/CudaText/issues/3060
uvviewsoft
Posts: 392
Joined: 01.12.2020 13:46

Post by uvviewsoft »

>Но при переходе ещё на одну строку вниз курсор почему-то перепрыгивает на кол.9 и остаётся там при любых последующих

fixed in Cud 1.128.
Post Reply