When using stock find-file
or counsel-find-file
, is there a way to ignore certain files that I almost never want to open by hand? Examples include .elc
files and backups.
2 Answers
Yes, use counsel-find-file-ignore-regexp
.
For the simple example you provide use
(setq counsel-find-file-ignore-regexp "\\.elc\\'")
The are more examples in the docstring for that variable.
-
-
To ignore paths, check
counsel-file-jump-args
- this gives a lot of control over what is found in the first place. Commented May 18, 2023 at 4:07
While counsel-find-file-ignore-regexp
can be used to exclude filenames, you can configure the find command to exclude paths with greater control as it has all the options available to find
.
For example, this command excludes __pycache__
and directories beginning with a .
including .git
& .mypy_cache
.
This example finds all *.el
, *.org
& Makefiles, excluding .*
(.git
for e.g.).
(setq counsel-file-jump-args
(list "."
"-not" "-path" "*/\\.*"
"-not" "-path" "./*__pycache__/*"
"(" "-name" "*.el" "-o" "-path" "*.org" "-o" "-path" "**/Makefile" ")"
"-type" "f"
"-print"))
You can experiment in the command line to check which files will be found:
find . -not -path './*__pycache__/*' \
-not -path '*/\\.*' \
"(" -name "*.el" -o -path "*.org" -o -path "**/Makefile" ")" \
-type "f" -print
completion-ignored-extensions
doesn't work in that context? That's what ordinaryfile-name-completion
respects. See (elisp)File Name Completion and (emacs)Completion Options. Of course, that's just extensions...counsel-find-file-ignore-regexp
, one of the options is to usecompletion-ignored-extensions
.