Навязчивое автодополнение

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
Post Reply
ujos
Posts: 220
Joined: Fri 27 Apr, 2012 15:10
Has thanked: 10 times

Навязчивое автодополнение

Post by ujos »

Часто пользую линуксовую консоль и привык к тому, как там работает автодополнение:
  • Подсказка появляется только тогда, когды ты этого просишь (по Tab)
  • Если вариантов несколько, то их можно просмотреть по Tab-Tab
  • Содержание подсказки релевантное - не из истории команд, а на основании текущей дериктории и %PATH%
Когда перехожу в ФАР, то тут все по другому и как-то неудобно
  • Фар пытается помочь тогда, когда я этого не прошу. Бывало что я вводил к примеру "git push" и автоматом нажимал Enter, а FAR, прежде чем я нажал Enter, успевал вставить "--force" из истории и в итоге выполнялась не та команда что нужно
  • Содержимое подсказки часто нерелевантное и основано только на истории. Хотелось бы чтобы принималось во внимание еще текущая папка и переменная %PATH%.
Last edited by ujos on Thu 24 Jun, 2021 10:34, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13801
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 72 times
Been thanked: 425 times
Contact:

Навязчивое автодополнение

Post by John Doe »

ujos wrote: Thu 24 Jun, 2021 10:34 Когда перехожу в ФАР, то тут все по другому и как-то неудобно
Мне тоже, поэтому http://forum.farmanager.com/viewtopic.php?f=60&t=8013
https://t.me/FarManager — Telegram чат
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Навязчивое автодополнение

Post by buniak_a_h »

А разве первая проблема не решается настройками? У меня автодополнение срабатывает только в ручном режиме по Ctrl+Space… И, кстати, при наличии нескольких вариантов выдаёт список, как Вы и просили во втором пункте.
Кстати, в справке, вызванной из настройки автодополнения, ещё есть такое:
Cуществует несколько дополнительных параметров, определяющих, какие источники данных будут использованы для наполнения списка автозавершения:
  • Interface.Completion.UseFilesystem
  • Interface.Completion.UseHistory
  • Interface.Completion.UsePath
  • Interface.Completion.UseEnvironment
Может, это также решит и третью Вашу проблему?
ujos
Posts: 220
Joined: Fri 27 Apr, 2012 15:10
Has thanked: 10 times

Навязчивое автодополнение

Post by ujos »

buniak_a_h wrote: Thu 24 Jun, 2021 14:43 У меня автодополнение срабатывает только в ручном режиме по Ctrl+Space
У меня, если автодополнение включено, то окошко с вариантами сразу выскакивает... попробовал последний nightly - тоже самое.
2useven10
Posts: 5192
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 18 times
Been thanked: 309 times

Навязчивое автодополнение

Post by 2useven10 »

Мои 3 копейки...
Автодополнение командной строки отключено, включается явно по Ctrl+Space.
И ещё есть небольшой макрос:

Code: Select all

Macro {
  area="DialogAutoCompletion"; key="BS Del"; description="Fix a-compl shit";
  action = function()
    Keys('Esc AKey CtrlSpace')
  end
}
В таком виде меня не раздражает.
User avatar
Wave
Posts: 1885
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 14 times
Been thanked: 26 times

Навязчивое автодополнение

Post by Wave »

2useven10, не могу понять, для чего этот макрос нужен. Попробовал с ним и без него дополнение в комстроке — не вижу никакой разницы. Хотя казалось бы, простейший, всего лишь три нажатия клавиш.
Пользуюсь ФАРом больше 20 лет © собирательный.
ujos
Posts: 220
Joined: Fri 27 Apr, 2012 15:10
Has thanked: 10 times

Навязчивое автодополнение

Post by ujos »

buniak_a_h wrote: Thu 24 Jun, 2021 14:43 У меня автодополнение срабатывает только в ручном режиме по Ctrl+Space
Кажется понял идею.
buniak_a_h wrote: Thu 24 Jun, 2021 14:43 Interface.Completion.UseHistory
Отключил отображение истории и стало удобнее. Только выбор варианта по Ctrl+Space не очень удобен. Кнопка Tab ближе для руки и нужен только один палец.

Сделал такой макрос, но он не работает. Видать не находит окно "DialogAutoCompletion". Если же заменить "DialogAutoCompletion" на "Common", то выбор по Tab работает, но не работает смена панелей, так как Tab перехватывается.

Code: Select all

Macro {
  area="DialogAutoCompletion"; key="Tab"; description="Use Tab to iterate over options";
  action = function()
    Keys('CtrlSpace')
  end
}
Какой нужно указать "area", чтобы срабатывал только тогда, когда выскакивает окно "AutoCompletion"?
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Навязчивое автодополнение

Post by buniak_a_h »

