Имитация многострочного редактирования как в 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:

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. Но на это нужно некоторое время (которого пока нет), причём без гарантии успеха - это будет видно только в процессе.
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: у меня это явление не воспроизводится
Я потому и написал „угадать“.
Shmuel wrote: реализовать ввод ALT+<code> целиком в этом скрипте, не полагаясь на поле UnicodeChar при отпускании 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 »

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: что важно, а что не очень
Только что вновь натолкнулся на вот это:
HaRT wrote: * чтобы можно было текст не только набрать, но и вставить из буфера обмена ([b]CtrlV[/b], [b]ShiftIns[/b], [b]ShiftNum0[/b]) — это есть, например, в Microsoft Visual Studio 2013;
Да и другие пожелания тогда высказывались.
Фар есть инструмент, а не нянька. © 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: вставить из буфера обмена
Это не сложно сделать для однострочного содержимого буфера. То, как это сделано для многострочного содержимого в VS 2010, мне не очень нравится.
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: Это не сложно сделать для однострочного содержимого буфера.
Да, интересует в первую очередь для однострочного. Если многострочный, то пусть (пока) Фар сам вставляет, как умеет.
Фар есть инструмент, а не нянька. © 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: Если многострочный, то пусть (пока) Фар сам вставляет, как умеет.
Но есть и другой вариант - из многострочного содержимого использовать первую строку.
Post Reply

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