[Lazarus] Annoying code completion failure

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list


Hi,

TStrings has a property

     property Values[const Name: string]: string read GetValue write SetValue;

The setter is defined as:

procedure SetValue(const Name, Value: string);

Note that both arguments are 'const'

When adding a new property, and pressing 'CTRL-C', the IDE adds the new
property, but also insists on adding a new SetValue:

procedure SetValue(const Name: string; AValue: string);

Note the missing const on the second parameter.

It does this of course not only for TStrings, but for all such properties.

Michael.
--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list
On 02.11.2019 11:23, Michael Van Canneyt via lazarus wrote:

> TStrings has a property
>
>     property Values[const Name: string]: string read GetValue write
> SetValue;
>
> The setter is defined as:
>
> procedure SetValue(const Name, Value: string);
>
> Note that both arguments are 'const'
>
> When adding a new property, and pressing 'CTRL-C', the IDE adds the new
> property, but also insists on adding a new SetValue:
>
> procedure SetValue(const Name: string; AValue: string);
>
> Note the missing const on the second parameter.
>
> It does this of course not only for TStrings, but for all such properties.

The problem is not the const - Lazarus can ignore it. The problem is
that the parameters are joined - that is what Lazarus cannot handle.

Replace
     procedure SetValue(const Name, Value: string);
with
     procedure SetValue(const Name: string; const Value: string);

then Lazarus won't add it every time you do class completion. I know -
it's not what you currently have in the interface, but the difference is
just cosmetic. I usually let Lazarus do its job and don't care that the
parameters are separated.

Furthermore, you can make Lazarus to add the "const" automatically in
IDE options -> Codetools -> Class Completion -> Property completion ->
use const. You can also define an own parameter name or prefix (I use a
prefix).

Ondrej
--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list
Ondrej Pokorny via lazarus <[hidden email]> schrieb am So., 3. Nov. 2019, 11:21:
On 02.11.2019 11:23, Michael Van Canneyt via lazarus wrote:
> TStrings has a property
>
>     property Values[const Name: string]: string read GetValue write
> SetValue;
>
> The setter is defined as:
>
> procedure SetValue(const Name, Value: string);
>
> Note that both arguments are 'const'
>
> When adding a new property, and pressing 'CTRL-C', the IDE adds the new
> property, but also insists on adding a new SetValue:
>
> procedure SetValue(const Name: string; AValue: string);
>
> Note the missing const on the second parameter.
>
> It does this of course not only for TStrings, but for all such properties.

The problem is not the const - Lazarus can ignore it. The problem is
that the parameters are joined - that is what Lazarus cannot handle.

Replace
     procedure SetValue(const Name, Value: string);
with
     procedure SetValue(const Name: string; const Value: string);

then Lazarus won't add it every time you do class completion. I know -
it's not what you currently have in the interface, but the difference is
just cosmetic. I usually let Lazarus do its job and don't care that the
parameters are separated.

This is not what one wants to hear. Lazarus really likes to mess with existing code and it's one of the main reasons I'm *not* using class completion inside the compiler, cause otherwise I can be sure that the whole remaining class is changed as well -.-

Regards, 
Sven 

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list


On 03.11.2019 17:49, Sven Barth via lazarus wrote:
Ondrej Pokorny via lazarus <[hidden email]> schrieb am So., 3. Nov. 2019, 11:21:
On 02.11.2019 11:23, Michael Van Canneyt via lazarus wrote:
> TStrings has a property
>
>     property Values[const Name: string]: string read GetValue write
> SetValue;
>
> The setter is defined as:
>
> procedure SetValue(const Name, Value: string);
>
> Note that both arguments are 'const'
>
> When adding a new property, and pressing 'CTRL-C', the IDE adds the new
> property, but also insists on adding a new SetValue:
>
> procedure SetValue(const Name: string; AValue: string);
>
> Note the missing const on the second parameter.
>
> It does this of course not only for TStrings, but for all such properties.

The problem is not the const - Lazarus can ignore it. The problem is
that the parameters are joined - that is what Lazarus cannot handle.

Replace
     procedure SetValue(const Name, Value: string);
with
     procedure SetValue(const Name: string; const Value: string);

then Lazarus won't add it every time you do class completion. I know -
it's not what you currently have in the interface, but the difference is
just cosmetic. I usually let Lazarus do its job and don't care that the
parameters are separated.

This is not what one wants to hear.

Well, I just explained the current state. It doesn't mean it cannot be improved.


Lazarus really likes to mess with existing code and it's one of the main reasons I'm *not* using class completion inside the compiler, cause otherwise I can be sure that the whole remaining class is changed as well -.-

To be honest, the compiler code style is very quirky :)

Ondrej


--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list
Ondrej Pokorny via lazarus <[hidden email]> schrieb am So., 3. Nov. 2019, 23:15:


