Difference between revisions of "Fully automatic indentation"
Line 9: | Line 9: | ||
<Delphi> | <Delphi> | ||
procedure Do; | procedure Do; | ||
− | + | var | |
− | + | i: integer; // indent after var | |
− | + | begin // no indent after procedure, no indent before procedure-begin, unindent after var section | |
− | |||
− | |||
− | |||
− | procedure | ||
− | 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>