[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Display problems with `before-string' in overlay
From: |
Richard Stallman |
Subject: |
Re: Display problems with `before-string' in overlay |
Date: |
Mon, 16 Apr 2007 00:31:48 -0400 |
Let me try to explain (again) what the problem is. It boils down to
where to display the cursor when point is at the beginning/end of an
overlay with a `display' property. Currently, the cursor can show up
at the following positions (where OOO denotes the overlay, and ABC
denotes the surrounding characters):
A B|O O O C (point = 3)
A B O O O|C (point = 6)
I am not sure what you mean when you say "the cursor can show up".
Are you talking about where point is, or where the cursor appears?
The problem arises when you have multi-line overlays. In Emacs 21,
redisplay used a simple rule (see cursor_row_p): "if PT is at the end
of a row, and the row ends with a newline from a string, don't put
cursor on that row." This rule is desirable for multi-line
before-strings:
A B X X
X|O C
A B X X
X O|C
I don't understand those examples. What does X stand for? Where is
the newline from a string? And why would PT be at the end of that
row? If that is two example, what is the relationship between them?
I'm completely lost here.
But this rule is bad for multi-line display strings, because the
cursor gets pushed down to the next line:
A B O O
|O C (point = 3)
A B O O
O|C (point = 6)
Once again, what is the relationshp between these two examples?
This function moves point, it doesn't do anything to _the cursor_
as such. And when it moves point due to a property on an overlay,
it moves point to the end of the overlay. So how could that ever
put point like this?
A B O O
|O C (point = 3)