From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stephen Berman via "Bug reports for GNU Emacs, the Swiss army knife of text editors" Newsgroups: gmane.emacs.bugs Subject: bug#69384: 30.0.50; :align-to and bidi-paragraph-direction interaction Date: Sun, 25 Feb 2024 22:18:10 +0100 Message-ID: <87msroz1il.fsf@gmx.net> References: <87a5no1pka.fsf@gmx.net> <86o7c4wkwb.fsf@gnu.org> <874jdw1n0w.fsf@gmx.net> <86h6hwwip1.fsf@gnu.org> <87v86cz9g0.fsf@gmx.net> <86cyskwcns.fsf@gnu.org> Reply-To: Stephen Berman Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38951"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: 69384@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sun Feb 25 22:18:56 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1reLtf-0009oq-NZ for geb-bug-gnu-emacs@m.gmane-mx.org; Sun, 25 Feb 2024 22:18:55 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1reLtO-00049p-SF; Sun, 25 Feb 2024 16:18:38 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1reLtN-00049e-Uq for bug-gnu-emacs@gnu.org; Sun, 25 Feb 2024 16:18:38 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1reLtN-00025g-ME for bug-gnu-emacs@gnu.org; Sun, 25 Feb 2024 16:18:37 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1reLtm-0000oG-IS for bug-gnu-emacs@gnu.org; Sun, 25 Feb 2024 16:19:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Stephen Berman Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 25 Feb 2024 21:19:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 69384 X-GNU-PR-Package: emacs Original-Received: via spool by 69384-submit@debbugs.gnu.org id=B69384.17088959293069 (code B ref 69384); Sun, 25 Feb 2024 21:19:02 +0000 Original-Received: (at 69384) by debbugs.gnu.org; 25 Feb 2024 21:18:49 +0000 Original-Received: from localhost ([127.0.0.1]:49790 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reLtY-0000nN-7a for submit@debbugs.gnu.org; Sun, 25 Feb 2024 16:18:48 -0500 Original-Received: from mout.gmx.net ([212.227.17.21]:42731) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1reLtT-0000mg-1F for 69384@debbugs.gnu.org; Sun, 25 Feb 2024 16:18:46 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1708895892; x=1709500692; i=stephen.berman@gmx.net; bh=sNXcaei4JTDP8wZmUwt+crUoLZRTcuEdORy4ttAWcjY=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References: Date; b=CBuz5xDxnG9ouE47Wf5kpRl8+Q7a/LLVA/zP/Ts1zbzsdTmd+FP1gUgPdAzLj7q6 swyVZNq9r/eJWQU006plQJYVqwc9PYT9YavkziH7AbQ+oOsXpe57fyytihOhZ8TV7 Y6IMIkszRRaKuvYC7co+6k//g2wBzbQhdUaKGmt1saX7My7uP6tNWc20BWyxRuCAM TCikH9BhwD2e0xRlrLzKTqD+fIL1/cxpN5SCj7YSVG6h/VbaESxv59YbzS/f8BPhv njFtmaniJXcmSjqKespGb9FU7FlsOhc7WpxCbHs5rHSM6KVc0wbLkYrmZfp7oMYJ6 cIL1MvoymiVriyK/NQ== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from strobelfs2 ([94.134.95.138]) by mail.gmx.net (mrgmx104 [212.227.17.168]) with ESMTPSA (Nemesis) id 1N3se8-1qwFet2hHc-00zn19; Sun, 25 Feb 2024 22:18:11 +0100 In-Reply-To: <86cyskwcns.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 25 Feb 2024 21:45:43 +0200") X-Provags-ID: V03:K1:w72YxZK+Z/xk9oorsf8wGScoS2ZGdAgzJ2AI3Xk6sZ3NJZCU2Qv QXMCm1/p9L6FSV9AvwEHbCOVOrb9mkNXlHmzvzO1e2/GhFshU2/GFteaoJFEjJiljGgW77v khN2K4ca7g4FHKHcARdf07LbKHvHu6UNRiCRioxiGyZKHdcsdTJMD5TkzPPOHsmVY5CuZpB wWYxU0UizJ8/AiL9MHgEA== UI-OutboundReport: notjunk:1;M01:P0:A2eamLygcS4=;/aoUaBrQ2P0RGvEuh+jq6setzfU wkl3IfzJWYLkTQqoOUlek59DL4l10YuQrsTtzdqB9BKBDI32O6e06YukHw2PglyTINr9qBM5y RnIFGm6Hy9KZc7UDAQzOeM9bdRiqrNDls4xXcqXLIUYIv+MZv/iVFLtpvL8vZRiXXaBH/oyNS oUSZa6HX/jXAgEm8QshPcGo3ed0Fnxb38CcEUNo+3a/+v7B4GHwl9eMk0brpK1oJT6RqjxJ/v ThpHKdI/FI9nkrS2G5tCMU+U/hRggZrfp46KMpAiQkAzfVsddG8+DNCVouLuBw2QbPPMSgTWF tnytcVtkt9ISoKimAuDeWbAXNG4BxD+YiPmBcJYoa7i1U6wmawcJX+9E8UivpKS4rfGOWSIkz h/mpOIBp66GIaaT0TNMbnvYRHGIW2j9vJa3qTpXejbRXUO6AKMFNaBqhQKd/aVfC9OD+Kfke+ wLcApp1oSY3GPoRH2YlKPQvsG/RxFcmj4Jvvp1BmGWHB+kvMPxoZq3j6ySs8AFfEMd7qn0P65 J8L5ndZnDptWx2EIGK6vXkXAsjzxBSyKHCRTyLvRSGUoLOXiu8/dA/FotnCH/3MWOc4Setnet zO1l0WWpa6tenJVhrBB/icCW2MjlNLyCYM90aJsLAnKB5BMYliRK0xxYAdCqdpAmlx6wncPOZ rioLT4776bmDeXAWxmlUaGgL0iHYJHFOCSeZL0xLc5YbzpHApsNeWj6HktuU5lVc79CaLIfO9 Wf59KkIUazpV7rhnsxz2NlVmQfrP3rbzUTqBbm4Wp8POIrK8ywIHXQ8GhHOXGzwFRAxwZAxb X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:280647 Archived-At: --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On Sun, 25 Feb 2024 21:45:43 +0200 Eli Zaretskii wrote: >> From: Stephen Berman >> Cc: 69384@debbugs.gnu.org >> Date: Sun, 25 Feb 2024 19:26:55 +0100 >>=20 >> On Sun, 25 Feb 2024 19:35:22 +0200 Eli Zaretskii wrote: >>=20 >> > I don't understand well enough what were you trying to achieve, so I >> > cannot suggest how to do that. >>=20 >> I want to display RTL text aligned with LTR text; the buffer contains >> mainly LTR text. Currently just setting bidi-paragraph-direction to >> 'left-to-right is sufficient for aligning at column 0, but I may want to >> align to some column in the middle of the window, which I why I tried >> using :align-to and found calculating the needed value cumbersome. > > Sorry, this is still too vague. What do you mean by "RTL text aligned > with LTR text"? "aligned" in what way and sense? > > How about an example of text showing what you want to do? To avoid > strange effects of bidi reordering, please use lower-case letters to > represent LTR text and upper-case letters to represent RTL text. The screenshot in my first post in this bug shows the alignment I want: the last (i.e. leftmost) character of the Arabic string occupies the same horizontal position (in this case, the leftmost column) as the first (i.e. leftmost) character of the English string. >> > What do you mean by "first column (0) in LTR order"? D|o you mean the >> > leftmost column in the visual order? something else? >>=20 >> Yes, column 0 as in a buffer containing only LTR text. > > Please don't talk about column numbers in this context, because it's > confusing: in RTL text columns are counted from the right. "Leftmost > column", by contrast, is clear. Ok. >> >> the first two examples were meant to show that using these >> >> individually also works. But I gather from your reply that I've >> >> misunderstood what :align-to set to 0 means; can you enlighten me? >> > >> > It's supposed to be a no-op, of course. Exactly like in the strict >> > LTR unidirectional text. What else can it mean? >>=20 >> I now realize I shouldn't have used :align-to 0 for this case, since >> setting bidi-paragraph-direction to 'left-to-right already gives the >> desired column-0 alignment. > > Exactly. > >> It's for alignment to a columns > 0 that :align-to in combination >> with bidi-paragraph-direction could be useful, if the value of >> :align-to were easy to use, e.g. simply to to align the RTL text to >> LTR-column 20 (instead of having to do some trial-and-error >> calculation). But the broken shaping thwarts that. > > You should be able to do that without tweaking > bidi-paragraph-direction, since :align-to can use the 'left' and > 'right' positions. For example: > > (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9= =8A=D9=83=D9=85") > (b "Hello") > (buf (get-buffer-create "Test3"))) > (with-current-buffer buf > (erase-buffer) > (insert (propertize " " 'display > `(space :align-to (- right 20))) a "\n\n" b) > (switch-to-buffer buf))) > > (Except that it looks like 'left' and 'right' are reversed in this > case, probably a bug.) Thanks for the suggestion and code sample. However, this aligns the *first* (i.e. *rightmost*) character of the Arabic string with the position 20 columns from the left; see the attached screenshot, produced by the following extension of your code sample: (let* ((a "=D8=A7=D9=84=D8=B3=D9=91=D9=84=D8=A7=D9=85 =D8=B9=D9=84=D9=8A=D9= =83=D9=85") (b "Hello") (buf (get-buffer-create "Test3"))) (with-current-buffer buf (erase-buffer) (insert (propertize " " 'display `(space :align-to (- right 20))) a "\n\n" (make-string 20 ? ) b "\n12345678901234567890") (switch-to-buffer buf))) --=-=-= Content-Type: image/png Content-Disposition: attachment; filename=Screenshot_2024-02-25_21-58-11.png Content-Transfer-Encoding: base64 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 --=-=-= Content-Type: text/plain What I want is for the leftmost character of both strings to be aligned, and with :align-to I can't seem to do this without having to make a fiddly calculation. > You can also use 'text' to stand for the width of the text-area of a > window. I don't see how that would avoid the fiddly calculation. Steve Berman --=-=-=--