Difference between revisions of "Fully automatic indentation"

From Free Pascal wiki
Jump to navigationJump to search
Line 9: Line 9:
 
<Delphi>
 
<Delphi>
 
procedure Do;
 
procedure Do;
begin
+
var
    
+
   i: integer; // indent after var
end;
+
begin        // no indent after procedure, no indent before procedure-begin, unindent after var section
</Delphi>
 
 
 
<Delphi>
 
procedure Do;
 
begin
 
 
   if expr then
 
   if expr then
   begin
+
   begin      // no indent after then, no indent before then-begin
     Code;
+
     Code;     // indent after begin
   end;
+
   end;       // unindent before end
 
end;
 
end;
 
</Delphi>
 
</Delphi>
Line 27: Line 22:
 
procedure Do;
 
procedure Do;
 
begin
 
begin
   if expr then begin
+
   if expr then begin
     Code;
+
     Code;             // indent after begin
   end;
+
   end;               // unindent before end
 
end;
 
end;
 
</Delphi>
 
</Delphi>
Line 37: Line 32:
 
begin
 
begin
 
   if expr then
 
   if expr then
     begin
+
     begin   // indent after then and unindent after then-statement
     Code;
+
     Code;   // no indent after begin
     end;
+
     end;   // no unindent before end
 
end;
 
end;
 
</Delphi>
 
</Delphi>
Line 47: Line 42:
 
begin
 
begin
 
   if expr then
 
   if expr then
     begin
+
     begin     // indent after then
       Code;
+
       Code;   // indent after begin
     end;
+
     end;     // unindent before end
end;
+
end;        
 
</Delphi>
 
</Delphi>

Revision as of 14:51, 22 May 2009

Overview

The source editor should auto indent on pressing return/enter, on paste and when inserting auto generated code. This depends on language and user preferences. Most other editors use either a fixed set of rules or a set of options to configure the rules. This is semi automatic indentation. These options are either too simple or too complex. And they only allow one set of rules, so editing sources with different policies is difficult.

Fully automatic indentation tries to guess the rules from the surrounding code.

Examples

<Delphi> procedure Do; var

 i: integer; // indent after var

begin // no indent after procedure, no indent before procedure-begin, unindent after var section

 if expr then
 begin       // no indent after then, no indent before then-begin
   Code;     // indent after begin
 end;        // unindent before end

end; </Delphi>

<Delphi> procedure Do; begin

 if expr then begin  
   Code;             // indent after begin
 end;                // unindent before end

end; </Delphi>

<Delphi> procedure Do; begin

 if expr then
   begin   // indent after then and unindent after then-statement
   Code;   // no indent after begin
   end;    // no unindent before end

end; </Delphi>

<Delphi> procedure Do; begin

 if expr then
   begin     // indent after then
     Code;   // indent after begin
   end;      // unindent before end

end; </Delphi>