6

我喜欢代码搜索实用程序ack。浏览 Makefile 足够聪明,但不知道 scons 使用的 SConstruct 和 SConscript 文件。如何将这些添加到 ack 将查看的文件中?

4

3 回答 3

3

这是一个将 SCons 文件视为 make 文件的补丁:

--- ~/bin/ack-old 2011-06-01 15:43:51.000000000 -0600
+++ ~/bin/ack     2011-06-01 15:42:09.000000000 -0600
@@ -1583,6 +1583,8 @@

     return 'skipped' unless is_searchable( $basename );

+    return ('python',TEXT)      if $basename eq 'SConstruct' || $basename eq 'SConscript';
+
     my $lc_basename = lc $basename;
     return ('make',TEXT)        if $lc_basename eq 'makefile' || $lc_basename eq 'gnumakefile';
     return ('rake','ruby',TEXT) if $lc_basename eq 'rakefile';
于 2011-06-01T21:51:20.003 回答
2

这不能使用 ack 的类型集来完成。Makefile 和 Rakefile在源代码中是硬编码的。$HOME/.ackrc我认为您可以通过修改和添加来添加 scons 类型--type-set=scons=SConstruct,SConscript,但这将搜索以“.SConstruct”或“.SConscript”结尾的文件。

最简单的解决方法是将 -a(所有文件类型)标志添加到 ack。

如果您只想 ack 搜索并能够以某种方式过滤 SConstruct,那么您可以添加#!/usr/bin/python为 SConstruct 文件的第一行。然后 Ack 会将文件视为 python 源代码,您可以使用--python.

于 2010-12-28T19:16:30.203 回答
1

一个新的ack2正在开发中,它将允许在 .ackrc 文件中进行精确的文件匹配。这将使对 Scons 和 Jam 的支持更加容易。

于 2012-01-26T19:49:57.357 回答