From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.bugs Subject: bug#27525: 25.1; Line wrapping of bidi paragraphs Date: Fri, 21 Jul 2017 16:01:35 +0300 Message-ID: <83r2xa9c5s.fsf@gnu.org> References: <8337abobuz.fsf@gnu.org> <87eftpa30a.fsf@blei.turtle-trading.net> <83a84djweb.fsf@gnu.org> <83shhsbakk.fsf@gnu.org> <83lgnjbsqw.fsf@gnu.org> <83bmofbc0f.fsf@gnu.org> <83tw269odx.fsf@gnu.org> Reply-To: Eli Zaretskii NNTP-Posting-Host: blaine.gmane.org X-Trace: blaine.gmane.org 1500642180 27708 195.159.176.226 (21 Jul 2017 13:03:00 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Fri, 21 Jul 2017 13:03:00 +0000 (UTC) Cc: 27525@debbugs.gnu.org To: Itai Berli Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Jul 21 15:02:48 2017 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYXZt-0006Wj-TK for geb-bug-gnu-emacs@m.gmane.org; Fri, 21 Jul 2017 15:02:46 +0200 Original-Received: from localhost ([::1]:43018 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dYXZz-0000jc-HM for geb-bug-gnu-emacs@m.gmane.org; Fri, 21 Jul 2017 09:02:51 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:59786) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dYXZK-0000En-2K for bug-gnu-emacs@gnu.org; Fri, 21 Jul 2017 09:02:15 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dYXZC-0004Pp-4C for bug-gnu-emacs@gnu.org; Fri, 21 Jul 2017 09:02:10 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:47790) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dYXZC-0004Pk-13 for bug-gnu-emacs@gnu.org; Fri, 21 Jul 2017 09:02:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dYXZB-0005qb-Nu for bug-gnu-emacs@gnu.org; Fri, 21 Jul 2017 09:02:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 21 Jul 2017 13:02:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 27525 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 27525-submit@debbugs.gnu.org id=B27525.150064211622466 (code B ref 27525); Fri, 21 Jul 2017 13:02:01 +0000 Original-Received: (at 27525) by debbugs.gnu.org; 21 Jul 2017 13:01:56 +0000 Original-Received: from localhost ([127.0.0.1]:50467 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYXZ6-0005qI-3R for submit@debbugs.gnu.org; Fri, 21 Jul 2017 09:01:56 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:40452) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dYXZ4-0005q5-Vq for 27525@debbugs.gnu.org; Fri, 21 Jul 2017 09:01:55 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dYXYu-0004Hx-VZ for 27525@debbugs.gnu.org; Fri, 21 Jul 2017 09:01:49 -0400 Original-Received: from fencepost.gnu.org ([2001:4830:134:3::e]:56745) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dYXYu-0004Ht-Rv; Fri, 21 Jul 2017 09:01:44 -0400 Original-Received: from 84.94.185.246.cable.012.net.il ([84.94.185.246]:2035 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1dYXYu-0001MJ-82; Fri, 21 Jul 2017 09:01:44 -0400 In-reply-to: (message from Itai Berli on Fri, 21 Jul 2017 12:44:40 +0300) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:134825 Archived-At: > From: Itai Berli > Date: Fri, 21 Jul 2017 12:44:40 +0300 > > 1. The bidi logic is entirely contained in the file bidi.c. "Bidi logic" is not well defined. If you mean the implementation of the UBA, then yes, it's in bidi.c, with the sole exception of mirroring of characters due to bidi context, which is in xdisp.c. > 2. The display logic is entirely contained in the file xdisp.c. If by "display logic" you mean the layout parts, i.e. the code which constructs screen lines out of characters and breaks physical lines into logical lines, then yes. > 3. The interface between the two modules is minimal. If I wish to cancel Emacs' bidi features, all I need to do > is comment out a couple lines in xdisp.c and a user who doesn't use bidi documents will never know the > difference. Not exactly. There are numerous code snippets that handle bidi-related complications, like the fact that buffer position is no longer monotonously increasing with screen coordinates, all over in xdisp.c. But if bidi.c functions are never called, these snippets will most probably be no-ops. > 4. All the complications you mentioned are limited to code in xdisp.c No. The current implementation includes a couple of functions in bidi.c that perform on-the-flight reordering of characters into visual order. These functions will have to be bypassed, and instead there should be a new implementation of reordering which works on a laid-out screen line. In addition, the data structures shared by bidi.c and xdisp.c will have to be changed to include the resolved level of each character and some other information (part of that is already there, but it will have to be revisited to make sure it doesn't hide some of the info needed for reordering, because currently the information is stored post-reordering).