Макросы для „борьбы“ с автодополнением

Здесь выкладываются готовые к использованию макросы и скрипты.
User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Макросы для „борьбы“ с автодополнением

Postby John Doe » Tue 28 May, 2013 10:15

Почему не устраивает штатное автодополнение:

Макросы:
  • Up, Down, Home, End, PgUp, PgDn — передаются в панели.
  • Ctrl-Up, Ctrl-Down, Ctrl-Home, Ctrl-PgUp, Ctrl-PgDn — навигация по списку дополнения.
  • Esc — закрывает список отменяя текущий вариант дополнения.
    Для того чтобы закрыть список и принять текущий вариант можно использовать Ctrl-Tab, F10 или макрос на Ctrl-Enter (см. ниже).
    Также напомню, что список автодополнения можно принудительно вызвать с помощью Ctrl-Space.
  • Ctrl-Enter — закрывает список и принимает текущий выбранные вариант дополнения, если не пустой.
    (т.е. исходная функция Ctrl-Enter доступна, если ни один из вариантов не выбран)
  • Ctrl-Space — переоткрывает список дополнения в ручном режиме.
    Может быть полезно, если какой-либо из 4х параметров Interface.Completion.Use* выставлен в Other (см. hlf:AutoCompleteSettings).

Дополнительные параметры:
    Для тонкой настройки можно менять значения параметров, заданные в начале скрипта:
  • AutoCompletionAreas — области действия макросов, по умолчанию заданы обе (командная строка, и диалоги).
  • KeepList — восстанавливать список дополнения после передачи в панели курсорных клавиш.
  • VisiblePanelsOnly — не работать при погашенных панелях.
Attachments
AutoCompletion.lua.7z
(1.3 KiB) Downloaded 57 times

difr
Posts: 9
Joined: Sat 26 Oct, 2013 23:08

Re: Макросы для „борьбы“ с автодополнением

Postby difr » Fri 01 Nov, 2013 08:16

John Doe, спасибо, весьма полезные макросы.

DV
Posts: 280
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 1 time
Been thanked: 2 times

Re: Макросы для „борьбы“ с автодополнением

Postby DV » Fri 13 Dec, 2013 17:28

John Doe wrote:Также напомню, что список автодополнения можно принудительно вызвать с помощью Ctrl-Space.

А почему Ctrl-Space не работает, если в меню AutoComplete settings не стоит галочка Show list?
Т.е. мой вопрос/пожелание вот в чём: как сделать так, чтобы список автодополнения не показывался автоматически, а вызывался вручную по Ctrl-Space?

User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Re: Макросы для „борьбы“ с автодополнением

Postby John Doe » Mon 16 Dec, 2013 15:46

DV wrote:А почему Ctrl-Space не работает, если в меню AutoComplete settings не стоит галочка Show list?
Вероятно потому что для кого-то имеют смысл и другие сочетания настроек:

Code: Select all

[ ] Show list
    [ ] Modal mode
[x] Append first matched item


DV wrote:чтобы список автодополнения не показывался автоматически, а вызывался вручную по Ctrl-Space?
На мой взгляд ваше пожелание вполне разумно, но надо продумать способ активации (отдельный хоткей, или команда макроязыка).

Прошу обратить внимание, что в любом случае в данной теме это оффтопик.
Лучше запишите на багтрекер, чтобы не потерялось.

Update
Выяснилось, что для решения задачи DV не надо снимать галку [x] Show list в настройках AutoComplete settings.
Вместо этого нужно снять галку [ ] AutoComplete в настройках Command line settings.

DV
Posts: 280
Joined: Mon 07 Aug, 2006 08:23
Has thanked: 1 time
Been thanked: 2 times

Re: Макросы для „борьбы“ с автодополнением

Postby DV » Tue 17 Dec, 2013 09:51


User avatar
HaRT
Moderator
Posts: 7906
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 63 times
Been thanked: 94 times

Макросы для „борьбы“ с автодополнением

Postby HaRT » Wed 20 May, 2015 14:07

Спасибо за полезные макросы!
Лично мне несколько неудобны две вещи:
1. что при использовании обычных клавиш навигации список автодополнения резко пропадает — это отвлекает внимание. Я бы предпочёл, чтобы он остался, притом с сохранением текущей позиции в нём. Наверно, можно в макросе брать текущую позицию (как это сделать в современном FAR Macro API?), закрывать список, отрабатывать клавишу, открывать список вновь и восстанавливать сохранённую позицию.
2. чтобы закрыть список с сохранением выбранного дополнения, приходится либо задействовать обе руки, либо левой тянуться к CtrlTab, либо правой к F10. Было бы удобно назначить на это же действие ещё и CtrlRight, но только если находимся в конце командной строки (чтобы не пострадало шагание по целым словам).
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Макросы для „борьбы“ с автодополнением

Postby John Doe » Wed 20 May, 2015 14:25

HaRT wrote:Source of the post чтобы закрыть список с сохранением выбранного дополнения
А в каких случаях требуется это делать?

HaRT wrote:Source of the post Было бы удобно назначить на это же действие ещё и CtrlRight
Может CtrlEnter?

User avatar
HaRT
Moderator
Posts: 7906
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 63 times
Been thanked: 94 times

Макросы для „борьбы“ с автодополнением

Postby HaRT » Wed 20 May, 2015 14:34

