From 839c4e83071ac32c8ef41f8d9ec2b93a7ba69cec Mon Sep 17 00:00:00 2001 From: DomingoGP Date: Fri, 19 Jan 2024 21:39:10 +0100 Subject: [PATCH] Jedi code format: add support for record alignment directive. --- components/jcf2/Parse/BuildParseTree.pas | 5 +++++ components/jcf2/Parse/Tokens.pas | 2 ++ components/jcf2/Process/Returns/NoReturnAfter.pas | 4 ++++ components/jcf2/Process/Returns/NoReturnBefore.pas | 4 ++++ components/jcf2/Process/Returns/ReturnAfter.pas | 5 ++++- components/jcf2/Process/Spacing/SingleSpaceAfter.pas | 4 ++++ components/jcf2/Process/Spacing/SingleSpaceBefore.pas | 4 ++++ 7 files changed, 27 insertions(+), 1 deletion(-) diff --git a/components/jcf2/Parse/BuildParseTree.pas b/components/jcf2/Parse/BuildParseTree.pas index ce9ba55935..031d4c3613 100644 --- a/components/jcf2/Parse/BuildParseTree.pas +++ b/components/jcf2/Parse/BuildParseTree.pas @@ -2186,6 +2186,11 @@ begin begin RecogniseRecordBody; Recognise(ttEnd); + if fcTokenList.FirstSolidTokenType = ttAlign then + begin + Recognise(ttAlign); + RecogniseConstantExpression; + end; end; RecogniseHintDirectives; diff --git a/components/jcf2/Parse/Tokens.pas b/components/jcf2/Parse/Tokens.pas index aa2c21b531..fc944cb032 100644 --- a/components/jcf2/Parse/Tokens.pas +++ b/components/jcf2/Parse/Tokens.pas @@ -155,6 +155,7 @@ type { reserved words that are directives } ttAbsolute, + ttAlign, ttExternal, ttPascal, ttSafecall, @@ -681,6 +682,7 @@ begin AddKeyword('package', wtReservedWordDirective, ttPackage); AddKeyword('contains', wtReservedWordDirective, ttContains); AddKeyword('requires', wtReservedWordDirective, ttRequires); + AddKeyword('align', wtReservedWordDirective, ttAlign); { reseved words that are directives } AddKeyword('absolute', wtReservedWordDirective, ttAbsolute); diff --git a/components/jcf2/Process/Returns/NoReturnAfter.pas b/components/jcf2/Process/Returns/NoReturnAfter.pas index af82652fce..201d2f9fe6 100644 --- a/components/jcf2/Process/Returns/NoReturnAfter.pas +++ b/components/jcf2/Process/Returns/NoReturnAfter.pas @@ -91,6 +91,10 @@ begin if pt.HasParentNode(nAsm) then exit; + { after record ... end align XX; } + if (pt.TokenType = ttAlign) and pt.HasParentNode(nRecordType, 1) then + exit(True); + lcSetReturns := FormattingSettings.Returns; Assert(lcSetReturns <> nil); diff --git a/components/jcf2/Process/Returns/NoReturnBefore.pas b/components/jcf2/Process/Returns/NoReturnBefore.pas index 279199b1a6..bba86df613 100644 --- a/components/jcf2/Process/Returns/NoReturnBefore.pas +++ b/components/jcf2/Process/Returns/NoReturnBefore.pas @@ -71,6 +71,10 @@ begin if pt.TokenType=ttReference then exit(true); + { after record ... end align XX; } + if (pt.TokenType = ttAlign) and pt.HasParentNode(nRecordType, 1) then + exit(true); + // referencce to procedure/function if (pt.TokenType in [ttFunction,ttProcedure]) and (pt.PriorSolidTokenType=ttTo) then exit(true); diff --git a/components/jcf2/Process/Returns/ReturnAfter.pas b/components/jcf2/Process/Returns/ReturnAfter.pas index 4b61ab4bc4..45b48ade74 100644 --- a/components/jcf2/Process/Returns/ReturnAfter.pas +++ b/components/jcf2/Process/Returns/ReturnAfter.pas @@ -316,7 +316,10 @@ begin if (lcNext <> nil) and (lcNext.TokenType = ttElse) then Result := (FormattingSettings.Returns.EndElseStyle = eAlways) else - Result := True; + begin + { after record ... end align XX; } + Result := not ((lcNext <> nil) and (lcNext.TokenType = ttAlign) and lcNext.HasParentNode(nRecordType, 1)); + end; exit; end; diff --git a/components/jcf2/Process/Spacing/SingleSpaceAfter.pas b/components/jcf2/Process/Spacing/SingleSpaceAfter.pas index e2925c0f16..39205f97da 100644 --- a/components/jcf2/Process/Spacing/SingleSpaceAfter.pas +++ b/components/jcf2/Process/Spacing/SingleSpaceAfter.pas @@ -78,6 +78,10 @@ begin Result := False; + { after record ... end align XX; } + if (pt.TokenType = ttAlign) and pt.HasParentNode(nRecordType, 1) then + exit(True); + if (pt.TokenType in operators) and pt.HasParentNode(nIdentifier,1) then //operator orverloading identifier; Exit(False); diff --git a/components/jcf2/Process/Spacing/SingleSpaceBefore.pas b/components/jcf2/Process/Spacing/SingleSpaceBefore.pas index 84644bb4ea..b5ff348228 100644 --- a/components/jcf2/Process/Spacing/SingleSpaceBefore.pas +++ b/components/jcf2/Process/Spacing/SingleSpaceBefore.pas @@ -78,6 +78,10 @@ begin if pt = nil then exit; + { after record ... end align XX; } + if (pt.TokenType = ttAlign) and pt.HasParentNode(nRecordType, 1) then + exit(True); + if pt.HasParentNode(nGeneric, 1) then exit;