hmmm,I am not sure the time,I think I will apply the
patch today.But now there is a something wrong with our pdt build
on eclipse,so the nightly build always fails.And we will fix it
asap,but for release version,I am not sure.
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
?