Indexer
=======
- Changed file extensions to prevent header files from being indexed (they will be indexed via inclusion)
Search
=======
- Added scope checking to MatchLocator
- Modified CSearchPattern to allow for destructor searches
- Added debug tracing statements to SearchEngine
- Added debug tracing statements to MatchLocator
UI
==
- Converted CTags based OpenOnSelectionAction to OpenDeclarationsAction. For now, we do a search on all types with the selected name.
- Hooked up OpenDeclarationsAction to search engine
General
=======
- Modified start up code to set debug trace options (which are defined from the launcher). I've added the following trace components:
- dependency
- indexer
- indexmanager
- matchlocator
- model
- search
- parser
- Added trace debug statements to CModelBuilder
- Modified Util.java to make use of IDebugLogConstants
Indexer
- Added additional file extensions to supported indexed files
- Changed the parser instantiation to pass in retrieved build info
- Added function decl index entry based on enterFunctionBody
- Added method decl index entry based on enterMethodBody
- Added forward decl refs
- Added debug tracing to AbstractIndexer
Search
- Changed matching and reporting functions to handle nodes
of type IElaboratedTypeSpecifier
UI
- Added a search dialog pop up item to the context menu for the
CEditor and CContentOutlinePage
I forgot (again) that the Eclipse patching mechanism does not pay
attention to gifs. So, here are the build icons redone with the proper
transparency settings. Now they no longer show up as an annoying white
blob on the grey Motif background/ or Gtk selection box.
This patch contains some minor UI changes and a big chunk of work to add
built-in symbols and includes search paths to a tool specification.
The UI change is a switch from dynamically resizing the property page when
an option category is selected from the list, but rather using a scrolled
edit area. Now, if the option set is larger than the viewable area, a
horizontal and/or vertical scrollbar is displayed.
In terms of built-ins, there is no UI support to change the values just
yet. That is coming, but I wanted to get the framework and some
definitions in place so that the indexer and scanner can start using them.
In order to work through CExtensionPoint mechanism, I have to change the
existing extension point entries for the Managed and Standard builders to
the following (all future builders will have to conform to this as well):
<extension
id="ManagedBuildManager"
point="org.eclipse.cdt.core.ScannerInfoProvider">
<cextension>
<run
class="org.eclipse.cdt.core.build.managed.ManagedBuildManager">
</run>
</cextension>
</extension>
<extension
id="StandardBuildManager"
point="org.eclipse.cdt.core.ScannerInfoProvider">
<cextension>
<run
class="org.eclipse.cdt.core.build.standard.StandardBuildManager">
</run>
</cextension>
</extension>
As well, the ManagedBuildManager and StandardBuildManager must extend
AbstractCExtension.
The new project wizards for managed and standard projects have to be
modified to register the right class as the scanner info providers for the
project. The example below shows the managed project wizard code, but the
standard project wizard is similar.
try {
ICDescriptor desc =
CCorePlugin.getDefault().getCProjectDescription(project);
desc.remove(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID);
desc.create(CCorePlugin.BUILD_SCANNER_INFO_UNIQ_ID,
ManagedBuildManager.INTERFACE_IDENTITY);
} <snip>
Clients use a new method defined in CCorePlugin
public IScannerInfoProvider getScannerInfoProvider(IProject project) {
IScannerInfoProvider provider = null;
if (project != null) {
try {
ICDescriptor desc = (ICDescriptor)
getCProjectDescription(project);
ICExtensionReference[] extensions =
desc.get(BUILD_SCANNER_INFO_UNIQ_ID);
if (extensions.length > 0)
provider = (IScannerInfoProvider)
extensions[0].createExtension();
} catch (CoreException e) {
}
}
return provider;
}
to get the information provider as shown in the updated JUnit test code
below:
// Find the first IScannerInfoProvider that supplies build info for the
project
IScannerInfoProvider provider =
CCorePlugin.getDefault().getScannerInfoProvider(project);
assertNotNull(provider);
As is the case now, clients implement the IScannerInfoChangeListener
interface and pass themselves to the provider in a subscription message.
There is also a new method on the IScannerInfoProvider interface that
allows the client to get information immediately as shown below:
IScannerInfo currentSettings = provider.getScannerInformation(project);
The ManagedBuildManager::getScannerInfo(IResource) method will be
deprecated, then removed before the end of this release cycle.
Hi,
This patch updates code completion to use search. It also includes my previous patch which enabled the class wizard to use search as well.
Current Code Completion has the following restrictions:
- It will only work within the scope of a function or a method.
-It will look for globals (variables, functions, classes, strucs, unions, enumerations, and macros).
-In the scope of a method, it will also look for the methods and fields that belong to the owner class of this method.
- It will NOT search the parent classes of the method in the method scope case.
- It will NOT de-reference after a "." or an "->"
This patch contains a fix for bug 41274 in the core; library entries in
the build property pages were not being saved by the build model manager.
It also contains a bunch of fixes for minor problems in the UI. I added a
new target for building DLLs on Cygwin. The zip file adds a new icon for
configurations in the tree view of the build property page for managed
builds. Now the tool uses the tool icon and the category uses the new
category icon.
The list editor will better fit a page with space-grabbing widgets in
different columns. For example, the default list field editor puts the
list in the left column and allows it to grab all excess space. Entry
fields put the label in the left and the space-grabbing entry field/combo
box in the right. The layout manager then gives both left and right
columns equal space in that case. By wrapping the list field editor in a
group control that spans both columns, the layout manager allocates enough
space for controls in the right-hand column. It also lays out the contents
of the list field editor inside the group control independently of the
outer container, so it looks right too. Also added a double-click event
handler so users can edit list elements. All in all, this makes the list
widget work better.
I re-activated the summary field editor class (it's alive!). It still does
not behave quite right in terms of showing the command line summary, but
that functionality will be added shortly.
Finally, the build property page is being resized for large pages. It is
still possible to specify categories with too many options to display,
even with the new resize. This will have to be a documented limitation, or
we will have to add a vertical scroll bar for pages that are too large.
core :
- add function parameter information to search results
ui:
- modified Search result sorting to sort by offset if the label is the
same for two items
Put in Indexer shut down which cleans up the .metadata directory of any suspicious looking index files
Put in CSearchScope changes (in both UI and core) to enable working set searches
This patch contains modifications to BasicSearchMatch and
BasicSearchResultCollector so that the collector will not accept matches
that have already been seen.
( Addresses the problem of seeing a class definition in a header file
multiple times because that header was included from multiple cpp files)
This patch also fixes a small bug in finding the resource for header files
we enter while parsing.
I am in the process of documenting the build model and as I go along, a
number of things will have to be cleaned up in the actual model itself.
This patch is purely a bookeeping change to make it easier for me to
maintain the build model in the face of these changes as we go forward.
Where I used to access XML elements using hard-coded strings, I have moved
the string into the appropriate interface class. If the name of the
attribute changes in the future, I only have to update it one place.
I have also begun the process of renaming certain attributes of the schema
to make them better reflect what they are doing. My hope is that if they
have intuitive names, toolchain implementers will have less difficulty
understanding their intent. In any case, I have changed four attribute
names; optionRef -> optionReference, toolRef -> toolReference, optionValue
-> listOptionValue, and optionEnum -> enumeratedOptionValue.
Unfortunately, these changes will invalidate the dot-cdtbuild files for
any managed build projects in your workspace. If you can't bear to create
a new project, move the files over, and set-up the compiler options again,
you can always hand-edit the changes in the file yourself. Just remember
to restart CDT after you do so.