HiliteWord — Авто-подсветка вхождений слова под курсором

Здесь обсуждается всё, что касается макросов.
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:

HiliteWord — Авто-подсветка вхождений слова под курсором

Post by John Doe »

Ненавязчиво подсвечиваются все вхождения слова под курсором.
При перемещении курсора и редактировании текста подсветка соответственно автоматически обновляется.
  • LCtrl+LAlt - фиксирует текущее слово.
  • LCtrl+LAlt+Up/Down - навигация по вхождениям слова.


Для работы необходима настройка InterfaceSettings / [x] Use VirtualTerminal for rendering.
Или же можно color перенастроить на более простой цвет.

P.S.
Как лучше подсвечивать слово я пока для себя не решил.
В закомментированной строке коде color настроен на подчёркивание (для этого требуется соответствующая поддержка терминалом).
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

Авто-подстветка вхождений слова под курсором

Post by HaRT »

Спасибо, интересно. Попробую, получится ли сделать достаточно ненавязчиво. А пока .

И, кстати, традиционный вопрос: с какой сборки Фара это будет работать? У меня в b6447 x86 под Win10 , а в редакторе ни при перемещении, ни при правках никакой дополнительной подсветки не появляется. Требуется ли какая-то особенная настройка Фара или окна консоли?
Last edited by HaRT on Sat 17 May, 2025 16:16, edited 1 time in total.
Reason: Добавлен второй абзац
Фар есть инструмент, а не нянька. © 2009 DrKnS
User avatar
HaRT
Moderator
Posts: 11458
Joined: Tue 30 Aug, 2005 17:21
Has thanked: 270 times
Been thanked: 417 times

Авто-подсветка вхождений слова под курсором

Post by HaRT »

А если раскомментировать строку с подчёркиванием и попытаться перезагрузить скрипты, то вылезает — как раз из-за отсутствия FCF_FG_U_DATA2.

P.S. А ещё там пропущено F. перед FCF_INHERIT_STYLE. А, нет, уже втихую исправлено.
Last edited by HaRT on Sat 17 May, 2025 16:40, 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:

Авто-подсветка вхождений слова под курсором

Post by John Doe »

HaRT wrote: Sat 17 May, 2025 16:14 Требуется ли какая-то особенная настройка Фара или окна консоли?
InterfaceSettings / [x] Use VirtualTerminal for rendering
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

Авто-подсветка вхождений слова под курсором

Post by HaRT »

Сделал BackgroundColor:OPAQUE*0.5+0 — вроде вижу эффект, спасибо. В ходе экспериментов наблюдал какие-то странные артефакты — если смогу воспроизвести, отпишусь.

Кстати, .
Last edited by HaRT on Sat 17 May, 2025 16:57, edited 1 time in total.
Фар есть инструмент, а не нянька. © 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:

Авто-подсветка вхождений слова под курсором

Post by John Doe »

Добавил макросы:
  • LCtrl+LAlt - фиксирует текущее слово.
  • LCtrl+LAlt+Up/Down - навигация между вхождениями на экране.
Предложенные изменения применил.
неужто для вас unless .CurLine==last.CurLine and .CurPos==last.CurPos понятнее
Немного)
https://t.me/FarManager — Telegram чат
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:

HiliteWord — Авто-подсветка вхождений слова под курсором

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

HiliteWord — Авто-подсветка вхождений слова под курсором

Post by HaRT »

Обнаружилось несколько странное поведение:
1. Фиксирую слово, у которого есть вхождения, например, вверху, в середине и внизу окна.
2. Помещаю каретку, скажем, между верхом и серединой.
3. Нажимаю CtrlAltDown для поиска вперёд.
Ожидаю, что вхождение зафиксированного слова будет искаться вправо и вниз от каретки.
На деле же получаю, что вхождение ищется от левого верхнего угла окна.
Аналогично для поиска назад — ожидаю, что будет искаться влево и вверх от каретки, а ищется от правого нижнего угла окна.

Фар есть инструмент, а не нянька. © 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:

HiliteWord — Авто-подсветка вхождений слова под курсором

Post by John Doe »

Всё поправил.

