Как я могу изменить тип в ack?

Я знаю, как установить новый тип. Что я хочу сделать, так это изменить существующий тип. Я хочу добавить файлы haml в тип ruby. Вероятно, я мог бы использовать --set-type и переопределить тип ruby, но я не знаю, как его переопределить и по-прежнему включать файлы с именем «Rakefile» и файлы, первая строка которых указывает, что это исполняемый скрипт Ruby (первая строка соответствует /^#!.*\bruby/)

Вот существующая документация для типа ruby:

ruby         .rb .rhtml .rjs .rxml .erb .rake .spec; Rakefile; First line matches /^#!.*\bruby/

ack
person Huliax    schedule 15.02.2021    source источник


Ответы (1)


Есть три аргумента, которые позволяют вам работать с определениями типов. От 1_:

File type specification:
  --type-set=TYPE:FILTER:ARGS   Files with the given ARGS applied to the given
                                FILTER are recognized as being of type TYPE.
                                This replaces an existing definition for TYPE.
  --type-add=TYPE:FILTER:ARGS   Files with the given ARGS applied to the given
                                FILTER are recognized as being type TYPE.
  --type-del=TYPE               Removes all filters associated with TYPE.

Если все, что вы хотите сделать, это добавить .haml файлов в существующую спецификацию Ruby, используйте

--type-add=ruby:ext:haml

Если вы хотите увидеть, как определяются существующие типы, используйте --dump.

$ ack --dump | ack ruby
  --type-add=ruby:ext:rb,rhtml,rjs,rxml,erb,rake,spec
  --type-add=ruby:firstlinematch:/^#!.*\bruby/
  --type-add=ruby:is:Rakefile
person Andy Lester    schedule 15.02.2021