[lazarus] Updates

Mattias Gaertner nc-gaertnma at netcologne.de
Sat Nov 30 06:48:58 EST 2002


Hi all,

There is a new code completion feature: Local variable completion.

Probably everyone knows the boring ritual: You need a dummy variable for a
loop variable or a temporary string, etc. Under c you can just write 'int i'
at any place in the code, but pascal is a cleaner language and so you must
move the cursor to the start of the procedure, add a 'var i:integer', and
move back to the code, where you were actually working. 
Now, the IDE can do this for you:

For example:

procedure DoSomething;
begin
  for i:=0 to Count-1 do ;
end;

Move the cursor to the 'i' identifier and invoke the code completion
(default is Shift+Ctrl+C).
The code completion looks for <identifier>:=<expression>, then test if the
identifier already exists and if not, the code will be changed to:

procedure DoSomething;
var
  i: Integer;
begin
  for i:=0 to Count-1 do ;
end;


You can do this for most assignments. For instance:
  s:='Hi'; // string
  c:='a';  // char
  e:=3.3;  // extended
  f:=ord(clRed); // Integer

It will not work for Low(), High() or constructors and probably a few other
constructions. This is not implemented yet.

A you can see, this completion is ambigious. A constant number like 3 can be
assigned to many types. What options should be added, so that users can set
their favourite types for constants?


Other updates:

- Modified source editors are now marked with a '*' in the pagename
- OI now shows 'X items selected' during multiselection
- find expression type of @String[] constructions
- fixed vertical cursor movement when lines contain tab chars
- TStatusbar now uses InvalidateRect
- new function: InvalidateFrame. This works like InvalidateRect, 
  but invalidates only a rectangle without the content.


Mattias






More information about the Lazarus mailing list