diff --git a/IDE/src/Compiler/BfCompiler.bf b/IDE/src/Compiler/BfCompiler.bf index bceef606..e00b3502 100644 --- a/IDE/src/Compiler/BfCompiler.bf +++ b/IDE/src/Compiler/BfCompiler.bf @@ -676,7 +676,7 @@ namespace IDE.Compiler { if ([Friend]mThreadWorker.mThreadRunning) { - if (mNativeBfCompiler != null) + if ((mNativeBfCompiler != null) && (!gApp.mDeterministic)) BfCompiler_Cancel(mNativeBfCompiler); } } @@ -685,7 +685,7 @@ namespace IDE.Compiler { if ([Friend]mThreadWorker.mThreadRunning || [Friend]mThreadWorkerHi.mThreadRunning) { - if (mNativeBfCompiler != null) + if ((mNativeBfCompiler != null) && (!gApp.mDeterministic)) BfCompiler_RequestFastFinish(mNativeBfCompiler); } } diff --git a/IDE/src/IDEApp.bf b/IDE/src/IDEApp.bf index b9d3f13f..b8c347b6 100644 --- a/IDE/src/IDEApp.bf +++ b/IDE/src/IDEApp.bf @@ -254,6 +254,7 @@ namespace IDE // The Beef resolve system is up-to-date with the projects' files, // but the Clang resolver only has open files in it public bool mNoResolve = false; + public bool mDeterministic = false; public BfSystem mBfResolveSystem ~ delete _; public BfCompiler mBfResolveCompiler; public BfResolveHelper mBfResolveHelper ~ delete _; @@ -6992,6 +6993,8 @@ namespace IDE case "-forceSafe": mSafeMode = true; mNoResolve = true; + case "-deterministic": + mDeterministic = true; default: return false; } diff --git a/IDE/src/ui/SourceViewPanel.bf b/IDE/src/ui/SourceViewPanel.bf index 3bbc2945..64b3692a 100644 --- a/IDE/src/ui/SourceViewPanel.bf +++ b/IDE/src/ui/SourceViewPanel.bf @@ -948,6 +948,24 @@ namespace IDE.ui if (!mIsSourceCode) return true; + if (gApp.mDeterministic) + { + //return false; + + if (resolveType == .GetCurrentLocation) + return false; + if (resolveType == .GetSymbolInfo) + return true; + + while ((BfResolveCompiler.mResolveAllWait != 0) || + (BfResolveCompiler.mThreadYieldCount != 0)) + { + BfResolveCompiler.Update(); + } + + BfResolveCompiler.WaitForBackground(); + } + if (resolveParams != null) resolveParams.mResolveType = resolveType; @@ -4947,7 +4965,7 @@ namespace IDE.ui { if (mHoverResolveTask == null) { - if ((!handlingHoverResolveTask) && (ResolveCompiler != null) && (!ResolveCompiler.mThreadWorkerHi.mThreadRunning) && (gApp.mSettings.mEditorSettings.mHiliteCursorReferences)) + if ((!handlingHoverResolveTask) && (ResolveCompiler != null) && (!ResolveCompiler.mThreadWorkerHi.mThreadRunning) && (gApp.mSettings.mEditorSettings.mHiliteCursorReferences) && (!gApp.mDeterministic)) { ResolveParams resolveParams = new .(); resolveParams.mOverrideCursorPos = (int32)textIdx; @@ -5921,7 +5939,7 @@ namespace IDE.ui if (BFApp.sApp.mIsUpdateBatchStart) sourceEditWidgetContent.mCursorStillTicks++; - if ((gApp.mSettings.mEditorSettings.mHiliteCursorReferences) && (HasFocus(true)) && (mProjectSource != null) /*&& (IDEApp.sApp.mSymbolReferenceHelper == null)*/) + if ((gApp.mSettings.mEditorSettings.mHiliteCursorReferences) && (!gApp.mDeterministic) && (HasFocus(true)) && (mProjectSource != null) /*&& (IDEApp.sApp.mSymbolReferenceHelper == null)*/) { if ((mEditWidget.mHasFocus) && (mIsBeefSource) && (sourceEditWidgetContent.mCursorStillTicks == 10) && (!sourceEditWidgetContent.mCursorImplicitlyMoved) && (!sourceEditWidgetContent.mVirtualCursorPos.HasValue)) {