Существует ли эквивалент Perl для ido-дополнения Emacs?
-
03-07-2019 - |
Вопрос
Я создал ряд вспомогательных функций для конкретной работы, которые могут быть полезны другим членам моей команды&mdash.Но я написал их все в Elisp Emacs, и конвертировать их из Notepad++ НЕ получится.
Итак, я думаю преобразовать функции в Perl.Без проблем.
За исключением того, что я все время использую ido-дополнение, чтобы ограничить ответы:
(setq client (ido-completing-read "Select a Client: " '("IniTrade" "HedgeCorp" "GlobalTech" "OCP") nil t))
РЕДАКТИРОВАТЬ:ido-completing-read похож на завершение-прочтение, за исключением того, что все параметры видимы и могут быть выбраны с помощью циклического нажатия [обычно клавиш со стрелками] или завершения ввода.В приведенном выше примере приглашение будет выглядеть так:
Select a Client: {IniTrade | HedgeCorp | GlobalTech | OCP}
выбор можно сделать для самого левого элемента, нажав RET или частично набрав (в этом случае все первые буквы уникальны, так что это все, что нужно, и соответствующий элемент станет самым левым).
nil в примере — неиспользуемый параметр, но «t» требует точного соответствия — например, пользователь должен сделать один из вариантов выбора.Функция возвращает строку, например «IniTrade».
Мои «вспомогательные функции» предназначены для внутренних нужд — открытия определенного журнала ошибок, восстановления пакета на сервере и т. д.Для этих операций пользователю необходимо указать тестовую или производственную среду, клиента, стадию и т. д.Почти во всех случаях это выборки строк, которые используются для создания другой команды оболочки.Если возвращается числовой элемент, его, в свою очередь, можно повторно преобразовать в строку, но поскольку выборки обычно представляют собой требуемую строку, было бы неплохо, если бы этот шаг можно было пропустить.[конец РЕДАКТИРОВАНИЯ]
Есть ли эквивалент Perl?я посмотрел Термин::Подсказка который предлагает нумерованное меню...самый близкий, который я нашел.Это не так красиво, как ido-дополнение, и мне все равно придется преобразовывать числовой результат обратно в строку (не такая уж большая проблема;просто раздражает).
Составляя это, я заметил, что использовал термин «меню», поэтому поискал еще немного и придумал Термин::Меню. Я еще не пробовал этот.
Решение
Term::ReadLine может делать то, что вы ищете, хотя это, вероятно, больше похоже на «завершение чтения», чем на «идо-завершение чтения».