1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-06-08 02:06:01 +02:00

Hooked up C# code scanner to CEditor using ILanguageUI adapter on the working copy language.

This commit is contained in:
Doug Schaefer 2006-07-14 03:19:15 +00:00
parent 8cf13ce26a
commit 20ace94bc2
5 changed files with 86 additions and 51 deletions

View file

@ -77,7 +77,7 @@ public class LanguageManager {
IConfigurationElement language = languages[j]; IConfigurationElement language = languages[j];
IConfigurationElement[] assocContentTypes = language.getChildren("contentType"); //$NON-NLS-1$ IConfigurationElement[] assocContentTypes = language.getChildren("contentType"); //$NON-NLS-1$
for (int k = 0; k < assocContentTypes.length; ++k) { for (int k = 0; k < assocContentTypes.length; ++k) {
if (contentTypeId.equals(assocContentTypes[i].getAttribute("id"))) { //$NON-NLS-1$ if (contentTypeId.equals(assocContentTypes[k].getAttribute("id"))) { //$NON-NLS-1$
return (ILanguage)language.createExecutableExtension("class"); //$NON-NLS-1$ return (ILanguage)language.createExecutableExtension("class"); //$NON-NLS-1$
} }
} }

View file

@ -1447,22 +1447,10 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
} }
/* Source code language to display */
public final static String LANGUAGE_CPP = "CEditor.language.cpp"; //$NON-NLS-1$
public final static String LANGUAGE_C = "CEditor.language.c"; //$NON-NLS-1$
/* /*
* @see AbstractTextEditor#createSourceViewer(Composite, IVerticalRuler, int) * @see AbstractTextEditor#createSourceViewer(Composite, IVerticalRuler, int)
*/ */
protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) { protected ISourceViewer createSourceViewer(Composite parent, IVerticalRuler ruler, int styles) {
// Figure out if this is a C or C++ source file
IWorkingCopyManager mgr = CUIPlugin.getDefault().getWorkingCopyManager();
ITranslationUnit unit = mgr.getWorkingCopy(getEditorInput());
String fileType = LANGUAGE_CPP;
if (unit != null) {
fileType= unit.isCLanguage() ? LANGUAGE_C : LANGUAGE_CPP;
}
fAnnotationAccess = createAnnotationAccess(); fAnnotationAccess = createAnnotationAccess();
ISharedTextColors sharedColors = CUIPlugin.getDefault().getSharedTextColors(); ISharedTextColors sharedColors = CUIPlugin.getDefault().getSharedTextColors();
@ -1474,8 +1462,7 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
ruler, ruler,
styles, styles,
fOverviewRuler, fOverviewRuler,
isOverviewRulerVisible(), isOverviewRulerVisible());
fileType);
fSourceViewerDecorationSupport = fSourceViewerDecorationSupport =
new SourceViewerDecorationSupport(sourceViewer, fOverviewRuler, fAnnotationAccess, sharedColors); new SourceViewerDecorationSupport(sourceViewer, fOverviewRuler, fAnnotationAccess, sharedColors);

View file

@ -14,8 +14,7 @@ import java.util.ArrayList;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import org.eclipse.cdt.internal.ui.editor.CEditor.ITextConverter; import org.eclipse.core.runtime.CoreException;
import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
import org.eclipse.jface.text.DocumentCommand; import org.eclipse.jface.text.DocumentCommand;
import org.eclipse.jface.text.ITextViewerExtension; import org.eclipse.jface.text.ITextViewerExtension;
import org.eclipse.jface.text.contentassist.IContentAssistant; import org.eclipse.jface.text.contentassist.IContentAssistant;
@ -26,6 +25,14 @@ import org.eclipse.jface.text.source.SourceViewerConfiguration;
import org.eclipse.jface.text.source.projection.ProjectionViewer; import org.eclipse.jface.text.source.projection.ProjectionViewer;
import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Composite;
import org.eclipse.cdt.core.model.ICElement;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.core.model.ITranslationUnit;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.internal.ui.editor.CEditor.ITextConverter;
import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
/** /**
* Adapted source viewer for CEditor * Adapted source viewer for CEditor
*/ */
@ -40,10 +47,8 @@ public class CSourceViewer extends ProjectionViewer implements ITextViewerExtens
/** Presents outline. */ /** Presents outline. */
private IInformationPresenter fOutlinePresenter; private IInformationPresenter fOutlinePresenter;
private List fTextConverters; private List fTextConverters;
private String fDisplayLanguage;
/** /**
* Creates new source viewer. * Creates new source viewer.
* @param editor * @param editor
@ -52,23 +57,33 @@ public class CSourceViewer extends ProjectionViewer implements ITextViewerExtens
* @param styles * @param styles
* @param fOverviewRuler * @param fOverviewRuler
* @param isOverviewRulerShowing * @param isOverviewRulerShowing
* @param language
*/ */
public CSourceViewer( public CSourceViewer(
CEditor editor, Composite parent, CEditor editor, Composite parent,
IVerticalRuler ruler, IVerticalRuler ruler,
int styles, int styles,
IOverviewRuler fOverviewRuler, IOverviewRuler fOverviewRuler,
boolean isOverviewRulerShowing, boolean isOverviewRulerShowing) {
String language) {
super(parent, ruler, fOverviewRuler, isOverviewRulerShowing, styles); super(parent, ruler, fOverviewRuler, isOverviewRulerShowing, styles);
this.editor = editor; this.editor = editor;
fDisplayLanguage = language;
} }
public IContentAssistant getContentAssistant() { public IContentAssistant getContentAssistant() {
return fContentAssistant; return fContentAssistant;
} }
public ILanguage getLanguage() {
ICElement element = editor.getInputCElement();
if (element instanceof ITranslationUnit) {
try {
return ((ITranslationUnit)element).getLanguage();
} catch (CoreException e) {
CUIPlugin.getDefault().log(e);
}
}
return null;
}
/** /**
* @see org.eclipse.jface.text.source.SourceViewer#configure(org.eclipse.jface.text.source.SourceViewerConfiguration) * @see org.eclipse.jface.text.source.SourceViewer#configure(org.eclipse.jface.text.source.SourceViewerConfiguration)
*/ */
@ -161,13 +176,6 @@ public class CSourceViewer extends ProjectionViewer implements ITextViewerExtens
} }
} }
public void setDisplayLanguage(String language) {
fDisplayLanguage = language;
}
public String getDisplayLanguage() {
return fDisplayLanguage;
}
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.jface.text.source.ISourceViewer#setRangeIndication(int, int, boolean) * @see org.eclipse.jface.text.source.ISourceViewer#setRangeIndication(int, int, boolean)
*/ */

