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

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

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

Post by HaRT » Thu 24 Dec, 2015 13:36

Latest post of the previous page:

Shmuel wrote: В шапке новая версия
[b][i]Add[/i][/b], [b][i]Subtract[/i][/b], [b][i]Multiply[/i][/b], [b][i]Divide[/i][/b], [b][i]Decimal[/i][/b] вводятся только в текущую строку.
Shmuel wrote: Добавлена опция OptUseAltCodes
Если её включить, то в текущей строке набранный символ вводится дважды. В предыдущей версии такого не было.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Thu 24 Dec, 2015 15:09

HaRT wrote: Add, Subtract, Multiply, Divide, Decimal вводятся только в текущую строку.
Это было и раньше, к новой версии отношения не имеет. Исправлено.
HaRT wrote: Если её включить, то в текущей строке набранный символ вводится дважды. В предыдущей версии такого не было.
Не могу с этим согласиться: ни практически, ни теоретически. Перепроверьте, пожалуйста.

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

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

Post by HaRT » Thu 24 Dec, 2015 17:12

Shmuel wrote: Перепроверьте, пожалуйста.
Перепроверил:
1. Заменил скрипт на свежеисправленный, выставил OptUseAltCodes = true.
2. Переместил все скрипты, кроме этого, в постороннюю директорию.
3. Запустил far /p"%FARHOME%\Plugins\LuaMacro" в отдельном окне, открыл этот же скрипт на редактирование (постоянные блоки ВЫключены).
4. Выделяю вертикальный блок высотой 2 строки, отпускаю [b][i]Alt[/i][/b], затем ввожу [b][i]Alt+Num3+Num3[/i][/b].
Вот результаты для разной ширины и разного направления выделения: после пробела обозначено, в какой строке появился лишний ‘!’ (‘_’ означает „вниз“, „нижняя“; остальные очевидны):
Итого: во всех случаях лишний символ появляется, но да, не всегда в текущей строке, а преимущественно в первой.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Thu 24 Dec, 2015 17:29

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: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Thu 24 Dec, 2015 20:23

Ещё одно дополнение - добавлена обработка клавиш Num2, Num4, Num6 и Num8.

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Fri 25 Dec, 2015 10:47

Обновлена версия в шапке - в ней все изменения из вчерашних спойлеров, а также добавлена обработка NumDel.

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

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

Post by HaRT » Mon 28 Dec, 2015 21:09

Shmuel, спасибо за исправления.
Пожелание: чтобы при вводе поверх блока шириной 2 и более каретка не перепрыгивала на первую строку выделения, а оставалась в той, где была (в пределах блока — по условию срабатывания).
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Mon 28 Dec, 2015 21:47

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

Code: Select all

-      newY = EI.BlockStartLine
+      newY = EI.CurLine

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

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

Post by HaRT » Tue 29 Dec, 2015 12:40

Shmuel wrote: исправьте строку 94 следующим образом
Спасибо, это помогло.
И любопытное следствие: теперь лишний символ при вводе Alt-код появляется не в первой/последней, а именно в текущей строке. Надеюсь, это поможет угадать природу явления. Может ли быть, что и скрипт вводит символ (в каждую строку), и Фар тоже (в текущую)?
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Tue 29 Dec, 2015 12:51

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

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

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

Post by HaRT » Tue 29 Dec, 2015 13:26

Shmuel wrote: у меня это явление не воспроизводится
Я потому и написал „угадать“.
Shmuel wrote: реализовать ввод ALT+<code> целиком в этом скрипте, не полагаясь на поле UnicodeChar при отпускании Alt
Лично я о таком не прошу, т.к. не то чтобы часто этим пользуюсь. Наверняка для Вашего времени и энтузиазма найдутся лучшие применения с точки зрения здешнего сообщества.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Tue 29 Dec, 2015 13:51

HaRT wrote: найдутся лучшие применения с точки зрения здешнего сообщества
Трудно определить, что важно, а что не очень. В любом случае, эта фича в скрипте реализована (в какой-то степени) методом тыка, и осознание этого портит настроение. :(

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

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

Post by HaRT » Wed 30 Dec, 2015 17:53

Shmuel wrote: что важно, а что не очень
Только что вновь натолкнулся на вот это:
HaRT wrote: * чтобы можно было текст не только набрать, но и вставить из буфера обмена ([b]CtrlV[/b], [b]ShiftIns[/b], [b]ShiftNum0[/b]) — это есть, например, в Microsoft Visual Studio 2013;
Да и другие пожелания тогда высказывались.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Wed 30 Dec, 2015 18:25

HaRT wrote: вставить из буфера обмена
Это не сложно сделать для однострочного содержимого буфера. То, как это сделано для многострочного содержимого в VS 2010, мне не очень нравится.

User avatar
HaRT
Moderator
Posts: 8048
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:41

Shmuel wrote: Это не сложно сделать для однострочного содержимого буфера.
Да, интересует в первую очередь для однострочного. Если многострочный, то пусть (пока) Фар сам вставляет, как умеет.
Фар есть инструмент, а не нянька. © 2009 DrKnS

Shmuel
Posts: 5154
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 14 times
Been thanked: 144 times

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

Post by Shmuel » Wed 30 Dec, 2015 18:47

HaRT wrote: Если многострочный, то пусть (пока) Фар сам вставляет, как умеет.
Но есть и другой вариант - из многострочного содержимого использовать первую строку.

User avatar
HaRT
Moderator
Posts: 8048
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

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

Post Reply

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