2010-12-28 17 views
6

Uwielbiam narzędzie wyszukiwania kodu ack. Jest wystarczająco sprytny, aby przejrzeć pliki Makefile, ale nie wie o plikach SConstruct i SConscript, których używa scons. Jak mogę dodać te pliki do plików, które będą wyglądać?Dodaj pliki SCons do wyszukiwania AC

Odpowiedz

2

Nie można tego zrobić za pomocą zestawów znaków ack. Makefiles and Rakefiles are hard-coded w źródle. Myślałem, że możesz dodać typ scons, modyfikując $HOME/.ackrc i dodając --type-set=scons=SConstruct,SConscript, ale to będzie szukać pliku, który kończy się na ".SConstruct" lub ".SConscript".

Najprostszym rozwiązaniem jest dodanie flagi -a (wszystkie typy plików) do potwierdzenia.

Jeśli chcesz, aby ack szukał i mógł filtrować SConstruct w jakiś sposób, możesz dodać #!/usr/bin/python jako pierwszą linię pliku SConstruct. Następnie Ack potraktuje plik jako kod źródłowy Pythona i można go filtrować przy pomocy --python.

+0

To wydaje się działać tylko dla plików .scons, a nie SConstruct lub SConscript. – jblocksom

+0

Gah, masz rację. Wystarczy sprawdzić źródło - "makefile" i "rakefile" są zakodowanymi wyjątkami. – richq

+0

Dzięki za to. Udało mi się zmodyfikować moją lokalną wersję, aby dodać SConstruct i SConscript w taki sam sposób, w jaki są tam pliki Makefile, może wyślę łatkę. Muszę powiedzieć, że nie szaleję za decyzją o projektowaniu sconsów, aby używać rozszerzeń plików w/out, chociaż widziałem inne systemy kompilacji, które robią to samo. – jblocksom

3

Oto poprawkę, która traktuje pliki SCons jak uczynić pliki:

--- ~/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'; 
+0

Używam pakietu deb wersji 1.92 na Ubuntu 10.04, a ta sama łatka może być ręcznie zastosowana do /usr/share/perl5/App/Ack.pm na linii 476. –

1

Nowa ack2 jest w rozwoju, który umożliwi dokładne dopasowanie pliku w pliku .ackrc. To ułatwi obsługę Scons i Jam.

+0

Zobacz http: // stackoverflow. com/questions/9508431/ack-binding-an-actual-file-name-to-a-filetype - więcej informacji na ten temat. –

Powiązane problemy