yes, i've tried that, but the extensions array in the
PHPIndexingVisitor is private,
so i can't simply override the constructor and cast them to
my own Extensions.
This is the plugin.xml of my current implementation:
sorry for spamming the
list, but there's really not much information in
the net available concerning PDT indexing.
I've followed the "contributing to index" chapter
in the wiki http://wiki.eclipse.org/Extending_PDT_2.2#Contributing_to_index
but i'm not sure if this is still up-to-date,
because when i contribute additional fields to a
TypeDeclaration,
nothing appears in code assist for $this-> in
that class.
What confuses me is that a PDT Indexing Extension
needs to subclass PhpIndexingVisitorExtension
and provide declarationinfos using
modifyDeclaration() calls.
However, the modifyDeclaration() method in the
PhpIndexingVisitorExtension is completely empty,
as apposed to the PhpIndexingVisitor which calls
requestor.addDeclaration(info) in this method.
The requestor is not available to extensions
though.
My IndexingVisitor does basically the same like
the one in the Wiki (inside the
endVisit(TypeDeclaration) method):
DeclarationInfo info = new
DeclarationInfo(IModelElement.FIELD,
Modifiers.AccPublic,
start, length, start, length, name,
null, null,
namespace.getName(), currentClass.getName());
modifyDeclaration(field, info);
Do i need to specify an implementation for the
modifyDeclaration() method in my indexer as well?
a lot of PHP Frameworks implement the MVC
pattern, and i'm wondering what's the
best way to provide codeassist for PHP
variables in files that have been declared
in other SourceModules.
Let's say you have the class
UserController with the method showUser()
(in /UserController.php)
The framework then renders the file
'showUser.php' and passes in the $user
object
as a variable named $user.
What i have done right now is the
following:
1. In the SourceElementRequestor extension
i visit the ReturnStatements of methods in
Controller
classes.
2. I detect the variables returned by that
method and store it in some custom
Singleton.
3. Register a completionContext/Strategy
which retrieves the correct variables for
the current php file from the Singleton.
This approach works, though it doesn't
feel properly integrated into the DLTK/PDT
model, as
1. I'm simply storing the ViewVariable
in-memory in my singleton, so after
Eclipse relaunches, the whole project
needs to be rebuilt for completion to
work.
2. I'm getting
ConcurrentModificationExceptions in my
Singleton class during the BuildPhase as
apparently the SourceParsing
takes place in multiple threads.
So my question is, is there a way to
contribute those Variables which are being
passed to the View-Templates properly to
the DLTK/PDT model ?