Для поиска слов есть helm-ag. Для поиска файлов сейчас используется helm-projectile-find-file-dwim. Вот с ним как раз и проблемы c фильтрованием(к примеру отфильтровать __init__.py или директорию) . Во-первых, при
(setq projectile-indexing-method 'alien) (что проставлено по дефолту)
projectile смотрит в .gitignore или .hgignore. Т.е, чтобы исключить __init__.py, мне нужно его добавить в .gitignore. Но я же не могу этого сделать, верно? Так же при alien игнорируется .projectile с инструкциями вида
- /path/to/somefile
При этом игнорируются переменные вида
projectile-globally-ignored-directories
projectile-globally-ignored-files
projectile-globally-ignored-file-suffixes
При
(setq projectile-indexing-method 'native)
Используется бекенд для поиска find
find . -type f -print0
projectile-globally-ignored-directories
projectile-globally-ignored-files
projectile-globally-ignored-file-suffixes
К тому же нельзя переопределить бекенд поиска с помощью projectile-generic-command, допустим, на ag
(setq projectile-generic-command "ag . --hidden -l -0 --nocolor --nogroup --ignore '.env' --ignore '.hg' --ignore 'node_modules' --ignore '.gitignore' --ignore '__init__.py'")
Но при этом бекенд можно переопределить на
(setq projectile-indexing-method 'alien)
(setq projectile-indexing-method 'hybrid)
Но при этом при поиске файлов в выдаче отсутствует начальный слеш у файлов т.е
home/some/some/filename
home/some/some/filename1
Но опять же при этом игнорируется
.projectile
projectile-globally-ignored-directories
projectile-globally-ignored-files
projectile-globally-ignored-file-suffixes
Казалось бы, простая задача: проставить бекенд и профильтровать выдачу, но не получается это сделать. Для чего это всё?
- я хочу использовать ag для поиска файлов т.к это быстрей. Если можно быстрей, зачем использовать то, что медленней(find)
- при поиске мне не хотелось видеть в выдаче некоторые директории и файлы(допустим __init__.py)
- желательно, чтобы можно было и глобально и локально объявлять exclud'ы, чтобы можно было более гибко рулить всем этим(к примеру, в .projectile исключать только то, что конкретно в этом проекте, а в global исключить .env)