Find files in a project quickly.
This program provides a couple methods for quickly finding any file in a given project. It depends on GNU find.
By default, it will automatically search file in project managed by Git. But you can easily switch to other types of projects.
- The only dependency is GNU find
- Works on Windows/Cygwin/Linux/Mac
- Furthing tweaking of GNU find through flag `ffip-find-options` is possible
Please install through melpa
It works out of the box for project using Git.
If you use other VCS (subversion, for example), insert below line into ~/.emacs:
(setq ffip-project-file ".svn")
- `M-x find-file-in-project` will start search immediately
- `M-x find-file-in-project-by-selected` use the your selected region as keyword to search. Or you need provide the keyword if no region selected.
Per project setup
;; if the full path of current file is under SUBPROJECT1 or SUBPROJECT2 ;; OR if I'm reading my personal issue track document, (when (ffip-current-full-filename-match-pattern-p "\\(/SUBPROJECT1\\|/SUBPROJECT2\\|issue-track.org\\)") ;; set the root directory into "~/projs/PROJECT_DIR" (setq-local ffip-project-root ("~/projs/PROJECT_DIR")) ;; well, I'm not interested in concatenated BIG js file (setq-local ffip-find-options "-not -size +64k") ;; for this project, I'm only interested certain types of files (setq-local ffip-patterns '("*.html" "*.js" "*.css" "*.java" "*.xml" "*.js")))
Specify root directory on Cygwin&Windows
(if (eq system-type 'windows-nt) (setq ffip-project-root "C:/Users/myname/projs/myproj1") (setq ffip-project-root "~/projs/myprojs1"))
This program has no performance issues with 50,000+ files if you follow EITHER of my following suggetions:
- Install Swiper and insert below code into your ~/.emacs:
(autoload 'ivy-read "ivy")
Then Swiper’s UI ivy will be used. That’s all you need to do.
- If you don’t like Swiper, the default Ido will be used. It might be slow for 50K files. The issue could be easily resolved by installing flx-ido. Flx-ido also replaces Ido’s default matching algorithm with a much better one. So it’s highly recommened to use it.