ack - привязка фактического имени файла к типу файла - PullRequest
4 голосов
/ 01 марта 2012

Для меня ack - это необходимый набор (его псевдоним a, и я использую его миллион раз в день). В основном в нем есть все, что мне нужно, поэтому я полагаю, что это поведение скрыто и я просто не могу его найти.

Я бы хотел иметь возможность ограничить его определенными типами файлов, используя тип. проблема в том, что эти файлы имеют полное имя файла, а не расширение. Например, я хотел бы ограничить его сборкой файлов для buildr, чтобы я мог искать их с помощью --buildr (подобное применимо для mvn poms). В моем .ackrc

определено следующее
--type-set=buildr=buildfile,.rake

Проблема в том, что buildfile - это полное имя файла, а не расширение, и я хотел бы, чтобы ack полностью совпадало с этим именем. Однако, если я посмотрю на типы, связанные с 'buildr', это покажет, что .buildfile - это расширение, а не целое имя файла.

--[no]buildr     .buildfile  .rake

Возможность ограничиться определенным именем файла была бы очень полезной для меня, поскольку существует множество вариантов использования xml (например, ant build.xml или mvn pom.xml), для которых оно идеально подходит. Я вижу, что двоичные файлы, Makefiles и Rakefiles имеют специальную конфигурацию типов, и, возможно, это правильный путь. Я действительно хотел бы иметь возможность сделать это в ack, если это возможно, прежде чем прибегать к пользовательским функциям. Кто-нибудь знает, возможно ли это?

1 Ответ

4 голосов
/ 01 марта 2012

Нет, вы не можете это сделать.ack 1.x использует только расширения для определения типов файлов.У ack 2.0 будут гораздо более гибкие возможности, где вы сможете делать такие вещи, как:


# There are four different ways to match
# is: Match the filename exactly
# ext: Match the extension of the filename exactly
# match: Match the filename against a Perl regular expression
# firstlinematch: Match the first 80 characters of the first line
# of text against a Perl regular expression. This is only for
# the --type-add option.


--type-add=make:ext:mk
--type-add=make:ext:mak
--type-add=make:is:makefile
--type-add=make:is:gnumakefile


# Rakefiles http://rake.rubyforge.org/
--type-add=rake:is:Rakefile

# CMake http://www.cmake.org/
--type-add=cmake:is:CMakeLists.txt
--type-add=cmake:ext:cmake

# Perl http://perl.org/
--type-add=perl:ext:pod
--type-add=perl:ext:pl
--type-add=perl:ext:pm
--type-add=perl:firstlinematch:/perl($|\s)/

Вы можете увидеть, что делает разработка на ack 2.0, на https://github.com/petdance/ack2. Я бы с удовольствиемчтобы получить вашу помощь.

...