Go to file
Lucien Cartier-Tilet 674a89a590
All checks were successful
CI / build (26.3) (push) Successful in 2m57s
CI / build (27.2) (push) Successful in 2m53s
CI / build (28.2) (push) Successful in 2m56s
CI / build (29.1) (push) Successful in 2m55s
CI / build (snapshot) (push) Successful in 3m1s
fix: remove `message' left from debugging
2024-01-09 20:57:58 +01:00
.gitea/workflows Revert "chore: simplify tests workflow" 2023-12-29 16:20:31 +01:00
assets docs: add gif to Readme 2023-12-29 17:36:30 +01:00
.dir-locals.el feat: rename to quick-find-file, make it completing-read-agnostic 2023-11-05 22:18:23 +01:00
.gitignore feat: add CI 2023-12-07 19:20:31 +01:00
Eask feat: overhaul of this package's configuration 2023-12-29 16:16:31 +01:00
LICENSE feat: overhaul of this package's configuration 2023-12-29 16:16:31 +01:00
Makefile feat: overhaul of this package's configuration 2023-12-29 16:16:31 +01:00
quick-find-files.el fix: remove `message' left from debugging 2024-01-09 20:57:58 +01:00
README.org docs: add gif to Readme 2023-12-29 17:36:30 +01:00

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 cant 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! Lets say you often open files with a .org extension from your directory ~/org/, this package will try to find it insantly for you!

/phundrak/quick-find-files.el/media/branch/main/assets/quick-find-files.gif

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 Im 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 and fd are to search for files.
  • Search for multiple extensions within the same directory with a future :exts property in quick-find-files-dirs.
  • Exclude specific extensions when searching for all files with a future :ignored-exts property in quick-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.