Я потел по вопросу выше. Ответ, который я собираюсь предоставить, взял меня некоторое время для соединения, но все еще кажется безнадежно примитивным и hacky по сравнению с тем, что можно было сделать, было завершение, которое будет перепроектировано, чтобы быть меньшим количеством staticky. Я почти боюсь спросить, существует ли некоторое серьезное основание, что логика завершения, кажется, полностью разведена от программы, для которой она завершается.
Я написал библиотеку командной строки (ее можно увидеть в scala trunk), которая позволяет переключать опцию "--bash". При запуске
./program --bash
она вычисляет файл завершения, записывает его в tempfile и выводит эхо
. /path/to/temp/file
на консоль. В результате вы можете использовать обратные символы, например, так:
`./program --bash`
и у вас будет завершение для "program" в текущей оболочке, поскольку она будет источником tempfile.
Для конкретного примера: проверьте scala trunk и запустите test/partest.