John Doe wrote:Source of the post в каких случаях требуется это делать?
Например, когда в истории есть длинный путь к какой-то программе без параметров, а мне надо запустить её с параметрами.
John Doe wrote:Source of the post Может CtrlEnter?
Тогда, чтобы вставить имя файла с панели, придётся закрывать автодополнение — неудобно. А что не так с CtrlRight?
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Макросы для „борьбы“ с автодополнением

Postby John Doe » Wed 20 May, 2015 14:48

HaRT wrote:Source of the post Например, когда в истории есть длинный путь к какой-то программе без параметров, а мне надо запустить её с параметрами.
Пробел (как и прочие текстовые клавиши) делает то, что вам надо.

HaRT wrote:Source of the post Тогда, чтобы вставить имя файла с панели, придётся закрывать автодополнение — неудобно.
CtrlEnter будет срабатывать только если в списке выбран непустой элемент.

HaRT wrote:Source of the post А что не так с CtrlRight?
Всё нормально с ним, но мне почему-то больше нравится CtrlEnter (если это вообще нужно, см. пункт №1)

User avatar
HaRT
Moderator
Posts: 7906
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 63 times
Been thanked: 94 times

Макросы для „борьбы“ с автодополнением

Postby HaRT » Wed 20 May, 2015 14:53

John Doe wrote:Source of the post CtrlEnter будет срабатывать только если в списке выбран непустой элемент
Вроде тоже неплохо. Надо попробовать на практике.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Макросы для „борьбы“ с автодополнением

Postby John Doe » Wed 20 May, 2015 16:34

HaRT wrote:Source of the post Надо попробовать на практике.

Code: Select all

Macro { description="CtrlEnter to accept autocompletion";
  area="ShellAutoCompletion DialogAutoCompletion"; key="/^[LR]Ctrl(Enter|NumEnter)$/";
  uid="B8D4CC54-5690-413C-BE02-B3BDCB34145E";
  condition=function() return not Object.Bof end;
  action=function() Keys"Esc" end;
}

User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Макросы для „борьбы“ с автодополнением

Postby John Doe » Wed 20 May, 2015 16:56

HaRT wrote:Source of the post 1. что при использовании обычных клавиш навигации список автодополнения резко пропадает — это отвлекает внимание. Я бы предпочёл, чтобы он остался, притом с сохранением текущей позиции в нём.
Заменить первый макрос на этот:

Code: Select all

local KeepList = true
Macro { description="Don't steal important keys!";
  area="ShellAutoCompletion DialogAutoCompletion"; key="Up Down Num8 Num2 Home End Num7 Num1 PgUp PgDn Num9 Num3";
  uid="C9A9CF66-0406-4420-A967-EBEDD75A740D";
  action=function()
    if KeepList then
      local Pos = far.AdvControl("ACTL_GETWINDOWINFO").Id:send("DM_LISTGETCURPOS", 1)
      Keys"Home Esc AKey CtrlSpace"
      far.AdvControl("ACTL_GETWINDOWINFO").Id:send("DM_LISTSETCURPOS", 1, Pos)
    else
      Keys"Esc AKey"
    end
  end;
}

User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Макросы для „борьбы“ с автодополнением

Postby John Doe » Wed 20 May, 2015 17:04

Можно также предложить альтернативный вариант управления: обычные курсорные клавиши передаются в панели, а клавиши нумпада управляют списком:
Last edited by John Doe on Thu 28 May, 2015 15:22, edited 1 time in total.
Reason: fix

User avatar
HaRT
Moderator
Posts: 7906
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 63 times
Been thanked: 94 times

Макросы для „борьбы“ с автодополнением

Postby HaRT » Wed 20 May, 2015 18:02

John Doe wrote:Source of the post Заменить первый макрос на этот
Спасибо!
John Doe wrote:Source of the post альтернативный вариант управления: обычные курсорные клавиши передаются в панели, а клавиши нумпада управляют списком
Помнится, у меня в Фаре 1.75 было нечто родственное: нумпадом ходил по панели, а обычными — по командной строке.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
HaRT
Moderator
Posts: 7906
Joined: Tue 30 Aug, 2005 17:21
Location: Санкт-Петербург
Has thanked: 63 times
Been thanked: 94 times

Макросы для „борьбы“ с автодополнением

Postby HaRT » Thu 28 May, 2015 00:28

Если попытаться при скрытых панелях набрать начало команды и в появившемся списке понажимать стрелочки, получим . Вылечил добавлением . Прошу исправить макросы в шапке.
Примечательно, что такую же ошибку я получал и при показанных панелях после каких-то комбинаций действий где-то возле первого/последнего файла на панели, но стабильно воспроизводить так и не научился.
Фар есть инструмент, а не нянька. © 2009 DrKnS

User avatar
John Doe
Бюрократ
Posts: 11038
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 9 times
Been thanked: 62 times

Макросы для „борьбы“ с автодополнением

Postby John Doe » Thu 28 May, 2015 10:46

HaRT wrote:Source of the post Прошу исправить макросы в шапке.
Сначала надо ответить на вопрос какое поведение желаемо при погашенных панелях.
Плюс, учесть вызов из диалогов.

HaRT wrote:Source of the post стабильно воспроизводить так и не научился.
Стабильно воспроизводится при показанных панелях, если стрелку удерживать.


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

Who is online

Users browsing this forum: No registered users and 1 guest