Имитация многострочного редактирования как в SciTE

Здесь обсуждается всё, что касается макросов.
User avatar
HaRT
Moderator
Posts: 8074
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Имитация многострочного редактирования как в SciTE

Post by HaRT » Wed 30 Dec, 2015 18:51

Latest post of the previous page:

Shmuel wrote: из многострочного содержимого использовать первую строку
Не хочется терять возможность заменить выделенное блоком такой же высоты путём вставки поверх.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Wed 30 Dec, 2015 21:52

HaRT, пробуйте вставку из буфера обмена. (Предупреждаю, что сам тестировал недостаточно, и что могло поломаться и то, что раньше работало).

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Thu 31 Dec, 2015 08:36

Уточнение.

User avatar
HaRT
Moderator
Posts: 8074
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 67 times
Been thanked: 100 times

Имитация многострочного редактирования как в SciTE

Post by HaRT » Thu 31 Dec, 2015 14:14

Shmuel, спасибо! На первый взгляд, всё хорошо. Если что вылезет, напишу. С наступающим Новым годом!
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Thu 31 Dec, 2015 16:41

Спасибо, взаимно! А также всех участников форума!

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Sat 09 Jan, 2016 11:46

Поскольку замечаний пока нет, версия в шапке обновлена.

siberia-man
Posts: 69
Joined: Sat 28 Jun, 2014 23:07
Been thanked: 1 time

Имитация многострочного редактирования как в SciTE

Post by siberia-man » Sat 09 Jan, 2016 12:48

Выбеление блока не удаляется даже после перехода на строку за пределами блока (например строка перед или после блока).

1. выделить блок ширины 0 или 1
2. что-то напечатать
3. перейти на одну строку (вверх или вниз от выделенного блока)
4. блок по прежнему выделен (можно удалить)

Если выделяется блок шириной 0 символов, то при переходе на следующую/предыдущую строку выделяется 1-символьный блок под бывшей позицией курсора.
Если выделяется блок шириной 1 символ, то при переходе на следующую/предыдущую строку выделение перескакивает на одну позицию вправо.

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Sat 09 Jan, 2016 12:55

siberia-man wrote: Выбеление блока не удаляется даже после перехода на строку за пределами блока
Да, так и задумано.Можно сделать опцию сброса блока при выходе курсора за его пределы, просто вы пока первый, кому это поведение не нравится.
siberia-man wrote: Если выделяется блок шириной 0 символов, то при переходе на следующую/предыдущую строку выделяется 1-символьный блок под бывшей позицией курсора.
Это для визуализации, чтобы была видна область редактирования.
siberia-man wrote: Если выделяется блок шириной 1 символ, то при переходе на следующую/предыдущую строку выделение перескакивает на одну позицию вправо.
Это смотря в каком направлении вы выделяете.

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Sat 09 Jan, 2016 14:18

siberia-man wrote: Выбеление блока не удаляется даже после перехода на строку за пределами блока (например строка перед или после блока).
Кажется дошло до меня. Просто у меня всё время persistent blocks, поэтому эти эффекты пропускаю. Вроде сейчас поправил, проверьте.

siberia-man
Posts: 69
Joined: Sat 28 Jun, 2014 23:07
Been thanked: 1 time

Имитация многострочного редактирования как в SciTE

Post by siberia-man » Sat 09 Jan, 2016 14:57

Да. Так лучше : ). Просто в одной из предыдущих версий скрипта такого не было. И - да, у меня постоянные блоки выключены.

Однако, выделение блока сохраняется, если перейти внутрь блока (переместить курсор в пределах строк, содержащих блок). Может быть вообще сбросить выделение блока при любом движении курсора? Потому что поведение скрипта неоднозначно можно интерпретировать. Например,

1. выделить блок нулевой ширины и переместить курсор в пределах строк над/под курсором поялвяется выделений блок шириной в один символ.
2. выделить блок шириной в один символ сместив курсор вправо (выделение слева от курсора) и переместить курсор - выделение "перепрыгивает" направо к курсору.
3. выделить блок шириной в один символ сместив курсор влево (выделение в позиции курсора).

Во всех трех случаях выделение сохраняется. И его можно непреднамеренно удалить. При этом удаляется вертикальный блок и выделенный блон сохраняется.

siberia-man
Posts: 69
Joined: Sat 28 Jun, 2014 23:07
Been thanked: 1 time

Имитация многострочного редактирования как в SciTE

Post by siberia-man » Sat 09 Jan, 2016 15:07

Может быть включать скрипт только при выделении блока нулевой ширины, то есть зажал ALT или SHIFT+ALT, сместил курсор UP/DOWN, отжал ALT/SHIFT+ALT и начал редактирование (вставка/удаление текста).

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Sat 09 Jan, 2016 16:02

