mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 365605 - Editor should reconcile also on save
This commit is contained in:
parent
253ba9ddef
commit
6a09168b81
1 changed files with 15 additions and 13 deletions
|
@ -84,6 +84,7 @@ public class CReconciler extends MonoReconciler {
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.core.runtime.jobs.ISchedulingRule#contains(org.eclipse.core.runtime.jobs.ISchedulingRule)
|
* @see org.eclipse.core.runtime.jobs.ISchedulingRule#contains(org.eclipse.core.runtime.jobs.ISchedulingRule)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public boolean contains(ISchedulingRule rule) {
|
public boolean contains(ISchedulingRule rule) {
|
||||||
return rule == this;
|
return rule == this;
|
||||||
}
|
}
|
||||||
|
@ -91,6 +92,7 @@ public class CReconciler extends MonoReconciler {
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.core.runtime.jobs.ISchedulingRule#isConflicting(org.eclipse.core.runtime.jobs.ISchedulingRule)
|
* @see org.eclipse.core.runtime.jobs.ISchedulingRule#isConflicting(org.eclipse.core.runtime.jobs.ISchedulingRule)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public boolean isConflicting(ISchedulingRule rule) {
|
public boolean isConflicting(ISchedulingRule rule) {
|
||||||
return rule == this;
|
return rule == this;
|
||||||
}
|
}
|
||||||
|
@ -104,26 +106,31 @@ public class CReconciler extends MonoReconciler {
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partActivated(IWorkbenchPartReference partRef) {
|
public void partActivated(IWorkbenchPartReference partRef) {
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partBroughtToTop(IWorkbenchPartReference partRef) {
|
public void partBroughtToTop(IWorkbenchPartReference partRef) {
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partClosed(IWorkbenchPartReference partRef) {
|
public void partClosed(IWorkbenchPartReference partRef) {
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partDeactivated(IWorkbenchPartReference partRef) {
|
public void partDeactivated(IWorkbenchPartReference partRef) {
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partHidden(IWorkbenchPartReference partRef) {
|
public void partHidden(IWorkbenchPartReference partRef) {
|
||||||
if (partRef.getPart(false) == fTextEditor) {
|
if (partRef.getPart(false) == fTextEditor) {
|
||||||
setEditorActive(false);
|
setEditorActive(false);
|
||||||
|
@ -132,16 +139,19 @@ public class CReconciler extends MonoReconciler {
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partInputChanged(IWorkbenchPartReference partRef) {
|
public void partInputChanged(IWorkbenchPartReference partRef) {
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partOpened(IWorkbenchPartReference partRef) {
|
public void partOpened(IWorkbenchPartReference partRef) {
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui.IWorkbenchPartReference)
|
* @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui.IWorkbenchPartReference)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void partVisible(IWorkbenchPartReference partRef) {
|
public void partVisible(IWorkbenchPartReference partRef) {
|
||||||
if (partRef.getPart(false) == fTextEditor) {
|
if (partRef.getPart(false) == fTextEditor) {
|
||||||
CReconciler.this.scheduleReconciling();
|
CReconciler.this.scheduleReconciling();
|
||||||
|
@ -192,6 +202,7 @@ public class CReconciler extends MonoReconciler {
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.cdt.core.model.IElementChangedListener#elementChanged(org.eclipse.cdt.core.model.ElementChangedEvent)
|
* @see org.eclipse.cdt.core.model.IElementChangedListener#elementChanged(org.eclipse.cdt.core.model.ElementChangedEvent)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void elementChanged(ElementChangedEvent event) {
|
public void elementChanged(ElementChangedEvent event) {
|
||||||
if (event.getType() == ElementChangedEvent.POST_CHANGE) {
|
if (event.getType() == ElementChangedEvent.POST_CHANGE) {
|
||||||
if (isRelevantDelta(event.getDelta())) {
|
if (isRelevantDelta(event.getDelta())) {
|
||||||
|
@ -209,10 +220,7 @@ public class CReconciler extends MonoReconciler {
|
||||||
if ((flags & ICElementDelta.F_CONTENT) != 0) {
|
if ((flags & ICElementDelta.F_CONTENT) != 0) {
|
||||||
if (!fIsReconciling && isRelevantElement(delta.getElement())) {
|
if (!fIsReconciling && isRelevantElement(delta.getElement())) {
|
||||||
// mark model changed, but don't update immediately
|
// mark model changed, but don't update immediately
|
||||||
fIndexerListener.ignoreChanges(false);
|
|
||||||
setCModelChanged(true);
|
setCModelChanged(true);
|
||||||
} else if (delta.getElement() instanceof ITranslationUnit) {
|
|
||||||
fIndexerListener.ignoreChanges(true);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((flags & (
|
if ((flags & (
|
||||||
|
@ -237,11 +245,11 @@ public class CReconciler extends MonoReconciler {
|
||||||
|
|
||||||
private class IndexerListener implements IIndexerStateListener, IIndexChangeListener {
|
private class IndexerListener implements IIndexerStateListener, IIndexChangeListener {
|
||||||
private boolean fIndexChanged;
|
private boolean fIndexChanged;
|
||||||
private boolean fIgnoreChanges;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.cdt.core.index.IIndexerStateListener#indexChanged(org.eclipse.cdt.core.index.IIndexerStateEvent)
|
* @see org.eclipse.cdt.core.index.IIndexerStateListener#indexChanged(org.eclipse.cdt.core.index.IIndexerStateEvent)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void indexChanged(IIndexerStateEvent event) {
|
public void indexChanged(IIndexerStateEvent event) {
|
||||||
if (event.indexerIsIdle()) {
|
if (event.indexerIsIdle()) {
|
||||||
if (fIndexChanged || hasCModelChanged()) {
|
if (fIndexChanged || hasCModelChanged()) {
|
||||||
|
@ -252,25 +260,18 @@ public class CReconciler extends MonoReconciler {
|
||||||
setCModelChanged(true);
|
setCModelChanged(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
fIgnoreChanges= false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ignoreChanges(boolean ignore) {
|
|
||||||
fIgnoreChanges= ignore;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @see org.eclipse.cdt.core.index.IIndexChangeListener#indexChanged(org.eclipse.cdt.core.index.IIndexChangeEvent)
|
* @see org.eclipse.cdt.core.index.IIndexChangeListener#indexChanged(org.eclipse.cdt.core.index.IIndexChangeEvent)
|
||||||
*/
|
*/
|
||||||
|
@Override
|
||||||
public void indexChanged(IIndexChangeEvent event) {
|
public void indexChanged(IIndexChangeEvent event) {
|
||||||
if (!fIndexChanged && isRelevantProject(event.getAffectedProject())) {
|
if (!fIndexChanged && isRelevantProject(event.getAffectedProject())) {
|
||||||
if (!fIgnoreChanges || event.isCleared() || event.isReloaded() || event.hasNewFile()) {
|
fIndexChanged= true;
|
||||||
fIndexChanged= true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** The reconciler's editor */
|
/** The reconciler's editor */
|
||||||
|
@ -328,6 +329,7 @@ public class CReconciler extends MonoReconciler {
|
||||||
CCorePlugin.getIndexManager().addIndexChangeListener(fIndexerListener);
|
CCorePlugin.getIndexManager().addIndexChangeListener(fIndexerListener);
|
||||||
|
|
||||||
fTriggerReconcilerJob= new SingletonJob("Trigger Reconciler", new Runnable() { //$NON-NLS-1$
|
fTriggerReconcilerJob= new SingletonJob("Trigger Reconciler", new Runnable() { //$NON-NLS-1$
|
||||||
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
forceReconciling();
|
forceReconciling();
|
||||||
}});
|
}});
|
||||||
|
|
Loading…
Add table
Reference in a new issue