[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [emacs-bidi] Summary of bidi branch?

From: Eli Zaretskii
Subject: Re: [emacs-bidi] Summary of bidi branch?
Date: Fri, 30 Mar 2007 15:37:51 +0300

> Cc: Michael Blaustein <address@hidden>, address@hidden
> From: David Kastrup <address@hidden>
> Date: Fri, 30 Mar 2007 13:54:09 +0200
> Eli Zaretskii <address@hidden> writes:
> >> Date: Thu, 29 Mar 2007 23:34:49 -0400
> >> From: Michael Blaustein <address@hidden>
> >> Cc: David Kastrup <address@hidden>, address@hidden
> >> 
> >> It's not that bad!  (Assuming you mean emacs-bidi-0.9.1 at
> >> www.m17n.org.)
> >
> > No, that's not what I meant.  David was asking about the bidi branch
> > of the Emacs CVS, which has nothing in common with the m17n version.
> As far as I can tell, m17n provides a Mule based on 20.x, or on a 21
> pretest at most.
> Hard to figure out.  That code likely is not of much help, right?

There's some history to the m17n bidi version.  A patch to handle bidi
display was submitted to Emacs back when v21.1 was in last stages of
development.  It was rejected (based on negative reaction of Gerd
Moellmann, the then head maintainer and the main developer of the v21
display engine) because it used techniques that defeated all the usual
display optimizations used by Emacs, such as when you just move the
cursor or insert or delete a single character.  The patch also used a
constant-size buffer to stack characters while they were being
reordered -- which doesn't scale well to very long lines.

The discussions that followed prompted me to design and implement a
bidi reordering engine that was crafted from the ground up to be
compatible with the Emacs redisplay requirements.  (It wasn't easy,
since UAX#9 describes the reordering in a way that assumes batch-style
mechanism, i.e. that a string of characters is passed to the engine
and is expected to be reordered by the engine en-bloc.  By contrast,
Emacs wants to reorder characters one by one, as it walks its iterator
through buffer text.)

I understand that the rejected patch later became the basis for what
you now find on the m17n site.

In retrospect, perhaps that decision to reject the m17n patch was a
bad call, since we could have had a bidi Emacs in v21.x, and gather
valuable user experience by now.  But Gerd felt very strongly about
his opposition, and I at least trusted his judgment, since no one knew
the Emacs display engine as well as he did, maybe still don't.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]