Hi,

I've been playing with the code formatter.

If the 'Fix spacing' is checked, and 'Spaces around operators' is set to
'Never', the formatter nevertheless changes

lName:='';

to

lName := '';

Since the assignment operator is an operator, I expect it to leave the
statement as it was.

Is this intentional, or is it a bug ?

From my debugging, I can say the following:

In SingleSpaceAfter it is hard-wired to have a space:

  SingleSpaceAfterTokens: TTokenTypeSet = [ttColon, ttAssign, ttComma,
    ttPlusAssign, ttMinusAssign, ttTimesAssign, ttFloatDivAssign];

  if (pt.TokenType in SingleSpaceAfterTokens) then
  begin
    lcPrev := pt.PriorSolidToken;
    if (lcPrev <> nil) and (lcPrev.TokenType = ttDot) then // operaror  
typename.:=( )  .+= .*=
      exit(false);
    exit(True);
  end;

Similarly, in SingleSpaceBefore, it is hard-wired to have a space:

  if (pt.TokenType in AssignmentDirectives) then
  begin
    lcPrev := pt.PriorSolidToken;
    if (lcPrev <> nil) and (lcPrev.TokenType = ttDot) then // operaror  
typename.:=( )
      exit(false);
    exit(True);
  end;

So, in my opinion, clearly a bug.

:= is an operator, and should therefor obey the setting for operators.

(or a separate setting is made for the assignment operator)

Yesterday's Lazarus.

Michael.
--
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to