turbo — работа с выделением в редакторе

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

turbo — работа с выделением в редакторе

Post by John Doe »

Удобных сочетаних клавиш всегда не хватает, поэтому предлагаю попробовать в фаре проверенную временем систему последовательностей из нескольких нажатий, знакомую многим по старым IDE от Borland (хотя большинство сочетаний пришли туда в свою очередь из редактора WordStar).

Предлагаются макросы, повторяющие действие некоторых команд: (под "x" здесь понимается вторая клавиша последовательности, например ^KB надо понимать как CtrlK-B).

Часть команд дублирует команды Far, часть — добавляет хоткеи для управления некоторыми параметрами редактора, часть — использует функции стандартных плагинов.

Хотя действия большинства команд очевидны, систему следует описать в целом:
  • Основная функциональность — работа с блоками: воспроизводится то самое поведение turbo-сред: отдельные команды для пометки начала/конца блока, и пр.
  • Применения команд создаёт "постоянные" блоки (режим по умолчанию отключенный в Far), но изменение это временно, до тех пор, пока не будет выделен другой блок (или сброшено выделение).
    Это позволяет прозрачно совмещать оба типа выделения, без необходимости явно трогать настройки.
    • Текущее состояние режима постоянных блоков индицируется на линейке клавиш (F3), как предлагалось тут. Кроме того, выполнение ряда команд сопровождается выводом состояния в строке статуса (кратковременно).
    • "Классическое" поведение постоянных блоков тоже возможно, если режим включен в глобальных настройках редактора.
      Активировать его в локальных (^OO) - недостаточно.
    • Если же глобально режим отключен (что в Far является умолчательным), то команда ^OP (или F3) переключает свойство текущего блока, а не режим.
Не все функции этого пакета имели аналоги в турбо средах. Например:
  • ^KX Overwrite block with clipboard content
  • ^KN переключить тип блока (поточный/вертикальный)
  • ^KP вернуть выделение предыдущему блоку (запрашивалось тут).
    [todo] сформулировать отличие от ^KH
    Так же можно переключаться между текущим и предыдущим выделением.
    Альтернативный шорткат — Ctrl+U, как бы инвертирует штатное действие (сброс выделения).
  • CtrlU:Hold - выделяет последние изменённые строки.
    Главным образом для того чтобы восстановить выделение после вставки блока, или после undo операции с блоком.
    В связи со странностями EE_CHANGE вынуждено применяется дополнительная эвристика, покрывающая не все случаи потенциального использования.
  • ^QV возвращает курсор в место последней правки, подобно шорткату Eclipse Ctrl+Q (запрашивалось тут), или ShiftF5 в MS Word (запрашивалось тут, работает не идентично MS).
    Сохраняются несколько последних позиций, повторные нажатия позволяют переключаться между ними (и возвращаться в исходную позицию).
    ^QP — то же самое, но если последняя правка была произведена не в текущем редакторе, то открывает сесто последней правки в нужном файле (в панелях тоже работает).
  • Для непостоянных блоков кнопки Left/Right перемещают курсор между позициями начала и конца выделения (предлагалось тут).
Дополнительно:

Для того, чтобы макросы активировались последовательностью нажатий: требуется также установить скрипт macroEx.

Если не нравятся последовательности, то несложно определить собственные макросы на удобные сочетания.

Скачать: https://chiselapp.com/user/johnd0e/repo ... /turbo.zip

Старая версия:
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

turbo — работа с выделением в редакторе

Post by John Doe »

Latest post of the previous page:

HaRT wrote: Tue 28 Jun, 2016 13:33 Макросы на Left/Right конфликтуют с таковыми из SciTE_like в части OptCursorMoveResetsBlock = false
Правильно ли я понимаю, что достаточно проверить что выделение блочное, и ширина его равна 1?
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

turbo — работа с выделением в редакторе

Post by HaRT »

John Doe wrote: Sun 04 Jun, 2023 23:53 достаточно проверить что выделение блочное, и ширина его равна 1?
Насколько мне удалось вспомнить, что там происходило, да.
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

turbo — работа с выделением в редакторе

Post by HaRT »

Теперь, когда починили (спасибо!), хочется понять, что должен делать CtrlQ-P в панелях. У меня при нажатии этой комбинации ничего заметного не происходит…
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

turbo — работа с выделением в редакторе

Post by John Doe »

Что должен описано в шапке, а вот делает или нет сказать не могу.
В любом случае ряд багов исправлен, новая версия на подходе.
https://t.me/FarManager — Telegram чат
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

turbo — работа с выделением в редакторе

Post by HaRT »

John Doe wrote: Wed 21 Jun, 2023 23:46 ряд багов исправлен, новая версия на подходе
Кстати, я себе подсказки, появляющиеся при длительном нажатии первой части кнопкосочетания, давно реструктурировалусовершенствовал наименования по своему вкусу): , — с помощью вставок.

P.S.
Сначала написал, а потом засомневался, не повторяюсь ли. И да, повторяюсь.
Last edited by HaRT on Thu 22 Jun, 2023 00:30, edited 1 time in total.
Reason: Добавлен постскриптум
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
John Doe
Бюрократ
Posts: 14582
Joined: Wed 27 Apr, 2005 20:42
Location: github.com/FarManagerLegacy
Has thanked: 92 times
Been thanked: 514 times
Contact:

turbo — работа с выделением в редакторе

Post by John Doe »

John Doe wrote: Wed 21 Jun, 2023 23:46 В любом случае ряд багов исправлен, новая версия на подходе.
Тем временем прошло полтора года, а исправления так и не были выложены. На тот момент что-то ещё собирался доделать, а тем временем приоритеты изменились.

Исправляю оплошность, выкладываю "как есть".
  • Глобальный рефакторинг, ряд багов должен уйти. Ну и код поприличнее теперь.
  • CtrlK:Hold - выделяет последние изменённые строки.
    Главным образом для того чтобы восстановить выделение после вставки блока, или после undo операции с блоком.
    В связи со странностями EE_CHANGE вынуждено применяется дополнительная эвристика, покрывающая не все случаи потенциального использования.
  • CtrlQ-V / ShiftF5 теперь реализовано на основе сессионных закладок, и сохраняется несколько последних позиций редактирования.
  • Прочие минорные изменения
  • Описание в шапке актуализировано
https://t.me/FarManager — Telegram чат
Post Reply

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