添加SCons文件到ack搜索

时间:2010-12-28 17:25:08

标签: scons ack

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

3 个答案:

答案 0 :(得分: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';

答案 1 :(得分:2)

使用ack的类型集无法做到这一点。来源Makefiles and Rakefiles are hard-coded。我认为您可以通过修改$HOME/.ackrc并添加--type-set=scons=SConstruct,SConscript来添加scons类型,但这会搜索以“.SConstruct”或“.SConscript”结尾的文件。

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

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

答案 2 :(得分:1)

正在开发一个新的ack2,它将允许在.ackrc文件中进行精确的文件匹配。这将为Scons和Jam提供更轻松的支持。