> Date: Tue, 6 Jul 2010 13:07:24 +0300
> From: Yair F <yair.f.lists@...>
> Cc: "Ze'ev Clementson" <beresheit@...>, emacs-bidi@... >
> On Mon, Jul 5, 2010 at 9:42 PM, Eli Zaretskii <eliz@...> wrote:
> > The rest is mostly higher-level application and usability features,
> > which I hope can be written entirely in Lisp. I also hope that
> > motivated people who use bidi scripts and know Lips will come up on
> > board and help both design and implement these features, because no
> > single person can do that alone, especially not this old fart.
> I can give a hand, What else do you think is missing at the lisp level?
I don't have a full list or a detailed plan. What's below is just a
knee-jerk reaction, plus bits and pieces I gathered from my notes.
Note that most of the suff needs at least some discussion and then
design, before it can be coded.
For now, there's only one feature implemented on this level: the
effect of left and right arrow keys that is sensitive to the current
paragraph direction. But this is just a bare minimum.
With those caveats out of my way, here's what I've got, in no
. UI issues.
Some URLs with UI issues pertinent to bidi scripts are:
Do we need some or all of those features? If we do, how would we
want them to work in Emacs? This needs discussion and decisions,
. Reveal formatting codes and bidi-specific peculiarities: do we need
a mode that makes RLM, LRM, RLE, LRO, PDF, etc. visible? What
about displaying the resolved bidi level of each character?
. Do we need a convenient method of inserting directional formatting
codes? Currently, unless you remember the Unicode codepoint by
heart, the only way is "C-x 8 RET RIGHT-TO-LEFT OVERRIDE RET" etc.
. A command to force L2R or R2L base direction on a paragraph (should
simply insert LRM or RLM in front of the paragraph). Should also
handle several paragraphs marked by the region.
. Display a second cursor where insertion and deletion positions are
ambiguous due to reordering. (hexl-mode is an example of
displaying a second cursor using overlays.)
- This will need some kind of support from the display engine. Is
it enough to return the resolved level of a character given its
buffer or screen position?
. A mode that shows the buffer in its un-reordered logical order.
This one is trivial to implement (just toggle
bidi-display-reordering), but I'd like to hear agreement that it is
. What about inserting mirrored characters? We can easily handle
this in input methods, and keyboard input, at least with some
localized keyboard layouts, already does this outside of Emacs, but
what about Emacs APIs such as `insert', `ucs-insert' etc.? do we
need them to mirror characters as well?
. Reordering strings and comments in program source code. See the
other discussion on this list, which is still on-going.
Implementing this will certainly need some support from the display
engine, but most of the work is on the Lisp level. I would like to
have the main design decisions soon, and then I will code the parts
in the display engine that are needed for this.
. Some interactive facility to fix reordering of a portion of text so
it displays correctly. A non-specialist, who does not know the
exact effect of the formatting characters on the reordering, will
have hard time figuring out how to do that. Even I sometimes need
to try several possible ways before I get it right. It would be
nice to have an interactive feature whereby the user could type
some portion of text in the visual order, and have Emacs insert
formatting characters to produce that effect on the screen.
This will do for the time being. If someone wants to discuss some of
these, please start a new thread for each feature (or set of features,
if they are related).