diff --git a/Ack.pm b/Ack.pm index 9658d77b..5f0ead5b 100644 --- a/Ack.pm +++ b/Ack.pm @@ -341,6 +341,7 @@ File inclusion/exclusion: -n, --no-recurse No descending into subdirectories --[no]follow Follow symlinks. Default is off. -k, --known-types Include only files of types that ack recognizes. + -K, --no-known-types Include all files types. --type=X Include only X files, where X is a recognized filetype. diff --git a/ConfigLoader.pm b/ConfigLoader.pm index ff2adf5c..f8f34283 100644 --- a/ConfigLoader.pm +++ b/ConfigLoader.pm @@ -241,6 +241,10 @@ sub process_filetypes { push @{ $opt->{'filters'} }, @filters; }; + $additional_specs{'K|no-known-types'} = sub { + @{ $opt->{'filters'} } = (); + }; + return \%additional_specs; } diff --git a/ack b/ack index 0c4c2bfa..d36d8968 100755 --- a/ack +++ b/ack @@ -1335,6 +1335,12 @@ identically to file type filters as seen in L. Limit selected files to those with types that ack knows about. This is equivalent to the default behavior found in ack 1. +=item B<-K>, B<--no-known-types> + +Do not limit selected files to those with types that ack knows about. This is +the default behavior found in ack 2, but this allows you to override an earlier +specification of -k or --known-types + =item B<--lines=I> Only print line I of each file. Multiple lines can be given with multiple diff --git a/t/ack-no-known-types.t b/t/ack-no-known-types.t new file mode 100644 index 00000000..56f83e5c --- /dev/null +++ b/t/ack-no-known-types.t @@ -0,0 +1,67 @@ +#!perl + +use strict; +use warnings; + +use File::Find; +use Test::More tests => 2; + +use lib 't'; +use Util; + +prep_environment(); + +my @files = split "\n", # using qw() produces the warning "Possible attempt to put comments in qw() list" +qq(t/swamp/0 +t/swamp/c-header.h +t/swamp/c-source.c +t/swamp/CMakeLists.txt +t/swamp/crystallography-weenies.f +t/swamp/example.R +t/swamp/file.bar +t/swamp/file.foo +t/swamp/fresh.css +t/swamp/groceries/another_subdir/fruit +t/swamp/groceries/another_subdir/junk +t/swamp/groceries/another_subdir/meat +t/swamp/groceries/fruit +t/swamp/groceries/junk +t/swamp/groceries/meat +t/swamp/groceries/subdir/fruit +t/swamp/groceries/subdir/junk +t/swamp/groceries/subdir/meat +t/swamp/html.htm +t/swamp/html.html +t/swamp/incomplete-last-line.txt +t/swamp/javascript.js +t/swamp/lua-shebang-test +t/swamp/Makefile +t/swamp/Makefile.PL +t/swamp/MasterPage.master +t/swamp/not-an-#emacs-workfile# +t/swamp/notaMakefile +t/swamp/notaRakefile +t/swamp/notes.md +t/swamp/options-crlf.pl +t/swamp/options.pl +t/swamp/parrot.pir +t/swamp/perl-test.t +t/swamp/perl-without-extension +t/swamp/perl.cgi +t/swamp/perl.handler.pod +t/swamp/perl.pl +t/swamp/perl.pm +t/swamp/perl.pod +t/swamp/pipe-stress-freaks.F +t/swamp/Rakefile +t/swamp/Sample.ascx +t/swamp/Sample.asmx +t/swamp/sample.asp +t/swamp/sample.aspx +t/swamp/sample.rake +t/swamp/service.svc +t/swamp/stuff.cmake); + +ack_sets_match( [ '--no-known-types', '-f', 't/swamp' ], \@files, '--no-known-types test' ); + +ack_sets_match( [ '-K', '-f', 't/swamp' ], \@files, '-K test' );