ujos wrote: Fri 25 Jun, 2021 12:32 выбор варианта по Ctrl+Space не очень удобен. Кнопка Tab ближе для руки и нужен только один палец
Мы говорим, видимо, о разном. CtrlSpace вызывает вообще диалог выбора варианта автодополнения либо (если такая настройка включена) сразу подставляет единственное подходящее значение. Если в этом месте заменить Tab, то невозможно будет переключить панели.
У меня установлены следующие настройки:
Interface.Completion.Append │boolean│false Interface.Completion.ModalList │boolean│false Interface.Completion.ShowList │boolean│true * Interface.Completion.UseEnvironment │3-state│other * Interface.Completion.UseFilesystem │3-state│other * Interface.Completion.UseHistory │3-state│other * Interface.Completion.UsePath │3-state│other
С такими настройками пишете в комстроке всё, что хотите. Потом жмёте CtrlSpace и получаете список автодополнений, соответствующих введённой части Для выбора варианта используются клавиши навигации (Up, Down, PgUp, PgDn, Home, End) и собственно выбор - Enter.
Есть другой вариант: в любой момент жмёте CtrlEnd и к уже введённой части строки дописывается нечто из автодополнения (остаётся помеченным). При последующих нажатиях CtrlEnd вместо отмеченного "хвоста" подставляется следующее подходящее значение.
ujos
Posts: 220
Joined: Fri 27 Apr, 2012 15:10
Has thanked: 10 times

Навязчивое автодополнение

Post by ujos »

Не, мы говорим о том же. Просто у меня почему-то окно с AutoComplete появляется сразу, когда я что-то пишу. В приципе норм.
buniak_a_h wrote: Fri 25 Jun, 2021 13:26 Потом жмёте CtrlSpace и получаете список автодополнений, соответствующих введённой части Для выбора варианта используются клавиши навигации (Up, Down, PgUp, PgDn, Home, End) и собственно выбор - Enter.
Неудобство в том, что когда руки во время ввода текста находятся над цифро-буквенной зоной клавиатуры, то переносить правую руку на группу управления курсором (Up, Down, PgUp, PgDn, Home, End) - не удобно. Потом надо обратно переносить над буквами. И вот так туда-сюда по нескольку раз.

И чтобы текст из списка вставить, надо Enter нажимать - тоже неудобно.

Как работает Bash для меня супер удобно и эргономично.

1. Ты ввел часть текста и мизинцем/безимянным нажал на Tab. Если вариант только один, то он сразу вставляется.
2. Если вариантов больше чем один, нажимаешь еще раз Tab и получаешь весь список.
3. Дописываешь часть текста и нажимаешь Tab
4. Goto 1

В случае с ФАРом, когда есть выпадающее окно которое появляется сразу, то процесс ввода текста можно упростить еще больше

1. Ввел часть текста - появился сразу выпадающий список
2. Если там 1 вариант, то по нажатию на Tab он сразу вставляется - не нужно нажимать Enter
3. Если там более одного варианта, то нажатием на Tab перемещаем курсор на нужную строку и жмем Enter
4. Если там очень много вариантов, то пишем дальше

Еще размер окна списка можно был бы сделать раза в 2 больше.
Last edited by ujos on Fri 25 Jun, 2021 14:40, edited 1 time in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Навязчивое автодополнение

Post by buniak_a_h »

Вы про Tab забыли? Это, вообще-то, переключение панелей, которого нет у Bash
ujos
Posts: 220
Joined: Fri 27 Apr, 2012 15:10
Has thanked: 10 times

Навязчивое автодополнение

Post by ujos »

Макросы ведь работают в контексте, нет?
Я так понимаю, что окно AutoCompletion должно создавать контекст и макрос для Tab должен работать в этом контексте.

И кстати, если речь про Bash, то при спрятанных панелях в Midnight Commander Tab работает как ожидается
Last edited by ujos on Fri 25 Jun, 2021 18:55, edited 2 times in total.
User avatar
buniak_a_h
Posts: 4234
Joined: Sat 20 Apr, 2013 00:17
Location: Санкт-Петробад
Has thanked: 222 times
Been thanked: 642 times
Contact:

Навязчивое автодополнение

Post by buniak_a_h »

ujos wrote: Fri 25 Jun, 2021 18:50 Я так понимаю, что окно AutoCompletion должно создавать контекст и макрос для Tab должен работать в этом контексте.
Я не проверял, и неохота. Но мне казалось, что область AutoCompletion возникает при диалоге автодополнения. Т.е либо если включена автоматика и задана минимальная длина строки, то при превышении этой длины, либо после активации по CtrlSpace. А до тех пор Area=Shell
ujos
Posts: 220
Joined: Fri 27 Apr, 2012 15:10
Has thanked: 10 times

Навязчивое автодополнение

Post by ujos »

Эта область, как оказалось, называется "ShellAutoCompletion"
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Навязчивое автодополнение

Post by citRiks »

придумайте лучше как clink интегрировать c FAR-ом
или направление хоть подскажите :(
https://mridgers.github.io/clink/
https://github.com/mridgers/clink
В Clink основной кода на луа, но еще много C++ :bang:
там башевое автодополение, extensible через луа

PS
придумал как, в принципе просто, и без С++ хоть и обьем работы не самый маленький.
сам не доберусь, если кому интересно, обьясню что думаю как лучше
Last edited by citRiks on Wed 21 Jul, 2021 18:42, edited 2 times in total.
Post Reply

Return to “Предложения и идеи”