[Eric] Feature request/suggestion (feature modification suggestion, really)

Mike C. Fletcher mcfletch at vrplumber.com
Fri May 6 17:07:44 BST 2016


Hi Detlev (and everyone else),

There's a feature I keep seeing in Atom and other IDEs that is *really* 
helpful for jumping around in larger (10,000+ file) projects. It's a 
quick-file-search-and-open dialog. Basically it's the functionality in 
File | Search File, but modelled as a speed-optimized keyboard-centric 
searching/winnowing process.

That is, you pop up the dialog with a key-sequence and start typing 
(fragments from) the name of the file, so, for instance, if I wanted to 
find "subproject/subproject/moo/models.py" I would type something like this:

ctrl-alt-f
moo models subp
<down> (to select the second match)
<enter>

The search results would update as I typed "moo" to have all files with 
the substring "moo" in their paths (with those that have moo as a full 
path component sorted first, hopefully), then when I start typing 
"models" would further restrict the set to those items that contain both 
moo and models, and when I start typing subp(roject) the search set gets 
down to 1-2 entries and I just select the entry with the arrows and hit 
enter (again, without leaving the search box or using the mouse).

When results are displayed, the first item is always selected, and 
hitting <enter> opens it, while up/down arrows select other entries 
(again, without needing to switch focus from the search box).

The changes from current File Search suggested are:

  * don't require file extension filtering
      o particularly when you have a *lot* of no-file-extension files
        that restriction isn't all that useful
      o if the file-extension widget is empty, ignore it
  * do simple sub-string matching on the set of file-paths known to the
    project
      o do *not* require a full-name match on the terms, but *rank*
        those result higher
          + allow e.g. "subproject/moo" to find everything that has that
            sequence of characters in its path
      o this should likely be done on in-memory structures only, *not*
        on the file system
  * treat space-delimited fragments as AND'd search terms
      o again, ease of typing being the rationale here, not something
        involved
  * allow hitting <up> and <down> to change the selected item from the
    search box
  * allow hitting <enter> in the search box to open the
    currently-selected file

Nice enhancements:

  * sort results based on relevance ranking (optional) so e.g. having a
    full path-unit == to a search term sorts before having it as a
    sub-string of a path unit
  * if there are no matches (or less than a threshold, such as a full
    screen of results), use fuzzy-matching (soundex, ledit distance,
    etc) to try to find other possible matches (always sorted below
    absolute matches)
  * as you type, do autocomplete on the path fragments we know, so "sub"
    would autocomplete to the longest common fragment that starts with
    "sub" (a-la bash or similar shell)

With that done, we could also do the following:

  * on an import statement, launching file-search could pre-populate
    with the import name (and with "from" imports, the upper level
    module, with . translated to /)
  * on other fragments of code, launching file-search could pre-populate
    with the current token

Anyway, this is just a suggestion, and feel free to say no.

Thanks for all the great work on Eric,
Mike

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.riverbankcomputing.com/pipermail/eric/attachments/20160506/b2c11d74/attachment.html>


More information about the Eric mailing list