我喜欢代码搜索实用程序ack
。它很聪明,可以查看Makefile,但不知道scons使用的SConstruct和SConscript文件。如何将这些添加到ack将查看的文件中?
答案 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提供更轻松的支持。