]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix Arabic shaping when column-number-mode is in effect
authorPip Cet <pipcet@gmail.com>
Fri, 5 Jun 2020 12:54:01 +0000 (12:54 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 25 Jul 2020 16:19:27 +0000 (19:19 +0300)
* src/indent.c (scan_for_column, compute_motion): Pass -1,
instead of NEUTRAL_DIR, to 'composition_reseat_it'.
* src/composite.c (composition_reseat_it): Interpret negative
value of BIDI_LEVEL to mean the caller doesn't know what is the
bidi direction of the text.  (Bug#41005)

src/composite.c
src/indent.c

index 364d5c9316e5c2121ebdb711b7231c6c54013a6e..2fbe6796b59fce6623503964ec75983e7a514728 100644 (file)
@@ -1217,7 +1217,9 @@ composition_reseat_it (struct composition_it *cmp_it, ptrdiff_t charpos,
        continue;
       if (charpos < endpos)
        {
-         if ((bidi_level & 1) == 0)
+         if (bidi_level < 0)
+           direction = Qnil;
+         else if ((bidi_level & 1) == 0)
            direction = QL2R;
          else
            direction = QR2L;
index f7db42783c183088da505e48706768eeb34a5661..939e5931db054d477029cd74c573440a97e6a816 100644 (file)
@@ -598,7 +598,7 @@ scan_for_column (ptrdiff_t *endpos, EMACS_INT *goalcol, ptrdiff_t *prevcol)
       if (cmp_it.id >= 0
          || (scan == cmp_it.stop_pos
              && composition_reseat_it (&cmp_it, scan, scan_byte, end,
-                                       w, NEUTRAL_DIR, NULL, Qnil)))
+                                       w, -1, NULL, Qnil)))
        composition_update_it (&cmp_it, scan, scan_byte, Qnil);
       if (cmp_it.id >= 0)
        {
@@ -1506,7 +1506,7 @@ compute_motion (ptrdiff_t from, ptrdiff_t frombyte, EMACS_INT fromvpos,
          if (cmp_it.id >= 0
              || (pos == cmp_it.stop_pos
                  && composition_reseat_it (&cmp_it, pos, pos_byte, to, win,
-                                           NEUTRAL_DIR, NULL, Qnil)))
+                                           -1, NULL, Qnil)))
            composition_update_it (&cmp_it, pos, pos_byte, Qnil);
          if (cmp_it.id >= 0)
            {