1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +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[] assocContentTypes = language.getChildren("contentType"); //$NON-NLS-1$
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$
}
}

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)
*/
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();
ISharedTextColors sharedColors = CUIPlugin.getDefault().getSharedTextColors();
@ -1474,8 +1462,7 @@ public class CEditor extends TextEditor implements ISelectionChangedListener, IS
ruler,
styles,
fOverviewRuler,
isOverviewRulerVisible(),
fileType);
isOverviewRulerVisible());
fSourceViewerDecorationSupport =
new SourceViewerDecorationSupport(sourceViewer, fOverviewRuler, fAnnotationAccess, sharedColors);

View file

@ -14,8 +14,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.eclipse.cdt.internal.ui.editor.CEditor.ITextConverter;
import org.eclipse.cdt.internal.ui.text.CSourceViewerConfiguration;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jface.text.DocumentCommand;
import org.eclipse.jface.text.ITextViewerExtension;
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.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
*/
@ -40,10 +47,8 @@ public class CSourceViewer extends ProjectionViewer implements ITextViewerExtens
/** Presents outline. */
private IInformationPresenter fOutlinePresenter;
private List fTextConverters;
private String fDisplayLanguage;
/**
* Creates new source viewer.
* @param editor
@ -52,23 +57,33 @@ public class CSourceViewer extends ProjectionViewer implements ITextViewerExtens
* @param styles
* @param fOverviewRuler
* @param isOverviewRulerShowing
* @param language
*/
public CSourceViewer(
CEditor editor, Composite parent,
IVerticalRuler ruler,
int styles,
IOverviewRuler fOverviewRuler,
boolean isOverviewRulerShowing,
String language) {
CEditor editor, Composite parent,
IVerticalRuler ruler,
int styles,
IOverviewRuler fOverviewRuler,
boolean isOverviewRulerShowing) {
super(parent, ruler, fOverviewRuler, isOverviewRulerShowing, styles);
this.editor = editor;
fDisplayLanguage = language;
}
public IContentAssistant getContentAssistant() {
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)
*/
@ -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)
* @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 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.preference.IPreferenceStore;
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.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();
reconciler.setDocumentPartitioning(getConfiguredDocumentPartitioning(sourceViewer));
RuleBasedScanner scanner;
RuleBasedScanner scanner = null;
if(sourceViewer instanceof CSourceViewer) {
String language = ((CSourceViewer)sourceViewer).getDisplayLanguage();
if(language != null && language.equals(CEditor.LANGUAGE_CPP)) {
scanner= fTextTools.getCppCodeScanner();
ILanguage language = ((CSourceViewer)sourceViewer).getLanguage();
if (language instanceof GPPLanguage) {
scanner = fTextTools.getCppCodeScanner();
} else if (language instanceof GCCLanguage) {
scanner = fTextTools.getCCodeScanner();
} else {
scanner= fTextTools.getCCodeScanner();
ILanguageUI languageUI = (ILanguageUI)language.getAdapter(ILanguageUI.class);
if (languageUI != null)
scanner = languageUI.getCodeScanner();
}
} else {
}
if (scanner == null) {
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();
}