siberia-man wrote: Может быть вообще сбросить выделение блока при любом движении курсора
Это сделать легко, но это же будет дикое неудобство при редактировании.
siberia-man wrote: выделение "перепрыгивает" направо к курсору.
Во время операции выделения скрипт ещё не работает. Когда вы двигаете курсор вправо, получается прыжок длиной в 2 символа - да, некрасиво, но что тут можно поделать? Перехватывать у Фара ещё и операцию выделения и реализовывать самому как-то влом.
siberia-man wrote: Во всех трех случаях выделение сохраняется. И его можно непреднамеренно удалить.
Непреднамеренно, это как? Выделение шириной в 1 нужно для визуализации, пока ничего лучше не придумал. Нажатие Del или BS являются легитимными, они обрабатываются скриптом. Что здесь может быть непреднамеренно?
siberia-man wrote: Может быть включать скрипт только при выделении блока нулевой ширины, то есть зажал ALT или SHIFT+ALT, сместил курсор UP/DOWN, отжал ALT/SHIFT+ALT и начал редактирование (вставка/удаление текста).
Для чего, что это нам даст?

siberia-man
Posts: 69
Joined: Sat 28 Jun, 2014 23:07
Been thanked: 1 time

Имитация многострочного редактирования как в SciTE

Post by siberia-man » Sat 09 Jan, 2016 16:54

Отвечаю по-абзацно.

Обычно в редакторах обычное выделение и блочное выделение в scintilla-подобных редакторах сбрасывается сразу. Хотя в них, в большинстве, используются непостоянные выделения. Видимо здесь разный взгляд на проблему - у Вас включены постоянные блоки, либо Вы пытаетесь охватить все варианты; я же не использую постоянные блоки вообще.

Не стоит перехватывать у ФАРа и дублировать его функции - это чревато непредсказуемым поведением. Поэтому я и предложил отказаться от подсветки выделенного блока и сразу сбрасывать выделение блока после движения курсора.

Например, я выделил блок, что-то вставил и сместил курсор к позиции где мне надо что-то удалить: будет удален выделенный блок.

Я не вдавался в детали Вашего скрипта и очень слабо представляю механизм работы событий ФАРа. Кстати я только что проверил как работает многострочное редактирование в scite/notepad++/notepad2. В зависимости от редактора клавиши ALT+стрелки/SHIFT+ALT+стрелки включают режим многострочного выделения/редактирования. Затем можно редактировать (изменять, удалять, добавлять) текст в нескольких строках.

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Sat 09 Jan, 2016 17:04

siberia-man wrote: Обычно в редакторах обычное выделение и блочное выделение в scintilla-подобных редакторах сбрасывается сразу.
Можно сделать опцию, подумаю.
siberia-man wrote: Поэтому я и предложил отказаться от подсветки выделенного блока
Пока это останется. В SciTE и других подобных редакторах блок нулевой ширины виден, а в Фаре - нет. Редактировать вслепую не хотелось бы.
siberia-man wrote: В зависимости от редактора клавиши ALT+стрелки/SHIFT+ALT+стрелки включают режим многострочного выделения/редактирования. Затем можно редактировать (изменять, удалять, добавлять) текст в нескольких строках.
А у нас разве не так?

Shmuel
Posts: 5201
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 16 times
Been thanked: 148 times

Имитация многострочного редактирования как в SciTE

Post by Shmuel » Sat 09 Jan, 2016 17:28

Shmuel wrote: Можно сделать опцию, подумаю.
Сделал, можно проверять. Опция работает только при непостоянных блоках.


siberia-man
Posts: 69
Joined: Sat 28 Jun, 2014 23:07
Been thanked: 1 time

Имитация многострочного редактирования как в SciTE

Post by siberia-man » Sat 09 Jan, 2016 19:06

Спасибо. Пока нареканий нет.

User avatar
Wave
Posts: 1716
Joined: Thu 04 Aug, 2005 18:47
Location: Харьков, Украина
Has thanked: 2 times
Been thanked: 9 times
Contact:

Имитация многострочного редактирования как в SciTE

Post by Wave » Sat 09 Jan, 2016 20:04

Shmuel wrote:Кажется дошло до меня. Просто у меня всё время persistent blocks, поэтому эти эффекты пропускаю. Вроде сейчас поправил, проверьте.
Если что, в моих условиях с выключенными persistent blocks скрипт всё так же не работает. Это так, для справки, потому что привык опять с ними жить.
Пользуюсь ФАРом больше 15 лет © собирательный.

Post Reply

Return to “Обсуждение макросов”