Макрос помогающий обойти проблему отсутствия поиска по хелпу

Здесь обсуждается всё, что касается макросов.
User avatar
John Doe
Бюрократ
Posts: 13062
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 41 times
Been thanked: 319 times

Макрос помогающий обойти проблему отсутствия поиска по хелпу

Post by John Doe »

Макрос помогающий обойти проблему отсутствия поиска по хелпу
Идея проста и заключается в том, чтобы открыть в редакторе просматриваемый в данный момент файл помощи и перейти в нужный раздел.

Из редактора можно перейти обратно в режим просмотра хелпа нажав F1 (Но это уже заслуга плагина HlfViewer)

Code: Select all

$MMode 1
%File=Help.FileName;
%Search=Help.Topic;
$While(!Shell)
    Esc
    $If(Editor)
        Esc
        $If(Dialog)
            $MMode 1
            $While(!Shell)
                $If(!mod(%i,5))
                    msgbox(DisableOutput,"Please go to panels to continue macro...");
                $End
                %key=waitkey();
                eval(%key)
                %i=%i+1;
            $End
            $MMode 1
        $End
    $End
$End

ShiftF4 $Text %File Enter
$If(Editor)
    CtrlHome
    F11
    $If (Menu.Select("Search And Replace",MENUSELECT_MATCH_TAIL)>0)
        Enter 1 AltG Add AltS "^"
        $Else
            Esc F7
    $End
    @ $Text %Search Enter
$End

Примечания:
1) Макрос настроен на работу совместно с плагином Searсh and Replace. Макрос может работать и без него, но тогда корректный переход в нужный раздел не гарантируется.
2) В макросе используются макроконстанты (%FARHOME%\Addons\Macros\MacroConsts.reg)
3) Необходимо учесть: для того чтобы открыть редактор макрос должен попасть в панели, поэтому он молча закрывает все открытые диалоги, меню, вьюверы и редакторы...
Если в открытом редакторе имеются несохранённые изменения, то макрос просит пользователя перейти в панели, после чего продолжает работу.
Help_F4.reg.zip
(1.58 KiB) Downloaded 175 times
Update
Имеется усовершенствованная версия макроса, но как-то руки не доходят привести в надлежащий вид и выложить. Если надо - пишите.

Update
HlfTools — средства работы со справкой
Last edited by John Doe on Sat 26 Oct, 2019 14:15, edited 1 time in total.
https://t.me/FarManager — Telegram чат
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by sToLp »

John Doe wrote:Имеется усовершенствованная версия макроса...
В связи с переходом на Фар3 и более частым обращением к хэлпу макрос стал особенно актуальным.
И желательно бы его под MacroLib.
User avatar
John Doe
Бюрократ
Posts: 13062
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 41 times
Been thanked: 319 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by John Doe »

Попробуйте сами (в связи с гибелью HDD мой переход на Far 3 задержался...)
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by sToLp »

Сочувствую!

Сам по себе макрос перевести под MacroLib не сложно.

Code: Select all

// (с)John Doe » Вт 09 июн, 2009 17:20
// http://forum.farmanager.com/viewtopic.php?p=45873&sid=d22687bc99626c9fc58199e78bb70245#p45873
//Макрос помогающий обойти проблему отсутствия поиска по хелпу
//Идея проста и заключается в том, чтобы открыть в редакторе просматриваемый в данный момент файл помощи и перейти в нужный раздел.
//Из редактора можно перейти обратно в режим просмотра хелпа нажав F1 (Но это уже заслуга плагина HlfViewer)

Macro Area="Help" Key="F4"
Descr="ПрямоИзХэлпаОткрытьЕгоВредакторе"
{{
  MMode(1,2) %File=Help.FileName; %Search=Help.Topic;
  $While(!Shell)
    Esc
    $If(Editor)
      Esc
      $If(Dialog)
        MMode(1,2)
        $While(!Shell)
          $If(!mod(%i,5))
            msgbox(MMode(1,-1),"Please go to panels to continue macro...");
          $End
          %key=waitkey(); eval(%key) %i=%i+1;
        $End
        MMode(1,2)
      $End
    $End
  $End
  ShiftF4 print(%File) Enter
  $If(Editor)
    CtrlHome F11
;;    $If (Menu.Select("Search And Replace",MENUSELECT_MATCH_TAIL)>0)
    $If (Menu.Select("Search And Replace",0)>0)
      Enter 1 AltG Add AltS "^"
    $Else
      Esc F7
    $End
    @ print(%Search) Enter
  $End
}}

//Примечания:
//1) Макрос настроен на работу совместно с плагином Searсh and Replace. Макрос может работать и без него, но тогда корректный переход в нужный раздел не гарантируется.
//2) В макросе используются макроконстанты (%FARHOME%\Addons\Macros\MacroConsts.reg)
//3) Необходимо учесть: для того чтобы открыть редактор макрос должен попасть в панели, поэтому он молча закрывает все открытые диалоги, меню, вьюверы и редакторы...
//Если в открытом редакторе имеются несохранённые изменения, то макрос просит пользователя перейти в панели, после чего продолжает работу.
Но Вы ещё что-то имели ввиду под его усовершенствованием...
User avatar
John Doe
Бюрократ
Posts: 13062
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 41 times
Been thanked: 319 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by John Doe »

