@@ -159,10 +159,37 @@ void SpaceAnalyzer::ComplexAnalyze(FormatState &f, const LuaSyntaxTree &t) {
159159 SpaceLeft (leftBrace, t, 1 );
160160 }
161161 } else {
162- if (f.GetStyle ().space_before_function_call_single_arg ) {
163- SpaceLeft (syntaxNode, t, 1 );
164- } else {
165- SpaceLeft (syntaxNode, t, 0 );
162+ switch (f.GetStyle ().space_before_function_call_single_arg ) {
163+ case FunctionSingleArgSpace::None: {
164+ SpaceLeft (syntaxNode, t, 0 );
165+ break ;
166+ }
167+ case FunctionSingleArgSpace::Always: {
168+ SpaceLeft (syntaxNode, t, 1 );
169+ break ;
170+ }
171+ case FunctionSingleArgSpace::OnlyString: {
172+ auto firstToken = syntaxNode.GetFirstToken (t);
173+ if (firstToken.GetTokenKind (t) == TK_STRING
174+ || firstToken.GetTokenKind (t) == TK_LONG_STRING) {
175+ SpaceLeft (syntaxNode, t, 1 );
176+ } else {
177+ SpaceLeft (syntaxNode, t, 0 );
178+ }
179+ break ;
180+ }
181+ case FunctionSingleArgSpace::OnlyTable: {
182+ auto firstChild = syntaxNode.GetFirstChild (t);
183+ if (firstChild.GetSyntaxKind (t) == LuaSyntaxNodeKind::TableExpression) {
184+ SpaceLeft (syntaxNode, t, 1 );
185+ } else {
186+ SpaceLeft (syntaxNode, t, 0 );
187+ }
188+ break ;
189+ }
190+ default : {
191+ break ;
192+ }
166193 }
167194 }
168195 break ;
0 commit comments