View file

@ -13,15 +13,6 @@ package org.eclipse.cdt.internal.ui.text;
import java.util.Vector; import java.util.Vector;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.editor.CElementHyperlinkDetector;
import org.eclipse.cdt.internal.ui.editor.CSourceViewer;
import org.eclipse.cdt.internal.ui.text.c.hover.CEditorTextHoverDescriptor;
import org.eclipse.cdt.internal.ui.text.c.hover.CEditorTextHoverProxy;
import org.eclipse.cdt.internal.ui.text.contentassist.CCompletionProcessor2;
import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference;
import org.eclipse.cdt.ui.CElementContentProvider;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.jface.dialogs.IDialogSettings; import org.eclipse.jface.dialogs.IDialogSettings;
import org.eclipse.jface.preference.IPreferenceStore; import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.text.DefaultInformationControl; import org.eclipse.jface.text.DefaultInformationControl;
@ -57,6 +48,21 @@ import org.eclipse.ui.editors.text.TextSourceViewerConfiguration;
import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants; import org.eclipse.ui.texteditor.AbstractDecoratedTextEditorPreferenceConstants;
import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.ITextEditor;
import org.eclipse.cdt.core.dom.ast.gnu.c.GCCLanguage;
import org.eclipse.cdt.core.dom.ast.gnu.cpp.GPPLanguage;
import org.eclipse.cdt.core.model.ILanguage;
import org.eclipse.cdt.ui.CElementContentProvider;
import org.eclipse.cdt.ui.CUIPlugin;
import org.eclipse.cdt.ui.ILanguageUI;
import org.eclipse.cdt.internal.ui.editor.CEditor;
import org.eclipse.cdt.internal.ui.editor.CElementHyperlinkDetector;
import org.eclipse.cdt.internal.ui.editor.CSourceViewer;
import org.eclipse.cdt.internal.ui.text.c.hover.CEditorTextHoverDescriptor;
import org.eclipse.cdt.internal.ui.text.c.hover.CEditorTextHoverProxy;
import org.eclipse.cdt.internal.ui.text.contentassist.CCompletionProcessor2;
import org.eclipse.cdt.internal.ui.text.contentassist.ContentAssistPreference;
/** /**
@ -155,16 +161,20 @@ public class CSourceViewerConfiguration extends TextSourceViewerConfiguration {
PresentationReconciler reconciler= new PresentationReconciler(); PresentationReconciler reconciler= new PresentationReconciler();
reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer)); reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
RuleBasedScanner scanner; RuleBasedScanner scanner = null;
if(sourceViewer instanceof CSourceViewer) { if(sourceViewer instanceof CSourceViewer) {
String language = ((CSourceViewer)sourceViewer).getDisplayLanguage(); ILanguage language = ((CSourceViewer)sourceViewer).getLanguage();
if(language != null && language.equals(CEditor.LANGUAGE_CPP)) { if (language instanceof GPPLanguage) {
scanner= fTextTools.getCppCodeScanner(); scanner = fTextTools.getCppCodeScanner();
} else if (language instanceof GCCLanguage) {
scanner = fTextTools.getCCodeScanner();
} else { } else {
scanner= fTextTools.getCCodeScanner(); ILanguageUI languageUI = (ILanguageUI)language.getAdapter(ILanguageUI.class);
if (languageUI != null)
scanner = languageUI.getCodeScanner();
} }
} else { }
if (scanner == null) {
scanner= fTextTools.getCCodeScanner(); scanner= fTextTools.getCCodeScanner();
} }

View file

@ -0,0 +1,30 @@
/**********************************************************************
* Copyright (c) 2006 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
**********************************************************************/
package org.eclipse.cdt.ui;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.jface.text.rules.RuleBasedScanner;
/**
* @author Doug Schaefer
*
*/
public interface ILanguageUI extends IAdaptable {
/**
* Get the code scanner that drives coloring in the editor.
*
* @return code scanner for this language
*/
RuleBasedScanner getCodeScanner();
}