Obviously coloring is something that happens in the UI thread, but calculation of the tokens should not be dependent on it. Eventually we can remove the basic coloring to minimum and resolve some performance issues with big files... hopefully ;)
- Roy -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Michael Spector Sent: Monday, April 13, 2009 5:35 PM To: PDT Developers Subject: Re: [pdt-dev] can i get ISourceModule from IStructuredDocumentRegion So, in this case you should not use "org.eclipse.wst.sse.ui.semanticHighlighting" :) 2009/4/13 Roy Ganor <[email protected]>: > Well, the whole idea with semantic highlighting that it is done in the > background. > Reviewing the Java implementation we should be able to do it without any > dependency of the UI thread? > > Thoughts? > > > > -----Original Message----- > From: [email protected] [mailto:[email protected]] On > Behalf Of Michael Spector > Sent: Monday, April 13, 2009 5:12 PM > To: PDT Developers > Subject: Re: [pdt-dev] can i get ISourceModule from IStructuredDocumentRegion > > I mean you can use syncExec() for running things in UI thread... like > getting an active editor page. > > 2009/4/13 赵忠伟 <[email protected]>: >> how to use PlatformUI.getWorkbench().getDisplay().syncExec() ? >> ISemanticHighlighting#consumes is called by wtp,so i can not change the way >> it is called. >> all i can do is in ISemanticHighlighting#consumes use the limited >> parameter,but it is not enough,so i want to do some operation on pdt. >> >> i just want to add pdt some semantic highlighting function:) >> >> and the semantic highlighting interface and extension are defined in >> wtp.so....any advice there? >> 2009/4/13 Michael Spector <[email protected]> >>> >>> Can you use PlatformUI.getWorkbench().getDisplay().syncExec() ? >>> >>> 2009/4/13 赵忠伟 <[email protected]>: >>> > thanks for your reply.i think it is executed in non-ui thread ,and the >>> > result is (page == null),as i use the following code. >>> > >>> > // IWorkbench workbench = PlatformUI.getWorkbench(); >>> > // IWorkbenchWindow window = workbench.getActiveWorkbenchWindow(); >>> > // IWorkbenchPage page = window.getActivePage(); >>> > // IEditorPart editorpart = page.getActiveEditor(); >>> > // if(editorpart instanceof PHPStructuredEditor){ >>> > but i think i have some other method to get the edtior.descript as >>> > following: >>> > >>> > PHPStructuredEditor#createStructedTextViewer >>> > protected StructuredTextViewer createStructedTextViewer(Composite >>> > parent, >>> > IVerticalRuler verticalRuler, int styles) { >>> > PHPStructuredTextViewer structuredTextViewer = new >>> > PHPStructuredTextViewer(this, parent, verticalRuler, getOverviewRuler(), >>> > isOverviewRulerVisible(), styles); >>> > structuredTextViewer.addTextInputListener(new ITextInputListener(){ >>> > >>> > public void inputDocumentChanged(IDocument oldInput, IDocument >>> > newInput) >>> > { >>> > //do some operation >>> > } >>> > >>> > public void inputDocumentAboutToBeChanged(IDocument oldInput, >>> > IDocument >>> > newInput) { >>> > } >>> > }); >>> > return structuredTextViewer; >>> > } >>> > i do some operations to put the current PHPStructuredEditor instance and >>> > IDocument to two global maps(they map to each other in a thread save >>> > way) >>> > .,and remove them when the editor is disposed. >>> > >>> > so in ISemanticHighlighting#consumes i can get the IDocument : >>> > IStructuredDocumentRegion sdRegion; >>> > IStructuredDocument parentDocument = sdRegion.getParentDocument(); >>> > >>> > and then through the global map,i think i can make it. i think it is a >>> > very >>> > poor way! >>> > >>> > >>> > wei >>> > >>> > 2009/4/13 Michael Spector <[email protected]> >>> >> >>> >> In this case you can do the following hack :) >>> >> >>> >> IStructuredDocumentRegion sdRegion; >>> >> IStructuredDocument parentDocument = sdRegion.getParentDocument(); >>> >> IWorkbenchPage page = PHPUiPlugin.getActivePage(); >>> >> if (page != null) { >>> >> IEditorPart editor = page.getActiveEditor(); >>> >> if (editor instanceof PHPStructuredEditor) { >>> >> ISourceModule sourceModule = (ISourceModule) >>> >> ((PHPStructuredEditor) >>> >> editor).getModelElement(); >>> >> } >>> >> } >>> >> >>> >> On Mon, Apr 13, 2009 at 12:22 PM, 赵忠伟 <[email protected]> >>> >> wrote: >>> >> > hi, Michael >>> >> > >>> >> > i extended the extension >>> >> > "org.eclipse.wst.sse.ui.semanticHighlighting" >>> >> > as following: >>> >> > <extension point="org.eclipse.wst.sse.ui.semanticHighlighting"> >>> >> > <highlighting >>> >> > >>> >> > >>> >> > >>> >> > class="org.eclipse.php.internal.ui.editor.highlighting.PHPStaticSemanticHighlighting" >>> >> > target="org.eclipse.php.core.phpsource"> >>> >> > </highlighting> >>> >> > </extension> >>> >> > >>> >> > here PHPStaticSemanticHighlighting need to implement >>> >> > ISemanticHighlighting >>> >> > interface >>> >> > and there is a method public Position[] >>> >> > consumes(IStructuredDocumentRegion >>> >> > region); in ISemanticHighlighting interface ,so the context is i can >>> >> > get >>> >> > nothing except IStructuredDocumentRegion (actually >>> >> > XMLStructuredDocumentRegion).the method >>> >> > ISemanticHighlighting#consumes >>> >> > is >>> >> > called by SemanticHighlightingReconciler#reconcile (more or less >>> >> > 133rd >>> >> > line) .there is StructuredTextEditor in >>> >> > SemanticHighlightingReconciler,but i >>> >> > could not get it.if i the editor,i can get editorinput and the >>> >> > file,so i >>> >> > can >>> >> > use DLTKCore#create to get a ISourceModule ,but now i can only get >>> >> > IStructuredDocumentRegion ,nothing else!i search a lot in the pdt >>> >> > source >>> >> > but >>> >> > i did not find a way to get ISourceModule from >>> >> > IStructuredDocumentRegion.and >>> >> > in my oponion,ISourceModule must be relative to IScriptProject and >>> >> > IScriptFolder,so from IStructuredDocumentRegion ,it is hardly to find >>> >> > the >>> >> > corresponding ISourceModule (IScriptProject and IScriptFolder) it >>> >> > belongs >>> >> > to.i am sorry for my poor english:) >>> >> > >>> >> > >>> >> > >>> >> > thank you very much! >>> >> > best regards! >>> >> > _______________________________________________ >>> >> > pdt-dev mailing list >>> >> > [email protected] >>> >> > https://dev.eclipse.org/mailman/listinfo/pdt-dev >>> >> > >>> >> > >>> >> >>> >> >>> >> >>> >> -- >>> >> Best regards, >>> >> Michael >>> >> _______________________________________________ >>> >> pdt-dev mailing list >>> >> [email protected] >>> >> https://dev.eclipse.org/mailman/listinfo/pdt-dev >>> > >>> > >>> > _______________________________________________ >>> > pdt-dev mailing list >>> > [email protected] >>> > https://dev.eclipse.org/mailman/listinfo/pdt-dev >>> > >>> > >>> >>> >>> >>> -- >>> Best regards, >>> Michael >>> _______________________________________________ >>> pdt-dev mailing list >>> [email protected] >>> https://dev.eclipse.org/mailman/listinfo/pdt-dev >> >> >> _______________________________________________ >> pdt-dev mailing list >> [email protected] >> https://dev.eclipse.org/mailman/listinfo/pdt-dev >> >> > > > > -- > Best regards, > Michael > _______________________________________________ > pdt-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/pdt-dev > _______________________________________________ > pdt-dev mailing list > [email protected] > https://dev.eclipse.org/mailman/listinfo/pdt-dev > -- Best regards, Michael _______________________________________________ pdt-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/pdt-dev _______________________________________________ pdt-dev mailing list [email protected] https://dev.eclipse.org/mailman/listinfo/pdt-dev
