[Lazarus] Live Templates
Martin Friebe
lazarus at mfriebe.de
Wed May 13 16:30:45 CEST 2009
Mattias Gärtner wrote:
> Zitat von Lee Jenkins <lee at datatrakpos.com>:
>
>> Graeme's recent post made me wonder if there is been work or talk of work on
>> implementing Live Templates like Delphi has?
>>
> Yes.
>
> 1. Lazarus will not support the Delphi syntax, because Lazarus already
> supports code macros. There are already some code macros using the
> codetools.
>
> 2. auto complete without pressing a short cut already works for
> return, space and word end.
> Some code macros are needed to fine tune adding text if parts of the
> template already exists (for example auto complete 'begin' after
> pressing return). But this is stuff for another thread.
>
> 3. templates with parameters: editing the parameters directly in the
> source editor (synedit) without a dialog. synedit needs a further edit
> mode for marking and editing several places in parallel. Martin has
> already implemented marking several places. I guess he can also create
> a plugin/extension/mechanism for the needed edit mode. When this is
> done, I will be glad to implement the rest.
> This edit mode is also needed for in situ rename.
>
Yep, it's on the list, but not yet sure when.
For code Template there a 2 main targets:
1) "Form mode"
- The code template defines several places (form-fields) where input is
needed "for [] := [] to [] do"
- the Editor the allows to navigate them using tab (or a user defined
key shortcut
2) Sync Edit
Actually this is a feature off it's own, but should work specially with
templates: the form-fields from above could be linked, editing the
content off 1, would update the other too.
Example: check a variable is in range: (while you type in field 1, the
same appears in field 2:
"if ([] >= 10) and ([] < 20) then "
>
>> I imagine that that kind of behavior is a bit of work to implement.
>>
>
> Yes, but I bet Martin has already some ideas for synedit.
>
Not exactly related to templates, but one feature, I like to add for myself.
Motivated by commenting code.
If you type "(*", this will comment all of the remaining code,
temporarily disabling all highlighting, and unfolding everything.....
A magic "add cloisng bracket".
If you type "(*" SynEdit inserts a >virtual< "*)". (Could be shown like
a hint...) the closing "*)" follow sthe caret movement.
So you can move the caret to the desired location and hit enter.
It could be cancelled bey "esc", it would also detect manually typing
the "*)" sequence....
It could work for any other pair-construct, including begin/end
More information about the Lazarus
mailing list