выделить все вхождения слова под курсором (@Xer0X & @citRiks)

Здесь обсуждается всё, что касается макросов.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором (@Xer0X & @citRiks)

Post by citRiks »

ВВИДУ ОТСУТСТВИЯ ОБЩЕСТВЕННОГО ИНТЕРЕСА (нет лайков)
ОБНОВЛЯТСЯ В ДАЛьНЕЙШЕМ НЕ БУДЕТ

текущая/экспериментальная/обновленная версия находится у меня,
но дальнейшей синхронизации скорее всего не будет.
если все-же, кому-тo чего нужно, то пишите сюда,
скорее всего отвечу, и скорее всего быстро

Оригинальная тема:
viewtopic.php?t=3733

благодаря дедушке @Xer0X и моему приступу трудоголизма сегодня,
допилен этот скрипт, представляющий развитие темы:
https://github.com/dr-dba/far-lua-editor-color-word

DEPENDS ON MODULES:
https://github.com/dr-dba/far-lua-general-utils
https://github.com/dr-dba/far-lua-diagnostics
https://github.com/dr-dba/far-lua-internals

В частности реализовано и это:
fml2 wrote: Wed 23 Dec, 2015 14:23
  1. По умолчанию не учитывать большие/маленькие буквы
  2. Если есть выделенный текст, то подсвечивать его вхождения, а не слово под курсором.
Если в целом, тo есть три режима последовательно (по нажатию Ф5) включаемые:
1.) Простое выделение, НЕ-чувствительно к регистру
2.) Чувствительное к регистру выделение, текст отличное регистром тоже выделяется, но другим цветом
3.) Выделение по Луа-РегЕкспу, т.е. можно написать луа-рекексп в редакторе,
и таким образом протестировать его в редакторе, что удобно
  • Реализован переход на следующее/предыдущее нахождение по Shift/AltF5
  • Режимы "Простой текст"==>> "Lua RegExpr" ==>> "none" переключаются циклически пo F5
  • Авто-выделение включаемое/выключаемое по CtrlF5

Этот "мануал/ридми" старый и не отражает всего функционала.
вопросы, пожелания - писать, опять же, см. начало текста
Last edited by citRiks on Fri 27 Aug, 2021 10:27, edited 7 times in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором

Post by citRiks »

!! UPDATE
https://github.com/dr-dba/far-lua-editor-color-word
Все таки сделал только два переключаемых зацикленных режима:
1.) Простой, с отдельным цветом если отличается по буквенному регистру
2.) Луа РегЕксп
Но еще не решил, может вернусь к как до этого было
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором

Post by citRiks »

небольшое обьясенение "зачем это нужно?"
Cпрашивали, я ответил, копирую ответ сюда:
Для меня например чаще всего так надо видеть что я не ошибся в название переменной.

Code: Select all

-- ###
local some_var_1
...
<blah-blah-blah, some code here>
...
Some_Var_1 = Some_Var_1 + 1
--[[ UPS!! wrong variable name, 
lets highlit it with F5 to see the difference,
and all around the code! ]]
...
-- @@@
Кроме того, мне нужен взгляд "с птичьего полета" где и как у меня используется то или иное слово (переменная)
без отрыва от редактирования, захода в поиск, а просто одним нажатием Ф5.
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

выделить все вхождения слова под курсором

Post by Ann »

citRiks,

Поймите и простите если туплю, но не нашёл ответа в теме и не придумал как сделать. После того как посмотрел помеченные слова и убедился, что всё хорошо, как снять пометки?
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

выделить все вхождения слова под курсором

Post by Ann »

citRiks wrote: Sun 31 Jan, 2021 00:46еще раз нажать Ф5
Вы будете смеяться, но у меня повторное F5 не снимает пометки. А вот на третий раз, да, снимает… Но, возможно, что-то вмешивается — попробую поискать.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором

Post by citRiks »

Ann,
не надо искать, как я уже писал 10 раз, так и задумано
1.) выделение и первый Ф5 - раскраска простых совпадений
2.) второе Ф5 - переход на РегЕксп
3.) Третье Ф5 - отмена выделений, конец цикла
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

выделить все вхождения слова под курсором

Post by Ann »

citRiks,

А Вы не часом?

Вот я выделил слово. И оно никак не связано с регекспом. И макрос пометил все точно такие же слова. Жму второй раз F5 и н-и-ч-е-г-о не наблюдаю. Так что же это такое загадочный "переход на РегЕксп"?
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором

