From 3ab65737f6e5f3d4d430bdde8a7c989f2c8fea10 Mon Sep 17 00:00:00 2001 From: Martin Date: Mon, 28 Oct 2024 13:42:21 +0100 Subject: [PATCH] IDE: Custom IDE title, skip interactive macros (cherry picked from commit 01d301d685a95846453ef8789dface2413b2c502) --- ide/main.pp | 2 +- ide/packages/ideconfig/transfermacros.pp | 17 +++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ide/main.pp b/ide/main.pp index dd640b3729..216d6430af 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -9029,7 +9029,7 @@ begin if CustomnCaption <> '' then begin OldMarkUnhandledMacros := GlobalMacroList.MarkUnhandledMacros; GlobalMacroList.MarkUnhandledMacros := false; - GlobalMacroList.SubstituteStr(CustomnCaption); + GlobalMacroList.SubstituteStr(CustomnCaption, 0, 0, True); if CustomnCaption <> '' then begin NewCaption := AddToCaption(NewCaption, CustomnCaption); end; diff --git a/ide/packages/ideconfig/transfermacros.pp b/ide/packages/ideconfig/transfermacros.pp index ad0119046d..b66d2661f0 100644 --- a/ide/packages/ideconfig/transfermacros.pp +++ b/ide/packages/ideconfig/transfermacros.pp @@ -85,10 +85,10 @@ type procedure Add(NewMacro: TTransferMacro); function FindByName(const MacroName: string): TTransferMacro; function SubstituteStr(var s: string; const Data: PtrInt = 0; - Depth: integer = 0): boolean; + Depth: integer = 0; SkipInteractive: Boolean = False): boolean; procedure ExecuteMacro(const MacroName: string; var MacroParam: string; const Data: PtrInt; out Handled, Abort: boolean; - Depth: integer); + Depth: integer; SkipInteractive: boolean = False); class function StrHasMacros(const s: string): boolean; property OnSubstitution: TOnSubstitution read fOnSubstitution write fOnSubstitution; // error handling and loop detection @@ -247,8 +247,8 @@ begin // debugln('TTransferMacroList.Add A ',NewMacro.Name); end; -function TTransferMacroList.SubstituteStr(var s:string; const Data: PtrInt; - Depth: integer): boolean; +function TTransferMacroList.SubstituteStr(var s: string; const Data: PtrInt; Depth: integer; + SkipInteractive: Boolean): boolean; function SearchBracketClose(Position: integer): integer; var BracketClose: char; @@ -324,7 +324,7 @@ begin // find macro and get value Handled:=false; Abort:=false; - ExecuteMacro(MacroName,MacroParam,Data,Handled,Abort,Depth+1); + ExecuteMacro(MacroName,MacroParam,Data,Handled,Abort,Depth+1, SkipInteractive); if Abort then exit(false); if not Handled then @@ -362,15 +362,16 @@ begin end; end; -procedure TTransferMacroList.ExecuteMacro(const MacroName: string; - var MacroParam: string; const Data: PtrInt; out Handled, Abort: boolean; - Depth: integer); +procedure TTransferMacroList.ExecuteMacro(const MacroName: string; var MacroParam: string; + const Data: PtrInt; out Handled, Abort: boolean; Depth: integer; SkipInteractive: boolean); var Macro: TTransferMacro; begin Handled:=false; Abort:=false; Macro:=FindByName(MacroName); + if SkipInteractive and (Macro <> nil) and (tmfInteractive in Macro.Flags) then + exit; DoSubstitution(Macro,MacroName,MacroParam,Data,Handled,Abort,Depth); if Abort or Handled then exit; if Macro=nil then exit;