title: Emacs recursive project search
body: <p>I am switching to Emacs from TextMate.  One feature of TextMate that I would really like to have in Emacs is the "Find in Project" search box that uses fuzzy matching.  Emacs sort of has this with <a href="http://www.emacswiki.org/emacs/InteractivelyDoThings" rel="noreferrer">ido</a>, but ido does not search recursively through child directories.  It searches only within one directory.</p>
  
  <p>Is there a way to give ido a root directory and to search everything under it?</p>
  
  <p><strong>Update:</strong></p>
  
  <p>The questions below pertain to find-file-in-project.el from Michał Marczyk's answer.</p>
  
  <p>If anything in this message sounds obvious it's because I have used Emacs for less than one week. :-)</p>
  
  <p>As I understand it, project-local-variables lets me define things in a .emacs-project file that I keep in my project root.</p>
  
  <p>How do I point find-file-in-project to my project root?</p>
  
  <p>I am not familiar with regex syntax in Emacs Lisp.  The default value for ffip-regexp is:</p>
  
  <pre><code>".*\\.\\(rb\\|js\\|css\\|yml\\|yaml\\|rhtml\\|erb\\|html\\|el\\)"
  </code></pre>
  
  <p>I presume that I can just switch the extensions to the ones appropriate for my project.</p>
  
  <p>Could you explain the ffip-find-options?  From the file:</p>
  
  <p>(defvar ffip-find-options
    ""
    "Extra options to pass to `find' when using find-file-in-project.</p>
  
  <p>Use this to exclude portions of your project: \"-not -regex \\".<em>vendor.</em>\\"\"")</p>
  
  <p>What does this mean exactly and how do I use it to exclude files/directories?</p>
  
  <p>Could you share an example .emacs-project file?</p>