From efdd4632c95cc6be6efc099cfed051022fff7a84 Mon Sep 17 00:00:00 2001 From: Pip Cet Date: Fri, 5 Jun 2020 12:54:01 +0000 Subject: [PATCH] Fix Arabic shaping when column-number-mode is in effect * 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 | 4 +++- src/indent.c | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/composite.c b/src/composite.c index 364d5c9316e..2fbe6796b59 100644 --- a/src/composite.c +++ b/src/composite.c @@ -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; diff --git a/src/indent.c b/src/indent.c index f7db42783c1..939e5931db0 100644 --- a/src/indent.c +++ b/src/indent.c @@ -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) { -- 2.39.2