Skip to main content

Notice: This Wiki is now read only and edits are no longer possible. Please see: for the plan.

Jump to: navigation, search

Eclipse search plugin: providing a better, faster, more relevant Eclipse search.

Student: Çağatay Çallı (IRC: kynes)

Mentor: Francois Granade (IRC: farialima)

This project is part of the Summer of Code 2007


One of the most frequently used features of an IDE is find/replace and search features. Even though the search facilities, especially find/replace features in Eclipse are adequate for most developers, there are still plenty of usability issues and enhancement requests arising in Bugzilla. This project aims to fix a few of these usability issues.

Primary Goals

General Goal

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

Specific Goals

Progress.gif 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:

Progress.gif Implementing "Highlight All". This is going to be finished after implementing raw highlighting for FindReplace targets that don't support annotations.

Ok green.gif Implementing "Case Sensitive Replace". This is formed as IFindReplaceTargetExtension4 and is ready. Waiting for code review.

Ok green.gif Fixing bug 64584 in Find/Replace - "After first search selection effitiently lost and dialog set to Scope=All (while user is not aware about it)" . This patch is ready. Waiting for code review.

Glass.gif 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.

Glass.gif 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. )

Secondary Goals

Solving usability issues

A few of the following ideas are already a part of the specific project goals above.

Initial Ideas about Usability

1 - Improve Ctrl-J search:

  • Ctrl-J : have Ctrl-V paste the current ring in it
  • Ctrl-J followed by Ctl-R would switch to regex search
  • Ctrl-J to global search: transform a Ctrl-J to to a global search actually, drive all searches from the keyboard incremental search would be good: there should be a set of keyboard shortcuts on Ctrl-J to set up a complete search, and then execute it globally.

2 - Display search results. the view that displays the search results is very poor currently. Probably a tree view is not perfect. It should show the matches, for example. It should have more shortcuts...

3 - Improve the search dialog (Ctrl+H). More TBD

  • Would it make sense to always display the last search when opening the dialog ?
  • Not only should it be possible to remember the results of previous searches, but also be possible to refine (edit the criteria, etc) and re-run them

4 - Better multi-file search/replace (here, we are talking about Ctrl+H, "File Search" tab, and "Replace..." button, not Ctrl+F)

  • Usability: it is not clear how the search/replace works (what does it apply to ? What is the "Stale matches" dialog ?
  • User Interface quality: accessing search/replace is a modal dialog (modal dialog are never very good) that is accessed from another modal dialog (idem). Which means that the user need to complete multiple step, with complex UI, to access a functionality that's a basic Editor functionality. At least, for example, "Search/Replace" should appear in the "Search" menu, as usual most tools
  • selective (based on language elements...)
Bugzilla Reports Related with Usability

1. find/replace search should have a tick-box for "ignore comments" (enhancement request) bug 161398

2. Show as package tree bug 160481 (enhancement request)

3. Store Previous Searches for Startup (enhancement request) bug 169252

4. Search dialog "Java Search" Scope should include Hierarchy (WONTFIX bug) bug 110252

5. New text search shown line not a great help (LATER) bug 127672 (This bug is waiting for applying styles on a tree item.)

6. Result in Table (LATER) bug 129185

These two are related:

7. Search shows duplicate results in nested projects (LATER) bug 144959

8. Resource exclusion filters bug 84988

(read together with: bug 144959 - about duplicate results for nested folder structures)

9. Search Enhancements bug 108223

10. Search in files: see matched lines

Getting and Building the Source Code

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.


Repository path: /cvsroot/eclipse-incub

Module name: soc-search

To build this project, do the following in order:

1. Checkout these items from Eclipse HEAD:

- org.eclipse.text

- org.eclipse.jface

- org.eclipse.jface.text

- org.eclipse.ui.workbench

- org.eclipse.ui.workbench.texteditor

2. Choose a patch from "findreplace" folder and apply it to given packages.

  • findreplace-editorbar.diff ( apply to "org.eclipse.ui.workbench" )

Patches "org.eclipse.ui.workbench" in order to add a composite containing a Label and a Text widget, to the bottom of the editor.

  • findreplace-editorbar-optioncombo.diff ( apply to "org.eclipse.ui.workbench" )

Similar to findreplace-editorbar.diff except that it tries to save space by combining Find/Replace options in a combobox and one checkbox for all the options contained in this combobox.

  • findreplace-incremental-copypaste.diff ( apply to "org.eclipse.ui.workbench.texteditor" )

Patches "org.eclipse.ui.workbench.texteditor" in order to replace "Incremental Find"s Label widget with a Text widget. This Text widget is capable of accepting cut/copy/paste events. This patch is currently experimental (partially breaks Incremental Find features).

  • findreplace-retaincaps.diff (apply to "org.eclipse.ui.workbench.texteditor" )

Patches "org.eclipse.text", "org.eclipse.jface.text" and "org.eclipse.ui.workbench.texteditor" in order to implement the enhancement mentioned in . [find/replace] retain caps when replaceing

  • findreplace-highlightall.diff ( apply to "org.eclipse.ui.workbench.texteditor" and copy "icons" folder from "" file to "org.eclipse.jface.text" plugin folder )

Patches "org.eclipse.jface.text" and "org.eclipse.ui.workbench.texteditor" in order to implement the enhancement mentioned in . [find/replace] Highlight all matches in editor

  • findreplace-incremental-useselection.diff ( apply to "org.eclipse.ui.workbench.texteditor" )

Patches "org.eclipse.ui.workbench.texteditor" in order to implement the enhancement mentioned in . [IncrementalFind] if there's a selection, have a second Ctrl-J take this selection as search string

  • findreplace-rememberdirection.diff ( apply to "org.eclipse.ui.workbench.texteditor" )

Patches "org.eclipse.ui.workbench.texteditor" to fix . This won't make it to the HEAD as is but may get to the HEAD if users are given an option to enable/disable this behaviour.

  • findreplace-scopechange.diff ( apply to "org.eclipse.workbench.texteditor" )

Patches "org.eclipse.ui.workbench.texteditor" to fix . This patch is ready and waiting for code review.

That should be enough. You can test it by running corresponding project as an Eclipse application.

Update Site

You can also install the project using Eclipse "Software Update". The update site address is as follows:

Back to the top