[Lazarus] about dialog contributors list

Graeme Geldenhuys graemeg.lists at gmail.com
Sat Oct 18 10:57:20 CEST 2008


Hi, just trying to poll an opinion on how exactly those features should 
work.

Especially in relation to the automatic indent of a new line to the 
indent of the line above. (This is when you press enter at the newly 
inserted line will be indented as much as the line under which it was 
inserted.)
Normally this is done by having the new line pre-filled with spaces. 
This conflicts with "Trim trailing spaces", as this spaces are not 
always removed. (Since bug 0011745 revision 15875, if "cursor past eol" 
is enabled those spaces are no longer inserted.)

However even without "cursor past eol", the spaces may be removed => 
press a single space, on a freshly inserted line. If you "show special 
chars" you will note that the spaces are no longer present, and the 
cursor is actually behind the end of line (with side-effects if you 
press cursor-left).

So much  about the current situation.

I believe that "trim trailing spaces" and "cursor past eol" should *not* 
affect each other at all. There should be no reason. (Of course there 
would be a need to fix "trim trailing spaces")

If they do not affect each other then the following should be true 
(IMHO, if anyone disagrees or has a better idea => that is why I am 
mailing this)

- "cursor past eol"  should make no difference
- pressing new line should always insert the spaces. (*1)
  This is even if "trim trailing spaces" is active => there are way to 
make sure those spaces are never left over

- if "trim trailing spaces" is *not* active, the spaces remain, if you 
leave the line.
  This means, if you later return to this line, and press the "end" (end 
of line key) you are at the expected position (independent of "cursor 
past eol")

-if "trim trailing spaces" is active, several things need to happen:
  - the spaces are removed, when you leave the line
    and (tricky) they will be kept in existence, but not be saved if you 
save the file while the cursor is still in this line
  - the spaces are kept,, even if you move the cursor to the left. 
Therefore pressing the "end" key (end of line) will behave as expected

This means if you leave the line, it will be empty, and pressing the 
"end" key, will keep/set the cursor at x=1 (independent of "cursor past 
eol").
Of course if "cursor past eol" is on, and you do *not* press "end" the 
cursor may be anywhere in the line.
 

*1)
Trimming happens when you leave the line, or save the text.
However the implementation would probably work  by not inserting the 
spaces for real, but by simulating there presence (which may affect if 
htey would or would  not be shown under "show special chars"). In any 
case SynEdit must/would behave exactly as if they did exist.
The idea is to keep a count of "virtual spaces" on the current line. 
This would not only apply to spaces in empty lines, but to all situation 
where spaces at the end of line will be affected by those options.

  




More information about the Lazarus mailing list