1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-07 17:56:01 +02:00

Code assist now searches dependent projects

This commit is contained in:
Sebastien Marineau 2002-09-05 15:03:16 +00:00
parent 2c7b6ef139
commit 9de625f710

View file

@ -24,6 +24,7 @@ import org.eclipse.swt.graphics.Image;
import org.eclipse.swt.graphics.Point; import org.eclipse.swt.graphics.Point;
import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.BadLocationException; import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument; import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.IRegion; import org.eclipse.jface.text.IRegion;
@ -217,6 +218,40 @@ public class CCompletionProcessor implements IContentAssistProcessor {
return proposals; return proposals;
} }
private void addProjectCompletions(IProject project, IRegion region, String frag, ArrayList completions) {
IndexModel model = IndexModel.getDefault();
ITagEntry[] tags= model.query(project, frag+"*", false, false);
if(tags != null && tags.length > 0) {
// We have some matches!
for(int i = 0; i < tags.length; i++) {
String fname = tags[i].getTagName();
int kind = tags[i].getKind();
if(kind == TagFlags.T_FUNCTION || kind == TagFlags.T_PROTOTYPE) {
fname = fname + "()";
}
String proto = fname + " - " + tags[i].getPattern();
//System.out.println("tagmatch " + fname + " proto " + proto + " type" + tags[i].getKind());
if(tags[i].getKind() != TagFlags.T_MEMBER) {
completions.add(
new CCompletionProposal(
fname,
region.getOffset(),
region.getLength(),
//fname.length() + 1,
getTagImage(kind),
proto.equals("") ? (fname + "()") : proto,
//null,
//null));
3));
}
}
}
}
/** /**
* Evaluate the actual proposals for C * Evaluate the actual proposals for C
*/ */
@ -269,7 +304,6 @@ public class CCompletionProcessor implements IContentAssistProcessor {
ArrayList completions = new ArrayList(); ArrayList completions = new ArrayList();
// Look in index manager // Look in index manager
IndexModel model = IndexModel.getDefault();
IProject project = null; IProject project = null;
IEditorInput input = fEditor.getEditorInput(); IEditorInput input = fEditor.getEditorInput();
if(input instanceof IFileEditorInput) { if(input instanceof IFileEditorInput) {
@ -281,35 +315,19 @@ public class CCompletionProcessor implements IContentAssistProcessor {
} }
} }
if(project != null) { if(project != null) {
ITagEntry[] tags= model.query(project, frag+"*", false, false); addProjectCompletions(project, region, frag, completions);
if(tags != null && tags.length > 0) { // Now query referenced projects
// We have some matches! IProject referenced[];
for(int i = 0; i < tags.length; i++) { try {
referenced = project.getReferencedProjects();
if(referenced.length > 0) {
for (int i = 0; i < referenced.length; i++) {
addProjectCompletions(referenced[i], region, frag, completions);
}
}
} catch (CoreException e) {
}
String fname = tags[i].getTagName();
int kind = tags[i].getKind();
if(kind == TagFlags.T_FUNCTION || kind == TagFlags.T_PROTOTYPE) {
fname = fname + "()";
}
String proto = fname + " - " + tags[i].getPattern();
//System.out.println("tagmatch " + fname + " proto " + proto + " type" + tags[i].getKind());
if(tags[i].getKind() != TagFlags.T_MEMBER) {
completions.add(
new CCompletionProposal(
fname,
region.getOffset(),
region.getLength(),
//fname.length() + 1,
getTagImage(kind),
proto.equals("") ? (fname + "()") : proto,
//null,
//null));
3));
}
}
}
} }