package ctagsinterface.jedit;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.Vector;
import org.gjt.sp.jedit.Mode;
import org.gjt.sp.jedit.View;
import completion.service.CompletionCandidate;
import completion.service.CompletionProvider;
import ctagsinterface.index.TagIndex;
import ctagsinterface.main.CtagsInterfacePlugin;
import ctagsinterface.main.Tag;
public class CtagsInterfaceCompletionProvider implements CompletionProvider {
@Override
public List<CompletionCandidate> getCompletionCandidates(View view) {
String prefix = CtagsInterfacePlugin.getCompletionPrefix(view);
if (prefix == null)
return null;
final Vector<Tag> tags = getCompletions(view, prefix);
if (tags == null || tags.isEmpty())
return null;
List<CompletionCandidate> candidates = new ArrayList<CompletionCandidate>();
for (Tag t: tags)
candidates.add(new CtagsCompletionCandidate(t));
return candidates;
}
@Override
public Set<Mode> restrictToModes() {
return null;
}
private Vector<Tag> getCompletions(View view, String prefix)
{
String q = TagIndex._NAME_FLD + ":" + prefix + "*";
return CtagsInterfacePlugin.runScopedQuery(view, q);
}
}