On 03.11.2019 17:49, Sven Barth via lazarus wrote:
Ondrej Pokorny via lazarus <[hidden email]> schrieb am So., 3. Nov. 2019, 11:21:
On 02.11.2019 11:23, Michael Van Canneyt via lazarus wrote:
> TStrings has a property
>
>     property Values[const Name: string]: string read GetValue write
> SetValue;
>
> The setter is defined as:
>
> procedure SetValue(const Name, Value: string);
>
> Note that both arguments are 'const'
>
> When adding a new property, and pressing 'CTRL-C', the IDE adds the new
> property, but also insists on adding a new SetValue:
>
> procedure SetValue(const Name: string; AValue: string);
>
> Note the missing const on the second parameter.
>
> It does this of course not only for TStrings, but for all such properties.

The problem is not the const - Lazarus can ignore it. The problem is
that the parameters are joined - that is what Lazarus cannot handle.

Replace
     procedure SetValue(const Name, Value: string);
with
     procedure SetValue(const Name: string; const Value: string);

then Lazarus won't add it every time you do class completion. I know -
it's not what you currently have in the interface, but the difference is
just cosmetic. I usually let Lazarus do its job and don't care that the
parameters are separated.

This is not what one wants to hear.

Well, I just explained the current state. It doesn't mean it cannot be improved.


Maybe Michael should file a bug report then... (and I should collect my annoyances as well :P) 


Lazarus really likes to mess with existing code and it's one of the main reasons I'm *not* using class completion inside the compiler, cause otherwise I can be sure that the whole remaining class is changed as well -.-

To be honest, the compiler code style is very quirky :)

Ondrej

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list
In reply to this post by Free Pascal - Lazarus mailing list
Ondrej Pokorny via lazarus <[hidden email]> schrieb am So., 3. Nov. 2019, 23:15:


On 03.11.2019 17:49, Sven Barth via lazarus wrote:
Ondrej Pokorny via lazarus <[hidden email]> schrieb am So., 3. Nov. 2019, 11:21:
On 02.11.2019 11:23, Michael Van Canneyt via lazarus wrote:
> TStrings has a property
>
>     property Values[const Name: string]: string read GetValue write
> SetValue;
>
> The setter is defined as:
>
> procedure SetValue(const Name, Value: string);
>
> Note that both arguments are 'const'
>
> When adding a new property, and pressing 'CTRL-C', the IDE adds the new
> property, but also insists on adding a new SetValue:
>
> procedure SetValue(const Name: string; AValue: string);
>
> Note the missing const on the second parameter.
>
> It does this of course not only for TStrings, but for all such properties.

The problem is not the const - Lazarus can ignore it. The problem is
that the parameters are joined - that is what Lazarus cannot handle.

Replace
     procedure SetValue(const Name, Value: string);
with
     procedure SetValue(const Name: string; const Value: string);

then Lazarus won't add it every time you do class completion. I know -
it's not what you currently have in the interface, but the difference is
just cosmetic. I usually let Lazarus do its job and don't care that the
parameters are separated.

This is not what one wants to hear.

Well, I just explained the current state. It doesn't mean it cannot be improved.


Lazarus really likes to mess with existing code and it's one of the main reasons I'm *not* using class completion inside the compiler, cause otherwise I can be sure that the whole remaining class is changed as well -.-

To be honest, the compiler code style is very quirky :)


Pressed "Send" too soon -.-

I won't argue that point. Nevertheless the IDE should not generate more work :P

Regards, 
Sven 

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list
In reply to this post by Free Pascal - Lazarus mailing list
On 03.11.2019 23:31, Sven Barth via lazarus wrote:
> Maybe Michael should file a bug report then... (and I should collect
> my annoyances as well :P)

Yes, that is definitely a good idea. I face myself 1-2 annoyances as
well that I haven't fixed yet.

Ondrej

--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus
Reply | Threaded
Open this post in threaded view
|

Re: [Lazarus] Annoying code completion failure

Free Pascal - Lazarus mailing list
On Mon, Nov 4, 2019 at 7:18 AM Ondrej Pokorny via lazarus
<[hidden email]> wrote:
> On 03.11.2019 23:31, Sven Barth via lazarus wrote:
> > Maybe Michael should file a bug report then... (and I should collect
> > my annoyances as well :P)
>
> Yes, that is definitely a good idea. I face myself 1-2 annoyances as
> well that I haven't fixed yet.

These are related:
 https://bugs.freepascal.org/view.php?id=35413
 https://bugs.freepascal.org/view.php?id=23324
 https://bugs.freepascal.org/view.php?id=31299
and maybe this one:
 https://bugs.freepascal.org/view.php?id=17216

Regards,
Juha
--
_______________________________________________
lazarus mailing list
[hidden email]
https://lists.lazarus-ide.org/listinfo/lazarus