Добавить файлы SCons в ack поиски - PullRequest
6 голосов
/ 28 декабря 2010

Мне нравится утилита поиска кода ack.Он достаточно умен, чтобы просматривать Makefiles, но не знает о файлах SConstruct и SConscript, которые использует scons.Как мне добавить их в файлы, которые будут смотреть ack?

Ответы [ 3 ]

3 голосов
/ 02 июня 2011

Вот патч, который обрабатывает файлы 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';
2 голосов
/ 28 декабря 2010

Это невозможно сделать с помощью наборов типов ack. Makefiles и Rakefiles имеют жесткую кодировку в источнике. Я думал, что вы могли бы добавить тип scons, изменив $HOME/.ackrc и добавив --type-set=scons=SConstruct,SConscript, но это будет искать файл, который заканчивается на «.SConstruct» или «.SConscript».

Самый простой обходной путь - добавить флаг -a (все типы файлов) в ack.

Если вы просто хотите, чтобы ack осуществлял поиск и мог каким-то образом фильтровать SConstruct, вы можете добавить #!/usr/bin/python в качестве первой строки файла SConstruct. Затем Ack будет рассматривать файл как исходный код Python, и вы можете фильтровать с помощью --python.

1 голос
/ 26 января 2012

В разработке находится новый ack2 , который позволит точно сопоставить файл в файле .ackrc. Это упростит поддержку Scons и Jam.

...