(Сутки почти просидел без Интернета, только-только восстановилась связь, и сразу надо убегать на пару дней "на мороз" - в прямом смысле, работа такая внезапно приключилась.)
Поигрался в консоли с множественными выделениями (каретками), обнаружил неожиданное для себя. Реакция: "Прекрасно! Просто великолепно!" То, какая логика их создания используется сейчас, радикальнейше уменьшает вероятность конфликта моей затеи со сторонними плагинами.
Но заодно обнаружил и кое-что нехорошее (с пользовательской точки зрения):
1. Непостоянство поведения программы.
Ситуация: есть текст, в котором уже расставлено несколько выделений. Создаю ещё одно: нажимаю Ctrl, нажимаю кнопку мышки, двигаю мышку. За мышкой тянется след выделения. И если этот след пересекается с каким-то уже существующим выделением, то, в зависимости от непонятных пользователю обстоятельств, происходит одно из трёх:
а) Задетое существующее выделение сбрасывается. Навсегда. А создание нового продолжается.
б) Два эти выделения объединяются в одно, а процесс захвата новых частей текста прекращается. Хотя мышка с нажатой кнопкой всё ещё двигается, и прямоугольник (тонкая рамка) за ней тянется.
в) Создаваемое выделение сбрасывается. Что происходит при этом с процессом, к сожалению, забыл, а вариант этот очень редкий и сознательно воспроизвести его не получается.
Было бы и лучше, и удобнее, если бы в такой ситуации редактор всегда действовал единообразно, а именно - объединял два пересекшихся выделения. Но делать это, опять-таки, лучше не сразу в момент пересечения, а только когда процесс создания нового выделения завершён (кнопка мышки отпущена). Это даст возможность, если пересечение произошло случайно, увести мышку в сторону и ничего не потерять.
2. Пробовал сымитировать "неконвенционные" действия пользователя.
Ситуация та же: есть текст, в котором уже расставлено несколько выделений. Создаю ещё одно: нажимаю Ctrl, нажимаю кнопку мышки, двигаю мышку. Отпускаю Ctrl и продолжаю двигать мышку с нажатой кнопкой.
Реакция редактора: все имеющиеся выделения сбрасываются, создаётся одного больше выделение от начала самого первого (по тексту файла) выделения до текущего положения мышки, и процесс создания продолжается.
Думаю, что предложенное выше решение (в части отложенной реакции) автоматически устранит и эту проблему.
CudaText: Вопрос о внутренней логике выделения текста
-
- Posts: 392
- Joined: 01.12.2020 13:46
-
- Posts: 392
- Joined: 01.12.2020 13:46
Ответы
2. Поправил, теперь Ctrl отжатие не делает ничего при mouse selection, как и в Субл
1. Сомневаюсь что надо менять- т.к. делалось это как в Сублиме, примерно так же.
А вот это вообще трудно реализовать-
Но делать это, опять-таки, лучше не сразу в момент пересечения, а только когда процесс создания нового выделения завершён (кнопка мышки отпущена).
2. Поправил, теперь Ctrl отжатие не делает ничего при mouse selection, как и в Субл
1. Сомневаюсь что надо менять- т.к. делалось это как в Сублиме, примерно так же.
А вот это вообще трудно реализовать-
Но делать это, опять-таки, лучше не сразу в момент пересечения, а только когда процесс создания нового выделения завершён (кнопка мышки отпущена).
Сегодня на денёк вернулся с мороза домой и продолжил ковыряния.
Поскольку в моей затее ожидаемым "больным местом" являются табуляции, то исследовал нюансы работы с ними и обнаружил нечто похожее на "шероховатость" в алгоритме редактора:
Берём вот такой текст. (Для удобства экспериментов в настройках было вписано "tab_size": 8.)
Дырка в строке 5 - это табуляция.
Становлюсь курсором в кол.6 первой строки и иду (стрелочками клавиатуры) вниз - на последнюю строку.
При переходе на строку 5 курсор перескакивает в кол.4 (начало дырки), а при последующем переходе на строку 6 возвращается в кол.6, в которой и остаётся при последующем опускании на все нижележащие строки.
Когда, дойдя до последней строки, начинаю подниматься на первую - всё происходит точно так же.
А теперь, вернувшись на первую строку, перехожу на одну позицию вправо - на кол. 7 - и опять начинаю опускаться вниз.
При переходе на строку 5 курсор перескакивает в кол.9 (конец дырки), а при последующем переходе на строку 6 возвращается в кол.7 - как и ожидается. Но при переходе ещё на одну строку вниз курсор почему-то перепрыгивает на кол.9 и остаётся там при любых последующих перемещениях вверх и вниз!
Аналогично, если стать курсором в кол.7 последней строки и начать подниматься вверх, то при переходе со строки 5 курсор сначала возвращается с кол.9 на кол.7 (строка 4), а потом прыгает на кол.9 (строка 3).
----------------
И, пользуясь случаем, спрошу: можно ли сделать так, чтобы по "дырке", образуемой табуляцией, можно было ходить курсором, как если бы там была не табуляция, а пробелы?
Поскольку в моей затее ожидаемым "больным местом" являются табуляции, то исследовал нюансы работы с ними и обнаружил нечто похожее на "шероховатость" в алгоритме редактора:
Берём вот такой текст. (Для удобства экспериментов в настройках было вписано "tab_size": 8.)
Code: Select all
sdfgfdhvdfhgfhgjhjdghfhgfjhf
cgbdngbfgdfbfnfnlhm,jmhbj,
sdfgfdhvdfhgfhgjhjdghfhgfjhf
cgbdngbfgdfbfnfnlhm,jmhbj,
srg fgthhgkfgjhg
cgbgcgfjfgyjgjkdfhghh
sdfgfdhvdfhgfhgjhjdghfhgfjhf
cgbdngbfgdfbfnfnlhm,jmhbj,
Становлюсь курсором в кол.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 1012 times
-
- Posts: 392
- Joined: 01.12.2020 13:46
>можно было ходить курсором, как если бы там была не табуляция, а пробелы?
Этого нельзя.
записал issue в ГХ, потом подумаю-- https://github.com/Alexey-T/CudaText/issues/3060
Этого нельзя.
записал issue в ГХ, потом подумаю-- https://github.com/Alexey-T/CudaText/issues/3060
-
- Posts: 392
- Joined: 01.12.2020 13:46