diff --git a/IDE/src/Compiler/BfParser.bf b/IDE/src/Compiler/BfParser.bf index 34a00e27..dfb0d967 100644 --- a/IDE/src/Compiler/BfParser.bf +++ b/IDE/src/Compiler/BfParser.bf @@ -120,7 +120,7 @@ namespace IDE.Compiler static extern bool BfParser_Reduce(void* bfParser, void* bfPassInstance); [CallingConvention(.Stdcall), CLink] - static extern char8* BfParser_Format(void* bfParser, int32 formatEnd, int32 formatStart, out int32* outCharMapping); + static extern char8* BfParser_Format(void* bfParser, int32 formatEnd, int32 formatStart, out int32* outCharMapping, int32 maxCol); [CallingConvention(.Stdcall), CLink] static extern char8* BfParser_GetDebugExpressionAt(void* bfParser, int32 cursorIdx); @@ -207,8 +207,9 @@ namespace IDE.Compiler public void Reformat(int formatStart, int formatEnd, out int32[] char8Mapping, String str) { int32* char8MappingPtr; - var stringPtr = BfParser_Format(mNativeBfParser, (int32)formatStart, (int32)formatEnd, out char8MappingPtr); - str.Append(stringPtr); + var maxCol = gApp.mSettings.mEditorSettings.mWrapCommentsAt; + var stringPtr = BfParser_Format(mNativeBfParser, (int32)formatStart, (int32)formatEnd, out char8MappingPtr, maxCol); + str.Append(stringPtr); char8Mapping = new int32[str.Length]; for (int32 i = 0; i < char8Mapping.Count; i++) diff --git a/IDE/src/Settings.bf b/IDE/src/Settings.bf index f3a2ca1d..e81f8344 100644 --- a/IDE/src/Settings.bf +++ b/IDE/src/Settings.bf @@ -625,6 +625,7 @@ namespace IDE public FileRecoveryKind mEnableFileRecovery = .Yes; public bool mFormatOnSave = false; public bool mSyncWithWorkspacePanel = false; + public int32 mWrapCommentsAt = 0; public void Serialize(StructuredData sd) { @@ -650,6 +651,7 @@ namespace IDE sd.Add("EnableFileRecovery", mEnableFileRecovery); sd.Add("FormatOnSave", mFormatOnSave); sd.Add("SyncWithWorkspacePanel", mSyncWithWorkspacePanel); + sd.Add("WrapCommentsAt", mWrapCommentsAt); } public void Deserialize(StructuredData sd) @@ -679,6 +681,7 @@ namespace IDE sd.GetEnum("EnableFileRecovery", ref mEnableFileRecovery); sd.Get("FormatOnSave", ref mFormatOnSave); sd.Get("SyncWithWorkspacePanel", ref mSyncWithWorkspacePanel); + sd.Get("WrapCommentsAt", ref mWrapCommentsAt); } public void SetDefaults() diff --git a/IDE/src/ui/SettingsDialog.bf b/IDE/src/ui/SettingsDialog.bf index ca52440c..f4f305b5 100644 --- a/IDE/src/ui/SettingsDialog.bf +++ b/IDE/src/ui/SettingsDialog.bf @@ -126,6 +126,7 @@ namespace IDE.ui AddPropertiesItem(category, "Enable File Recovery", "mEnableFileRecovery"); AddPropertiesItem(category, "Format on Save", "mFormatOnSave"); AddPropertiesItem(category, "Sync with Workspace Panel", "mSyncWithWorkspacePanel"); + AddPropertiesItem(category, "Wrap comments at length (0 = none)", "mWrapCommentsAt"); category.Open(true, true); } diff --git a/IDEHelper/Compiler/BfParser.cpp b/IDEHelper/Compiler/BfParser.cpp index e96ba38f..060fe028 100644 --- a/IDEHelper/Compiler/BfParser.cpp +++ b/IDEHelper/Compiler/BfParser.cpp @@ -3800,13 +3800,14 @@ BF_EXPORT bool BF_CALLTYPE BfParser_Reduce(BfParser* bfParser, BfPassInstance* b } static Array gCharMapping; -BF_EXPORT const char* BF_CALLTYPE BfParser_Format(BfParser* bfParser, int formatStart, int formatEnd, int** outCharMapping) +BF_EXPORT const char* BF_CALLTYPE BfParser_Format(BfParser* bfParser, int formatStart, int formatEnd, int** outCharMapping, int maxCol) { BP_ZONE("BfParser_Reduce"); String& outString = *gTLStrReturn.Get(); outString.clear(); gCharMapping.Clear(); BfPrinter bfPrinter(bfParser->mRootNode, bfParser->mSidechannelRootNode, bfParser->mErrorRootNode); + bfPrinter.mMaxCol = maxCol; bfPrinter.mFormatStart = formatStart; bfPrinter.mFormatEnd = formatEnd; bfPrinter.mCharMapping = &gCharMapping;