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

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

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

Post by HaRT »

Latest post of the previous page:

Пожелание: чтобы при нажатии [b]CtrlAltShiftLeft[/b]/[b]CtrlAltShiftRight[/b] происходило перемещение активной границы блока к соответствующей (влево/вправо) границе слова в текущей строке — аналогично тому, что происходит с поточным выделением по [b]CtrlShiftLeft[/b]/[b]CtrlShiftRight[/b].
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Пожелание понятно, а вот кнопкосочетания не очень. Во-первых, их трудно нажимать (тренировка нужна), а во-вторых при нажатии CtrlAltShift происходит временное переключение редактора на "десктоп".
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Shmuel wrote: Пожелание понятно, а вот кнопкосочетания не очень
Кнопкосочетания образованы строго логически: Left/Right означает направление (в пределах строки), Ctrl означает перемещение по границам слов, Shift означает изменение выделения (расширение/сжатие), Alt означает работу с блочным выделением. Именно такие кнопкосочетания по умолчанию делают именно это, например, в Visual Studio. Убираем любой модификатор — получаем в чём-то аналогичное действие: без Alt — работа с поточным выделением, без Ctrl — раз-/до-выделение по символам, без Shift — просто перемещение.
Shmuel wrote: при нажатии CtrlAltShift происходит временное переключение редактора на "десктоп"
У меня посредством * System.CASRule │integer│2 = 0x2 на гашение окон оставлена только правая тройка, а левая освобождена для кнопкосочетаний. Кстати, часто ли Вы вообще пользуетесь этим гашением? Я — очень редко.
Shmuel wrote: их трудно нажимать (тренировка нужна)
Левые мизинец, большой и безымянный плюс правый мизинец — вроде всё просто и вполне физиологично.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

HaRT wrote: Левые мизинец, большой и безымянный плюс правый мизинец — вроде всё просто и вполне физиологично.
Офтоп, конечно, но для меня это совсем не физиологично. У меня большие и мизинцы в работе с клавиатурой совсем не участвуют. Кстати, я только сейчас этот факт обнаружил.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

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

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

Post by Shmuel »

В шапке новая версия, с незначительными изменениями:
1. FIX - не работал ShiftSpace.
2. Добавлена опция OptUseAltCodes для активизации ввода ALT+<числовой код>. По умолчанию = false, так как текущая реализация этой фичи оставляет желать лучшего. У кого работает и ничему не мешает, исправьте на true.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Shmuel wrote: В шапке новая версия
Add, Subtract, Multiply, Divide, Decimal вводятся только в текущую строку.
Shmuel wrote: Добавлена опция OptUseAltCodes
Если её включить, то в текущей строке набранный символ вводится дважды. В предыдущей версии такого не было.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

HaRT wrote: Add, Subtract, Multiply, Divide, Decimal вводятся только в текущую строку.
Это было и раньше, к новой версии отношения не имеет. Исправлено.
HaRT wrote: Если её включить, то в текущей строке набранный символ вводится дважды. В предыдущей версии такого не было.
Не могу с этим согласиться: ни практически, ни теоретически. Перепроверьте, пожалуйста.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Shmuel wrote: Перепроверьте, пожалуйста.
Перепроверил:
1. Заменил скрипт на свежеисправленный, выставил OptUseAltCodes = true.
2. Переместил все скрипты, кроме этого, в постороннюю директорию.
3. Запустил far /p"%FARHOME%\Plugins\LuaMacro" в отдельном окне, открыл этот же скрипт на редактирование (постоянные блоки ВЫключены).
4. Выделяю вертикальный блок высотой 2 строки, отпускаю Alt, затем ввожу Alt+Num3+Num3.
Вот результаты для разной ширины и разного направления выделения: после пробела обозначено, в какой строке появился лишний ‘!’ (‘_’ означает „вниз“, „нижняя“; остальные очевидны):
Итого: во всех случаях лишний символ появляется, но да, не всегда в текущей строке, а преимущественно в первой.
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

HaRT, во-первых у меня такой аномалии не наблюдается.
Во-вторых, не то, что бы я не верил в ваши эксперименты (я верю), а то, что изменение между двумя последними версиями может вызвать эту аномалию. Потому что новая переменная OptUseAltCodes используется только в одном выражении, и при её значении==true, выражения обеих версий становятся идентичными.
Старая версия: local altchar = not Rec.KeyDown and Rec.VirtualKeyCode==18 and uc~="" and uc~="\0" and uc
Новая версия: local altchar = OptUseAltCodes and not Rec.KeyDown and Rec.VirtualKeyCode==18 and uc~="" and uc~="\0" and uc
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Ещё одно дополнение - добавлена обработка клавиш Num2, Num4, Num6 и Num8.
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Обновлена версия в шапке - в ней все изменения из вчерашних спойлеров, а также добавлена обработка NumDel.
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Shmuel, спасибо за исправления.
Пожелание: чтобы при вводе поверх блока шириной 2 и более каретка не перепрыгивала на первую строку выделения, а оставалась в той, где была (в пределах блока — по условию срабатывания).
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

HaRT, исправьте строку 94 следующим образом:

Code: Select all

-      newY = EI.BlockStartLine
+      newY = EI.CurLine
User avatar
HaRT
Moderator
Posts: 10823
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 221 times
Been thanked: 358 times

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

Post by HaRT »

Shmuel wrote: исправьте строку 94 следующим образом
Спасибо, это помогло.
И любопытное следствие: теперь лишний символ при вводе Alt-код появляется не в первой/последней, а именно в текущей строке. Надеюсь, это поможет угадать природу явления. Может ли быть, что и скрипт вводит символ (в каждую строку), и Фар тоже (в текущую)?
Фар есть инструмент, а не нянька. © 2009 DrKnS
Shmuel
Posts: 6820
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 528 times

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

Post by Shmuel »

Проблема в том, что у меня это явление не воспроизводится.
Эта фича ещё как бы "экспериментальная" (насколько я понял, она вообще не работает у некоторых людей).
Есть мысль реализовать ввод ALT+<code> целиком в этом скрипте, не полагаясь на поле UnicodeChar при отпускании Alt. Но на это нужно некоторое время (которого пока нет), причём без гарантии успеха - это будет видно только в процессе.
Post Reply

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