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

Здесь выкладываются готовые к использованию макросы и скрипты.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Latest post of the previous page:

Wave
Макрос из поставки именно так и работает. Но в макросе есть 3 опции для установки пользователем. Вы должны установить
local OptCursorMoveResetsBlock = false.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

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

Post by Wave »

Shmuel wrote:Wave
Макрос из поставки именно так и работает. Но в макросе есть 3 опции для установки пользователем. Вы должны установить
local OptCursorMoveResetsBlock = false.
Так…
Нашёл двух виновников глюков. Набор макросов turbo и плагин [esc]. С набором макросов выделение не держится, сбрасывается от любого чиха вне зависимости от опции OptCursorMoveResetsBlock (кстати, не перечитывая тему с начала, напрочь не могу представить, почему эта опция по умолчанию true). Плагин отвечает за глюки вида «в одной строке замена символа, в остальных удаление». Не знаю, возможно, можно настроить плагин на совместное существование, но вот тут уж точно мне лень искать, в чём засада. От turbo я бы и отказался, но не от [esc].

Разница между включенными постоянными блоками и выключенными блоками и опцией — при выключенных блоках клавиши home и end сбрасывают выделение (хотя, возможно, это тоже из-за плагинов-макросов типа smart home).
Пользуюсь ФАРом больше 20 лет © собирательный.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Wave
Про Turbo и его влияние на данный скрипт уже обсуждалось выше по теме, повторяться не буду.
Насчёт Esc ничего не скажу, т.к. не пользуюсь.
Что касается опции OptCursorMoveResetsBlock - она влияет только при отключенных постоянных блоках (у меня они всегда включены). Это было (кажется) пожелание HaRT, и я сделал вывод, что такое умолчательное значение предпочтительно для пользователей с отключенными постоянными блоками.
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 »

Wave wrote: Нашёл двух виновников глюков. Набор макросов turbo и плагин [esc]. С набором макросов выделение не держится, сбрасывается от любого чиха вне зависимости от опции OptCursorMoveResetsBlock
Я как раз вчера для себя эту проблему решил.
Фар есть инструмент, а не нянька. © 2009 DrKnS
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

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

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

Post by Shmuel »

ccaid wrote: Mon 14 Jan, 2019 22:05 у меня используется макрос, который подменяет Left на CtrlS
Вы, наверное, хотели сказать, что подменяет CtrlS на Left?
ccaid wrote: Mon 14 Jan, 2019 22:05 имеет смысл обрабатывать CtrlS
Честно говоря, не уверен в этом. У меня, например, на CtrlS висит макрос, сохраняющий изменения, т.е. вызывающий F2, а на F2 висит вызов пользовательского меню. Но дело не в этом, а в том, что у данного скрипта нет возможности учесть макросную замену клавиш навигации (у вас это CtrlS->Left, а у кого-то другого может быть CtrlD->Right и т.д. и т.п.)

P.S.
Сейчас записал клавиатурный макрос, вызывающий Keys("Left") при нажатии CtrlS. И вроде всё нормально, сабжевый скрипт одинаково обрабатывает Left и CtrlS.
Last edited by Shmuel on Mon 14 Jan, 2019 22:54, edited 1 time in total.
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 wrote: Mon 14 Jan, 2019 22:37 Но может быть я вас не понял?
Я тоже не вполне понял, что имелось в виду, но хотел бы заострить внимание, что в редакторе без макросов между Left и CtrlS есть одно полезное различие: Left переходит через начало строки (в конец предыдущей), а CtrlS нет. Я это использую для упрощения своих макросов перемещения/выделения, которые не вылезают за пределы строки (они у меня назначены на стрелки цифровой клавиатуры). Но на проблемы с этим в многострочным редактировании я не натыкался.
Фар есть инструмент, а не нянька. © 2009 DrKnS
ccaid
Posts: 908
Joined: Fri 12 Jun, 2009 16:04
Has thanked: 24 times
Been thanked: 6 times

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

Post by ccaid »

Shmuel wrote: Mon 14 Jan, 2019 22:37 Вы, наверное, хотели сказать, что подменяет CtrlS на Left?
нет.
я нажимаю Left, нажатие превращается в CtrlS, перемещение курсора не переходит на конец предыдущей строки, профит.
Shmuel wrote: Mon 14 Jan, 2019 22:37 нет возможности учесть макросную замену клавиш навигации
эффект имеется без какой-либо макросной замены — если нажимать штатную комбинацию редактора CtrlS.
Last edited by ccaid on Tue 15 Jan, 2019 05:37, edited 1 time in total.
Фар делают добрые люди
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

ccaid, теперь понятно, это у меня пробел в матчасти по поводу CtrlS в редакторе, я не знал, что это штатная команда.
Постараюсь сегодня выложить новую версию (когда будет готова, естественно).
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
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

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

Post by John Doe »

При отключенной опции OptCursorMoveResetsBlock Left/Right двигают блок.
Заметил в этом режиме одну шороховатость: после того как вручную выделить вертикальный блок - курсор может оказаться за его пределами (справа).
Если после этого нажать Right - блок переместиться на одну позицию дальше чем ожидается.
Аналогично и с блоком нулевой длины.
https://t.me/FarManager — Telegram чат
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

John Doe wrote: Sun 04 Jun, 2023 23:47 Если после этого нажать Right - блок переместиться на одну позицию дальше чем ожидается.
Да, есть там мелкие шероховатости.
Кроме того, поскольку у меня опции никогда не меняются, то поведение при других значениях опций я не отслеживаю.
Но честно говоря, меня этот скрипт устраивает как есть, и постоянно им пользуюсь как в Far3, так и в far2m.
Shmuel
Posts: 6815
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 41 times
Been thanked: 526 times

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

Post by Shmuel »

Залил новую версию. Только рефакторинг + работает без изменений в Far3 и far2m.
Post Reply

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