Ack в режиме оболочки в Emacs для Windows не показывает вывод - PullRequest
4 голосов
/ 26 декабря 2010

После установки ack в Windows 7 64-bit (например, с использованием StrawberryPerl ) я могу запустить ack с терминала cmd в Windows.

Однако, если я попытаюсь использовать ack в Emacs в режиме Shell (то есть в буфере M-x shell), я не получу вывод (все остальные cmd команды печатаются правильно, хотя).

Интересно, что если я запускаю только ack - то есть без аргументов - я получаю информацию об использовании ack , напечатанную правильно.Другими словами, ack не выводит вывод в моей оболочке Emacs, когда я запускаю его с аргументами (даже если ack должен печатать обращения для моих запросов, как я проверил в cmd).

Отсутствие вывода заставляет меня думать, что ack ждет ввода (хотя я и приводил аргументы для него).Я попробовал фрагмент кода, предложенный здесь в моем файле .emacs (который, кажется, разработан, чтобы помочь ack, когда он путается между поиском в файловой системе или STDIN), но проблема все еще сохраняется.

Есть предложения как это исправить?

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 января 2016

ack ожидает на стандартный ввод, неправильно думая, что это в режиме фильтра. В качестве обходного пути добавьте <NUL в конец команды, закрыв ее стандартный ввод.

FYI - Запуск «ack» в отладчике perl внутри оболочки emacs в Windows показывает, что он останавливается здесь:

main::print_matches_in_resource(c:/Strawberry/perl/site/bin/ack:454):
454:            while ( <$fh> ) {
1 голос
/ 18 июля 2011

Вы проверили ack.el ?

Это то, что я использую в Windows 7. Это облегчает использование ack. По умолчанию предлагается поиск слова в точке. И вы получаете вывод через компиляцию, так что вы можете легко перейти к файлу и строке, содержащей совпадение.

...