Post by citRiks »

Ann, если регексп (выделенное) тривиальный, то и будет выглядеть так-же как простое совпадение
можете выделить "(a)" например, и посмотреть что получится.
заодно чуть узнаете что такое "регекспы" :)
или так например:
image.png
image.png (2.71 KiB) Viewed 3358 times
тут регексп это "[xdi]". в силу того что это регексп, подчеркиваются "idx", "i", "d"
Last edited by citRiks on Sun 31 Jan, 2021 06:13, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

выделить все вхождения слова под курсором

Post by John Doe »

Если выделенное слово не регэксп, то второе нажатие F5 не имеет смысла.
https://t.me/FarManager — Telegram чат
User avatar
Ann
Posts: 478
Joined: Tue 26 Jun, 2007 11:05
Has thanked: 141 times
Been thanked: 45 times

выделить все вхождения слова под курсором

Post by Ann »

citRiks wrote: Sun 31 Jan, 2021 06:12
Действительно Вы меня уели — как это я сам не дотумкал выделить регексп и ключ нажать повторно? И классный пример привели, просто загляденье и эстетическое удовольствие, а не формальный пример. И, действительно, Вы правы, такая пометка регекспов поможет лучше их усваивать.

.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором

Post by citRiks »

John Doe wrote: Sun 31 Jan, 2021 10:23 Если выделенное слово не регэксп, то второе нажатие F5 не имеет смысла.
и как отличить регексп от не-регекспа?
ну кроме того что бывают некорректные регексп-выражения,
на которых будет ошибка и вылет если их читать как регексп.
но и в этом случае компутеру будет неясно что имел ввиду юзер дав такой ввод.
иными словами неизвестно что выбрать:
1.) юзер задал неправильный регексп, но тогда выделять слова простым совпадением будет неправильно
2.) или все-таки юзер задал простой текст и тогда действительно нужны простые совпадения

* Можно, как вариант, регекспы выделять другим цветом, чтобы что-то менялось визуально.
* Можно делать делать для простого выделения F5, а для регекспа, например, AltF5
Но мне показалось что удобнее "пролистать" (по F5) до отмены выделения, и усе ..
Разве что, ели будут многочисленные просьбы трудящихся, то можно отдельную окраску для РегЕкспа добавить

ПС
Если у кого-то завалялся алгоритм/код по вычислению отличий между строками,
то приму в дар с благодарностью.
Хочу применить для отличных по регистру букв другую окраску,
сейчас все выражение будет другим цветом в случае отличия хоть одной буквы по регистру
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором

Post by citRiks »

Ann wrote: Sun 31 Jan, 2021 11:17 А не могли бы Вы написать макрос, который в редакторе по нажатию определённого ключа выполнял бы следующую последовательность операций: выделить знак под курсором — выделить слово — выделить предложение — выделить абзац — выделить весь текст — снять выделение? А этим же ключом с шифтом те же действия в обратном направлении.
мог бы, и хотел бы, да некогда просто вообще :(
на эту элементарную допилку больше двух часов взяло.
А всего-то хотел починить одно,
сделать чтобы "при новом выделении забыть цикл по старому (начать цикл с новым выделением)".
сделал по дороге кучу рефакторинга правда,
но по факту, времени уходит слишком много..
Далее, выделения по предложениям это уже семантический анализ какой-то :)
нужно или использовать колорер, т.е. плотно изучить его возможности,
или, что более правильно, при всем уважении к колореру,
плотно засесть за расово верный LPEG, универсально-полезная вещь для редакторных дел
User avatar
John Doe
Бюрократ
Posts: 13807
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 73 times
Been thanked: 426 times
Contact:

выделить все вхождения слова под курсором

Post by John Doe »

citRiks wrote: Sun 31 Jan, 2021 15:13 и как отличить регексп от не-регекспа?
Если строка не содержит спецсимволов, или не компилируется в регэксп, то третий режим точно можно пропускать.
https://t.me/FarManager — Telegram чат
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

выделить все вхождения слова под курсором

Post by citRiks »

John Doe wrote: Sun 31 Jan, 2021 16:05 Если строка не содержит спецсимволов, или не компилируется в регэксп, то третий режим точно можно пропускать.
анный момент это уже не третит а второй, а по сути так и происходит,
после падения на регекспе выдается сообщение об ошибке и режим выделения отключается уже совсем
Post Reply

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