Что мне сейчас в скрипте не нравится - это вся логика связанная со skipSearch.
Это по сути хак, перезапускающий макрос повторно, придуманный для того, чтобы при поиске "назад" за пределами текущего экрана избежать выбора последнего вхождения в строке.


Edit:
Уже всё нравится.
Last edited by John Doe on Sun 18 May, 2025 14:10, edited 1 time in total.
https://t.me/FarManager — Telegram чат
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:

HiliteWord — Авто-подсветка вхождений слова под курсором

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

HiliteWord — Авто-подсветка вхождений слова под курсором

Post by HaRT »

Я тут заметил в Notepad2 интересную фичу: если включить подсветку в тексте слова под кареткой, то уникальные слова (которых больше нет во всём файле) подсвечиваются иначе (красной рамочкой), чем повторяющиеся (зелёной рамочкой). Было бы здорово и в HiliteWord добавить такое — разумеется, с поправкой на выразительные возможности. А если хватит запала, то можно было бы сделать даже 3 варианта: (1) уникальные слова, (2) слова, встречающиеся только в пределах текущего окна, и (3) все остальные. Однако, поскольку есть ещё независимый признак «фиксированное слово», наклёвывается комбинаторный взрыв. Впрочем, после первой Атрибуции с её 960 группами раскраски, 3*2==6 не так страшно. :)
Фар есть инструмент, а не нянька. © 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:

HiliteWord — Авто-подсветка вхождений слова под курсором

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

HiliteWord — Авто-подсветка вхождений слова под курсором

Post by HaRT »

John Doe wrote: Mon 19 May, 2025 16:56 Эти "рамочки" стабильны, не зависят от того на каком слове курсор?
Прошу прощения, что плохо объяснил. Визуальное выделение (рамочка) рисуется у всех вхождений (только) слова под кареткой и соответственно меняется при переходе от одного слова к другому. Т.е. это как раз та функциональность, которая реализуется в HiliteWord.

Кстати, я вот сейчас чуть больше поэкспериментировал с Notepad2 и обнаружил, что для повторяющихся слов, встречающихся только в пределах видимой области, рамочка жёлтая; зелёная же она для тех повторяющихся слов, некоторые вхождения которых не видны. Получаются ровно те 3 варианта, которые я и предложил выше.

P.S. Собственно, зачем дублировать документацию. Вот тут есть перечисление этих вариантов и пара иллюстраций. Кстати, если у вас установлен TortoiseGit, то, весьма вероятно, и Notepad2 тоже (под названием Notepad2e), и можно легко эту функциональность пощупать.
Last edited by HaRT on Mon 19 May, 2025 17:19, 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:

HiliteWord — Авто-подсветка вхождений слова под курсором

Post by John Doe »

Спасибо за объяснение, теперь всё понятно .

Но практического применения для себя не вижу.

Информация о том, есть ли вхождения за пределами экрана, отдельно не нужна: если они меня интересуют, то самого это факта не достаточно, всё равно требуется туда перейти.
Я сразу нажимаю клавиши для перехода, не проверяя предварительно на текущем экране следующее вхождение или нет.

Видеть уникально ли текущее слово тоже не знаю для чего.
Искать так опечатки не очень эффективно, хотя бы потому что уникальные вызовы функций не редкость. И наоборот, ошибка не будет замечена если слово случайно встретилось в другом неймспейсе.
https://t.me/FarManager — Telegram чат
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:

HiliteWord — Авто-подсветка вхождений слова под курсором

Post by John Doe »

Кстати сейчас думаю, что если сделать так чтобы паттерн захватывал начальную точку.
Я у себя реализовал выделение вхождения при поиска, и в этом случае точку захватывать не хотелось бы (но это впрочем решаемо).

Edit: обновил.
По умолчанию при поиске текущее слово выделяется (за исключением лидирующей точки).
Если раскомментировать определение color_current, то вместо выделения будет подсветка подчёркиванием.
Возможно, стоит сделать отдельные шорткаты для поиска с выделением.

Что думаете?

P.S.
И ещё.
Учитывая пересечение функциональности со штатным Editor.ColorWord.moon, возможно стоит добавить/заменить шорткат фиксации слова на F5?
https://t.me/FarManager — Telegram чат
Post Reply

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