Существует ли Perl-эквивалент Edocs для ido-дополнения? - PullRequest
2 голосов
/ 03 января 2009

Я создал ряд вспомогательных функций, специфичных для работы, которые могут быть полезны для других членов моей команды & mdash. Но я написал их все в Elisp Emacs, и заставить их конвертировать из Notepad ++ НЕ произойдет.

Итак, я думаю преобразовать функции в Perl. Нет проблем.

За исключением того, что я все время использую ido-завершение, чтобы ограничить ответы:

  (setq client (ido-completing-read "Select a Client: " '("IniTrade" "HedgeCorp" "GlobalTech" "OCP") nil t))

РЕДАКТИРОВАТЬ: ido-completeting-read аналогична complete-read , за исключением того, что все параметры видимы и могут быть выбраны с помощью циклического перемещения [обычно клавиш со стрелками] или завершения ввода. В приведенном выше примере подсказка будет выглядеть как

  Select a Client: {IniTrade | HedgeCorp | GlobalTech | OCP}

выбор можно сделать для самого левого элемента, нажав RET или частично введя (в этом случае все первые буквы уникальны, так что это все, что нужно, и соответствующий элемент станет левым самый).

nil в этом примере - неиспользуемый параметр, но для «t» требуется точное совпадение - например, пользователь должен сделать один из вариантов выбора. Функция возвращает строку, например «IniTrade».

Мои «вспомогательные функции» предназначены для внутренних нужд - открытия определенного журнала ошибок, восстановления пакета на сервере и т. Д. Для этих операций пользователю необходимо указать тестовую или производственную среду, клиент, этап и т. Д. В почти во всех случаях это выборки строк, которые используются для построения другой команды оболочки. Если возвращается числовой элемент, который, в свою очередь, может быть преобразован в строку, но поскольку выборки обычно являются обязательной строкой, было бы неплохо пропустить этот шаг. [конец EDIT]

Есть ли эквивалент Perl? Я посмотрел на Term :: Prompt , который предлагает нумерованное меню ... самое близкое, что я нашел. Это не так красиво, как завершение ido, и мне все равно придется преобразовывать числовой результат обратно в строку (это не главная проблема; просто раздражает).

При составлении этого текста я заметил, что использовал термин «меню», поэтому провел еще несколько поисков и нашел Term :: Menus. Я еще не пробовал этот вариант.

1 Ответ

2 голосов
/ 05 января 2009

Term :: ReadLine может делать то, что вы ищете, хотя, вероятно, это больше похоже на «завершение-чтение», чем «ido-завершение-чтение».

...