I've managed to extend the PHPSourceElementParser and enter types from yaml files, which is implemented roughly like this:
* In public void parseSourceModule(IModuleSource module) i parse the yaml file * call ISourceElementRequestor.enterModule() * for every type in the yaml file, call requestor.enterType(IType), requestor.exitType(somePosition) * call requestor.exitModule()
When doing this, i get all the types in the yml file presented in the outline, and i can open the yaml sourcemodule in the project explorer tree and see the child nodes. For some reason though, PHPModelAccess won't return the types when i search for them:
PhpModelAccess access = PhpModelAccess.getDefault(); IDLTKSearchScope scope = SearchEngine.createWorkspaceScope(PHPLanguageToolkit.getDefault()); IType[] types = access.findTypes(name, MatchRule.EXACT, 0, 0,scope, null);
I've also tried to search using ModelAccess, but i got no results either.
Anyone an idea what i'm missing?
thanks!
-robert
On Mar 2, 2010, at 1:06 PM, Alex Panchenko wrote:
It depends on the input objects your have.If you have source file you can use ISourceModule.getType(String) Or if you want all your types - use search like Zhao suggested (you can set special flags for your types and filter by it).
On the other side, if your types are reported as model elements - PDT will find them even without your help.
Regards, Alex
----- Original Message ----- From: "赵忠伟" <zhaozhongwei@xxxxxxxxxxxxxxxx> To: "DLTK Developer Discussions" <dltk-dev@xxxxxxxxxxx> Sent: Tuesday, March 2, 2010 6:02:25 PM GMT +06:00 Almaty, Novosibirsk Subject: Re: [Dltk-dev] Extending the ScriptModel
try PhpModelAccess/ModelAccess
2010/3/2 Robert Gründler <doobre@xxxxxxxxx>
Hi again,
i think i managed to use the enterModule() / enterType() etc methods to report a new Module/Type, but how can i access it in the CompletionStragety?
Ie, how can i retrieve the type that i previously entered to pass it to ICompletionReporter.report(IType) ?
thanks,
-robert
On Mar 2, 2010, at 11:13 AM, Alex Panchenko wrote:
At the moment (as a quick hack) I can suggest only extending from PHP parser, handle .yaml files yourself and passing everything else to super.
Regards, Alex
----- Original Message ----- From: "Robert Gründler" <doobre@xxxxxxxxx> To: "DLTK Developer Discussions" <dltk-dev@xxxxxxxxxxx> Sent: Tuesday, March 2, 2010 4:15:44 PM GMT +06:00 Almaty, Novosibirsk Subject: Re: [Dltk-dev] Extending the ScriptModel
How about implementing org.eclipse.dltk.core.ISourceElementParser and generating appropriate model elements using enterType()/exitType() and enterMethod()/exitMethod() calls?
I've tried this, but my SourceElementParser gets only called for php sources, here's how i defined it:
<extension point="org.eclipse.dltk.core.sourceElementParsers"> <parser class="com.dubture.symfony2.internal.core.model.SymfonySourceElementParser" nature="org.eclipse.php.core.PHPNature" priority="0"> </parser> </extension>
For .yml files, the parser is not being called. I've tried to set the nature to the nature of my plugin, but then it doesn't get called at all.
Do i need to create a yaml content type and associate it with my nature for the parser to recognize .yml files as source elements ?
regards
-robert _______________________________________________ dltk-dev mailing list dltk-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/dltk-dev _______________________________________________
_______________________________________________ dltk-dev mailing list dltk-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/dltk-dev
--
Thanks!
Best Regards!
Zhao
_______________________________________________ dltk-dev mailing list dltk-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/dltk-dev _______________________________________________ dltk-dev mailing list dltk-dev@xxxxxxxxxxx https://dev.eclipse.org/mailman/listinfo/dltk-dev
|