在Emacs for Windows中以shell模式确认显示没有输出

Windows 7 64位(例如使用StrawberryPerl )上安装ack之后,我可以从Windows的cmdterminal运行ack

但是,如果我尝试在shell模式(即在Mx shell缓冲区)中使用Emacs中的ack ,我不会输出(尽pipe所有其他cmd命令都可以正确打印)。

有趣的是,如果我单独运行确认 (即没有参数),我会正确打印确认使用信息。 换句话说,当我使用参数运行时(即使ack应该打印命中我的查询,因为我已经在cmd下进行检查), ack在我的Emacs shell中没有输出。

缺乏输出使我认为ack正在等待input(尽pipe我提供了参数)。 我尝试了在我的.emacs文件中提供的代码片段(这似乎是为了在文件系统或STDIN中search时遇到困惑而devise的),但问题仍然存在。

对于如何解决这个问题,有任何的build议吗?

谢谢

ack正在等待stdin,错误地认为它是在过滤模式下。 作为解决方法,将<NUL添加到命令的末尾,关闭其标准输入。

仅供参考 – 在Windows下的emacs shell中的perl调试器中运行“ack”,显示它停在这里:

 main::print_matches_in_resource(c:/Strawberry/perl/site/bin/ack:454): 454: while ( <$fh> ) { 

你检查过ack.el吗?

这就是我在Windows 7上使用的方式。它使得使用ack更容易。 默认情况下,建议在点上搜索单词。 而且你通过编译得到输出,所以你可以很容易地跳转到包含匹配的文件和行。