Thursday, July 5, 2007

Status: Improving Eclipse Search

Official name: Eclipse search plugin: providing a better, faster, more relevant Eclipse search

July 5th

Since my last blog entry about the project, there've been changes in the main goals of the project after discussion with my mentor Francois Granade and Daniel Megert.

Here are the current goals of this project:

General Goal:

  • Unifying "Search" facilities so that there won't be 3 different search (and replace) functionalities in Eclipse

Specific Goals:

  • Unifying Ctrl+F (Find/Replace dialog) and Ctrl+J (Incremental Search) by mostly behaving like Ctrl+J. Providing better UI utilization by not showing modal dialogs if the user doesn't request wider options. Summary of the idea: Firefox-style "Find" with enhancements. = a lightweight Find/Replace. Our main goal here is providing all functionality available in Ctrl+F with this lightweight Find/Replace. Here's the related Bugzilla entry:
  • Providing "bridges" between Ctrl+F and Ctrl+H. This means carrying query information and search parameters back and forth between them when it's possible. --- To explain it better, it doesn't mean "sharing" input/settings, it is enabling the user to transfer "Find/Replace" input/settings to "Search" easily and extend his/her current search scope & query.
  • Investigate better presentation of the search results in Ctrl+H ( adding an alternative view like Problems view - results in a table - might be a good idea to show result lines and numbers, paths etc. )

Current Progress

I'm working on a lightweight Find/Replace ( first Specific Goal above ) right now. I've converted IncrementalFind's Label widget on the status bar to a Text widget and using IFocusService I've managed to give cut/copy/paste input to this Text widget when focused.

For this lightweight Find/Replace, I've tried to create a prototype figure and attached it the Bugzilla entry What I have in mind was basically a "Find" field appearing on the statusbar first Ctrl+F and when the user presses Ctrl+F again, "advanced feature" set appears as a menu above the status bar showing necessary checkboxes,parameters etc. but this prototype figure and behaviour is open to change.

After adjusting the behaviour of the code a bit , I'm going to work on the floating menu that will show up when the user requests "advanced Find/Replace features" next week.

I've created a feature and an update site for the project but even though the feature exports fine, when the feature is installed on a new Eclipse installation, Eclipse doesn't start. I've also tried to create a Plugin Fragment project first (since I've made all my modifications to org.eclipse.ui.workbench.texteditor), and then create a Feature & Update Site for it. This time, everything worked fine except that my changes to org.eclipse.ui.workbench.texteditor didn't show up in the new Eclipse installation.

I've committed my work as a patch to "soc-search" module in "eclipse-incub". It's very primitive right now but you can checkout anytime and see what I'm doing. First take a look at readme.txt to see how to build the project.

Repository path: /cvsroot/eclipse-incub
Module name: soc-search

Feel free to comment here or on Bugzilla. Thank you for your time and feedback.


Eugene Kuleshov said...

Cool! Though I'd say that search bar would work better if attached to the editor and not the status bar.

Maarten Meijer said...

I agree with Eugene fully. The command key shows and selects the field attached to the editor and search commences as soon as 3 letters are typed.
Folding and unfolding only the relevant bits of code as the search zooms in.
Also the search field should use the new search style, not the plain text style.

bronson said...

Awesome!! I can't wait until incremental search is the default. Current Control-J is an embarrasing hack.

I've never understood why Eclipse search requires both dialog boxes and custom views just to do the simplest search... I'm very glad to hear that searching will be made much more straightforward. I'm excited you're doing this... Eclipse search has sucked for far too long.

Mark said...

I really appreciate this improvements. In my RCP-application I integrated a similar search-widget in the coolbar. Would it be the best to let the programmer choose, where he wants to place the widget?
A database-search or other should also be possible with the new search.

Emilio Monti said...

What it would be very useful to me is a "search toolbar” close to the “Google toolbar” with highlighting of different colors for different patterns, and a grep-like output.

I started to sketch the idea in a plugin:

Schmendrick said...

sounds great!
coming from Visual Studio one of the few things in Eclipse that really bother me are the strange ways to search.
Having a Firefox like help may make it easier

Holger said...

@Eugen+Maarten: Find is not available for editors only, but can also be used in views (i.e. Console view).

Use case: looking for specific output in Console (where it will be written) and in the editor (the code which generates output). Do you want to enter search string twice?

I'm dreaming about a search scope "all parts (which support Find)"...

+1 for status bar (maybe it could be left-aligned)

magomarcelo said...

I would love the ability to search within a project directory tree skipping the configuration of a working set I would need only for that search

Mateus Machado said...

great! I have been looking for this! But does anybody have a 100% solid solution for this right now? Thanks