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:
parent
8cf13ce26a
commit
20ace94bc2
5 changed files with 86 additions and 51 deletions
|
@ -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$
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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)
|
||||
*/
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -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();
|
||||
|
||||
}
|
Loading…
Add table
Reference in a new issue