.gitea/workflows | ||
assets | ||
.dir-locals.el | ||
.gitignore | ||
Eask | ||
LICENSE | ||
Makefile | ||
quick-find-files.el | ||
README.org |
quick-find-files.el
Introduction
quick-find-files.el
is a utility package for all of you out there that
often find themselves looking for the right file in the right place,
but you can’t be bothered to have a specific keybinding for that
particular file for one reason or another.
Now, you have a utility for finding files by directory with an
associated extension! Let’s say you often open files with a .org
extension from your directory ~/org/
, this package will try to find it
insantly for you!
Motivation
I often find myself opening a specific set of files, but they are too numerous to make each one of them a keybinding. Well, I actually could, but I end up with way too much for my taste. In fact, at the time I’m writing this, I would have to manage a hundred keybindings for my various org files alone! Unmanageable!
Installation
Prerequisites
First of all, make sure either find
(which is fairly standard, it
should be there by default) or fd
are available on your system, as
this package relies on one or the other depending on your choices
(find
by default). On some systems, fd
is installed as fdfind
or
similar, you may need to configure quick-find-files-fd-executable
if
you wish to use it.
Local installation
The vanilla way of installing this package would be to clone this
repository somewhere in your Emacs’ load-path
, or add the following
line to your Emacs configuration:
(add-to-list 'load-path "/path/to/quick-find-files.el")
Then add the following lines to your configuration:
(require 'quick-find-files)
Straight + use-package
My personnal choice in terms of installing packages is using straight
with use-package. Here is my own configuration of quick-find-files.el
:
(use-package quick-find-files
:defer t
:ensure t
:straight (quick-find-files :type git
:host github
:repo "Phundrak/quick-find-files.el")
:custom ; Depending on your preferences, of course
(quick-find-files-program 'fd)
(quick-find-files-dirs '((:dir "~/org" :ext "org" :ignored ("~/org/config"))
(:dir "~/.emacs.d/lisp" :ext "el")
(:dir "~/Documents/Work/" :ignored ("dir1" "report.docx")))))
Other methods
I am aware other methods are available for installing packages in
Emacs, such as quelpa
or Spacemacs’ and DoomEmacs’ package managers,
however I am yet unsure how to install this package with them. If you
do, feel free to submit a PR with new instructions!
Customizing
A couple of variables can be editer by the user in order to configure
quick-find-files.el
:
-
quick-find-files-program
- The program to use in order to find your
files. The two currently supported options are
'find
and'fd
, the former being the default choice. -
quick-find-files-fd-executable
- Specify the executable to use when
using the option
'fd
. -
quick-find-files-find-executable
- Specify the executable to use
when using the option
'find
. -
quick-find-files-dirs
-
Specify in which directory the package should search for files. This is a list of property lists which must at least contain a
:dir
property.An optional
:ext
property indicates which file extension to look for in this directory and will exclude all other extensions. Be careful, this may be case-sensitive.An optional
:ignored
property indicates a list of paths the package will filter out. Paths in this property can be either files or whole directories. If a path is relative, the package will consider the:dir
directory to be its parent path. For instance, in the code below, the package will filter out the directory~/Documents/Work/CVEs
and the file~/Documents/Work/report.docx
when searching in~/Documents/Work
.'((:dir "~/org" :ext "org" :ignored ("~/org/config")) (:dir "~/.emacs.d/lisp" :ext "el") (:dir "~/Documents/Work" :ignored ("CVEs" "report.docx")))
-
quick-find-files-dirs-and-exts
-
DEPRECATED, use
quick-find-files-dirs
instead.List of pairs between directories and extensions. For one directory, the program will be searching recursively all files with the specified extension. Possible value:
'(("~/org" . "org") ("/tmp" . "html") ("~/code/C" . "h"))
This specific example will recursively search for all
.org
files in~/org
, all.html
files in/tmp
, and all.h
files in~/code/C
.
Upcoming changes
- Plans exist to customize the maximum depth at which
find
andfd
are to search for files. - Search for multiple extensions within the same directory with a
future
:exts
property inquick-find-files-dirs
. - Exclude specific extensions when searching for all files with a
future
:ignored-exts
property inquick-find-files-dirs
.
License
quick-find-files.el
is available under the GNU GPL-3.0 license. You
can find the full text in LICENSE.