unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: rms@gnu.org
Cc: emacs-bidi@gnu.org, emacs-devel@gnu.org
Subject: Bidi TODO (was: Handling invisible text in bidirectional display)
Date: Fri, 22 Jan 2010 15:41:17 +0200	[thread overview]
Message-ID: <83d4126yv6.fsf@gnu.org> (raw)
In-Reply-To: <E1NWXbp-0005K7-Oh@fencepost.gnu.org>

At Richard's request, I'm posting the todo list composed out of notes
I keep while working on the bidirectional support in Emacs.  What is
already done and underwent some minimal testing is marked by "(done)".

Please note that this list is by no means complete, not even close.
I'm discovering new issues as I go along.

-------------------------------------------------------------------

* Basic display engine infrastructure

** Basic bidirectional display

*** Bidirectional iteration through display elements

  (The names below in this section are subroutines in xdisp.c)

**** next_element_from_buffer (done)

**** next_element_from_string/c_string

**** next_element_from_display_vector

  Need to decide whether to reorder the original characters of the
  ones that come out of display tables.  Maybe have an option to do
  both.

**** next_element_from_image

**** next_element_from_stretch

*** Display of text without properties (done)

*** Line truncation and continuation (done)

*** Scrolling (done)

*** Cursor positioning (done)

*** Text insertion and deletion (done)

*** Left-to-right and right-to-left paragraphs

**** Paragraph direction variable (done)

**** Dynamic determination of paragraph direction (done)

**** Support for paragraph-start and paragraph-separate that don't
begin at line beginning

*** Horizontal cursor motion (done)

*** Vertical cursor motion

  Needs a fixed current-column/move-to-column

**** Fix visual-line-mode for bidirectional text and mixed R2L/L2R lines

  Also needs a fixed current-column/move-to-column

*** Text properties and overlays

**** Properties that determine faces (done)

  This includes the `fontified' property.

**** Invisible text (in progress)

**** `display' property

***** Property value is a string

***** Property value is an image

***** Other property values

*** Selective display and ellipsis

*** Composed characters

** Terminal-specific back-ends

*** TTY back-end

  Largely done, with the single possible exception of composite
  characters (see term.c:append_composite_glyph)

*** Support reversed (R2L) glyph rows in xdisp.c:append_*

  This is a prerequisite for the GUI back-ends (below).

*** X11 back-end

*** MS-Windows back-end

*** NS back-end

* New display features specific for bidi

** Mode to show/hide LRE, RLO, PDF, and other formatting characters

** Mode to show bidirectional level of each character

** Mirrored continuation and arrow glyphs in R2L glyph rows

* Display-related subroutines

** Support bidirectional text in current-column, move-to-column, etc.

*** Many packages use these primitives: fix them for bidi

  This might need a separate solution for each one of the packages,
  depending on how it uses these primitives and for what purpose.

* Design issues

** Load bidirectional properties of characters from uni-bidi.el

  (Currently, a char-table of properties is created in C at compile
  time, independently of Unicode properties we have in uni-*.el.)

*** When to load? at dump time? upon first use?

*** Load everything at once? only for the charset being used?

** Load mirrored properties from Unicode DB

  (Currently, only ASCII characters with mirrored properties are
  supported.)

*** Same issues as with bidirectional properties above

* Applications

** UI issues in typing bidi text

  See these URLs:

    http://www-01.ibm.com/software/globalization/topics/bidiui/index.jsp
    "better tutorial on mixed directionality" in comp.windows.x.intrinsics
    http://osdir.com/ml/region.israel.ivrix.discuss/2003-05/msg00031.html
    https://bugzilla.gnome.org/show_bug.cgi?id=70451
    https://bugzilla.gnome.org/show_bug.cgi?id=136529
    https://bugzilla.gnome.org/show_bug.cgi?id=116626

** Reverse mirrored characters in input methods for bidi languages

  (Note: Some localized keyboards do that themselves.)

** Add a convenient way of typing formatting characters (RLO, LRE, PDF)

** Support in programming modes for bidi reordering in strings and comments

  Maybe we need special text properties?




  parent reply	other threads:[~2010-01-22 13:41 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-16 16:54 Handling invisible text in bidirectional display Eli Zaretskii
2010-01-16 18:43 ` martin rudalics
2010-01-16 20:32   ` Eli Zaretskii
2010-01-17  8:59     ` martin rudalics
2010-01-17 19:06       ` Eli Zaretskii
2010-01-18  8:11         ` martin rudalics
2010-01-18  9:54           ` Eli Zaretskii
2010-01-18 10:39             ` martin rudalics
2010-01-18 12:35               ` Eli Zaretskii
2010-01-16 19:15 ` David Kastrup
2010-01-16 20:37   ` Eli Zaretskii
2010-01-17 16:05     ` Richard Stallman
2010-01-17 19:29       ` Eli Zaretskii
2010-01-17 20:17         ` David Kastrup
2010-01-17 20:39           ` Ehud Karni
2010-01-17 20:51           ` Eli Zaretskii
2010-01-18  6:42             ` David Kastrup
2010-01-18  8:52               ` Eli Zaretskii
2010-01-16 19:56 ` Stefan Monnier
2010-01-16 20:53   ` Eli Zaretskii
2010-01-17 16:04     ` Richard Stallman
2010-01-17 18:24       ` Eli Zaretskii
2010-01-18 11:56         ` Richard Stallman
2010-01-22 13:41       ` Eli Zaretskii [this message]
2010-02-01 14:48         ` [emacs-bidi] Bidi TODO (was: Handling invisible text in bidirectional display) Ehud Karni
2010-01-18  1:27     ` Handling invisible text in bidirectional display Kenichi Handa
2010-01-18  4:00       ` Eli Zaretskii
2010-01-18  7:40         ` Kenichi Handa
2010-01-18  8:56           ` Eli Zaretskii
2010-01-18 11:09             ` Kenichi Handa

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83d4126yv6.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=emacs-bidi@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=rms@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).