[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