Кто ж его упомнит уже...
Вот что нашёл (не знаю лучше ли оно):
P.S.
Одно скажу точно: "баги" есть и в старой и в новой версии. А новую не выкладывал, потому что до не довёл до ума.
User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by sToLp »

С наскока сделать второй вариант более продуктивным чем первый не получилось. В отличие от первого, который переходит к редактированию файла контекстно, второй ставит курсор на одну и туже метку "@Help". А также и кое-что ещё не понятно. Надо кумекать.
Благодарю Вас за оперативную отзывчивость! В любом случае очень познавательно.
User avatar
John Doe
Бюрократ
Posts: 13062
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 41 times
Been thanked: 319 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by John Doe »

sToLp wrote:второй ставит курсор на одну и туже метку "@Help".
Вероятно просто F1 надо убрать (оно было для отладки).
User avatar
SUSim
Posts: 1548
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 12 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by SUSim »

Не в тему по поводу хелпа:
0)а почему хелп по плагинам через ShiftF2?

По теме:
1) почему из просмотра низя хелпфайл покзать как хелп?
2) если бы появилась возможность просто переходить не только из редактора в хелп, а из хелпа в редактор(вьюер с учетом 1), то можно было значительно упростить данный макрос...
3) макрос можно развить (даже без сторонних плагинов) - вывод найденных тем в меню, например... (i)
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13062
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 41 times
Been thanked: 319 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by John Doe »

SUSim wrote:Не в тему по поводу хелпа:
0)а почему хелп по плагинам через ShiftF2?
А что вы предлагаете?

SUSim wrote:По теме:
1) почему из просмотра низя хелпфайл покзать как хелп?
Как это связано с макросом?
User avatar
SUSim
Posts: 1548
Joined: Thu 18 Feb, 2010 17:32
Has thanked: 5 times
Been thanked: 12 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by SUSim »

John Doe wrote:
SUSim wrote:0)а почему хелп по плагинам через ShiftF2?
А что вы предлагаете?
да что угодно без модификаторов кроме f1 и f5 - куча функциональных клавиш свободна,
= было бы логично F11 = у меня и макрос есть и сотрудникам я его ставлю (я раньше просто стеснялся спрсить :oops: :) )
John Doe wrote:
SUSim wrote:По теме:
1) почему из просмотра низя хелпфайл покзать как хелп?
Как это связано с макросом?
сорри, да не связано... я просто подумал что во вьюер проще перключиться, но как потом найти нужную тему... короче неправ!!!
SimSU ··· ·· -- ··· ··-
User avatar
John Doe
Бюрократ
Posts: 13062
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 41 times
Been thanked: 319 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by John Doe »

User avatar
sToLp
Posts: 938
Joined: Thu 23 Jul, 2009 10:16
Has thanked: 107 times
Been thanked: 12 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by sToLp »

John Doe wrote:Вероятно просто F1 надо убрать (оно было для отладки).
Да. После того как убрал F1 и осовременил значения свойства Editor.State и флагов функции Msgbox этот вариант Вашего макроса стал лучше чем прежний.

Code: Select all

Macro Area="Help" Key="F4" Descr="Открыть в редакторе просматриваемый в данный момент файл помощи"
;; (с) John Doe » Пт 20 янв, 2012 http://forum.farmanager.com/viewtopic.php?p=89078#p89078
;; Макрос, помогающий обойти проблему отсутствия поиска по хелпу
;; Идея проста и заключается в том, чтобы открыть в редакторе просматриваемый в данный момент файл помощи и перейти в нужный раздел.
;; Из редактора можно перейти обратно в режим просмотра хелпа нажав F1 (Но это уже заслуга плагина HlfViewer)
{{
  %File= Help.FileName;
  %Search= Help.Topic;
  Esc
  %c = 100;
  $While(%c > 0 && !Shell && !Editor)
     $If(Viewer)
        F12
        $If(CurPos>1) 0 $Else Esc %c = 0; $End
     $Else
        Esc
     $End
     %c = %c - 1;
  $End

  $If (  %c <= 0 || Editor.State & 0x00000800 || Editor.State & 0x08000000 )
     Msgbox("Warning","Unable to leave " + Macroarea,0x00000001)
     $Exit
  $End

  $If(Editor.FileName!=%File)
     ShiftF4
     $If(!Dialog) Msgbox("Warning","ShiftF4 error",0x00000001) $Exit $End
     print(%File) Enter
  $End

  $If(Editor)
     CtrlL CtrlHome
     F7
     print("^@"+%Search)
     Tab Subtract Tab Subtract Tab Subtract Tab Add Tab Add
     Enter
  $End
}}
И может быть SUSim его ещё разовьёт. Большое спасибо за то, что поделились идеями!

Upd: по совету Maximus5 (см. пост ниже) добавил CtrlL
Maximus5
Posts: 3294
Joined: Sun 11 Nov, 2007 02:03
Been thanked: 7 times
Contact:

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by Maximus5 »

CtrlL туда еще, чтобы редактор заблокировать
User avatar
John Doe
Бюрократ
Posts: 13062
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 41 times
Been thanked: 319 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by John Doe »

А почему константы убрали?
User avatar
HaRT
Moderator
Posts: 9687
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 124 times
Been thanked: 249 times

Re: Макрос помогающий обойти проблему отсутствия поиска по х

Post by HaRT »

Фар есть инструмент, а не нянька. © 2009 DrKnS
Locked

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