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

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

Latest post of the previous page:

Shmuel wrote: из многострочного содержимого использовать первую строку
Не хочется терять возможность заменить выделенное блоком такой же высоты путём вставки поверх.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

HaRT, пробуйте вставку из буфера обмена. (Предупреждаю, что сам тестировал недостаточно, и что могло поломаться и то, что раньше работало).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Уточнение.
User avatar
HaRT
Moderator
Posts: 10806
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 220 times
Been thanked: 357 times

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

Post by HaRT »

Shmuel, спасибо! На первый взгляд, всё хорошо. Если что вылезет, напишу. С наступающим Новым годом!
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Спасибо, взаимно! А также всех участников форума!
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Поскольку замечаний пока нет, версия в шапке обновлена.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

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

Post by siberia-man »

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

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

Если выделяется блок шириной 0 символов, то при переходе на следующую/предыдущую строку выделяется 1-символьный блок под бывшей позицией курсора.
Если выделяется блок шириной 1 символ, то при переходе на следующую/предыдущую строку выделение перескакивает на одну позицию вправо.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

siberia-man wrote: Выбеление блока не удаляется даже после перехода на строку за пределами блока
Да, так и задумано.Можно сделать опцию сброса блока при выходе курсора за его пределы, просто вы пока первый, кому это поведение не нравится.
siberia-man wrote: Если выделяется блок шириной 0 символов, то при переходе на следующую/предыдущую строку выделяется 1-символьный блок под бывшей позицией курсора.
Это для визуализации, чтобы была видна область редактирования.
siberia-man wrote: Если выделяется блок шириной 1 символ, то при переходе на следующую/предыдущую строку выделение перескакивает на одну позицию вправо.
Это смотря в каком направлении вы выделяете.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

siberia-man wrote: Выбеление блока не удаляется даже после перехода на строку за пределами блока (например строка перед или после блока).
Кажется дошло до меня. Просто у меня всё время persistent blocks, поэтому эти эффекты пропускаю. Вроде сейчас поправил, проверьте.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

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

Post by siberia-man »

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

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

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

Во всех трех случаях выделение сохраняется. И его можно непреднамеренно удалить. При этом удаляется вертикальный блок и выделенный блон сохраняется.
siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

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

Post by siberia-man »

Может быть включать скрипт только при выделении блока нулевой ширины, то есть зажал ALT или SHIFT+ALT, сместил курсор UP/DOWN, отжал ALT/SHIFT+ALT и начал редактирование (вставка/удаление текста).
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

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: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

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

Post by siberia-man »

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

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

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

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

Я не вдавался в детали Вашего скрипта и очень слабо представляю механизм работы событий ФАРа. Кстати я только что проверил как работает многострочное редактирование в scite/notepad++/notepad2. В зависимости от редактора клавиши ALT+стрелки/SHIFT+ALT+стрелки включают режим многострочного выделения/редактирования. Затем можно редактировать (изменять, удалять, добавлять) текст в нескольких строках.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

siberia-man wrote: Обычно в редакторах обычное выделение и блочное выделение в scintilla-подобных редакторах сбрасывается сразу.
Можно сделать опцию, подумаю.
siberia-man wrote: Поэтому я и предложил отказаться от подсветки выделенного блока
Пока это останется. В SciTE и других подобных редакторах блок нулевой ширины виден, а в Фаре - нет. Редактировать вслепую не хотелось бы.
siberia-man wrote: В зависимости от редактора клавиши ALT+стрелки/SHIFT+ALT+стрелки включают режим многострочного выделения/редактирования. Затем можно редактировать (изменять, удалять, добавлять) текст в нескольких строках.
А у нас разве не так?
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

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

siberia-man
Posts: 131
Joined: Sat 28 Jun, 2014 23:07
Has thanked: 2 times
Been thanked: 9 times

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

Post by siberia-man »

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

Return to “Полезные макросы и скрипты”