From: Lars Magne Ingebrigtsen <larsi@gnus.org>
To: emacs-devel@gnu.org
Subject: Re: Bidirectional text and URLs
Date: Sun, 30 Nov 2014 20:06:48 +0100 [thread overview]
Message-ID: <m3tx1g5wzb.fsf@stories.gnus.org> (raw)
In-Reply-To: m3bnno7dzx.fsf@stories.gnus.org
Ok, it was a bit longer than 7 lines, and I'm not quite sure what to do
about further embedded LRM, RLM, ALM, LRE, RLE, LRO, RLO, PDF, LRI, RLI,
FSI, PDI characters (perhaps just drop them?), but here's a kinda weak
proof of concept.
Eval the following, and you sort of get what you'd expect.
(concat (string ?\x202e) "---" (ensure-left-to-right-string "http://אבג.דהוזחט.קום/yes/indeed.קום///"))
?\x202e is the right-to-left override.
Compare with the output you get if you don't hack up the URL and
sprinkle LROs:
(concat (string ?\x202e) "---" "http://אבג.דהוזחט.קום/yes/indeed.קום///")
(defun ensure-left-to-right-string (string)
(let ((prev (get-char-code-property (aref string 0) 'bidi-class))
(start 0)
(pos 0)
(bits nil))
(while (< pos (length string))
(setq current (get-char-code-property (aref string pos) 'bidi-class))
(when (or (and (eq prev 'L)
(memq current '(R AL)))
(and (memq prev '(R AL))
(eq current 'L)))
(push (substring string start pos) bits)
(when (memq current '(L R AL))
(setq prev current))
(setq start pos))
(cl-incf pos))
(push (substring string start pos) bits)
(mapconcat
(lambda (bit)
(if (cl-notany (lambda (char)
(memq (get-char-code-property char 'bidi-class) '(R AL)))
bit)
;; Wrap the string in LRO and PDF.
(concat (string ?\x202d) bit (string ?\x202C))
;; And RLO and PDF for the right-to-left bits.
(concat (string ?\x202e) bit (string ?\x202C))))
(nreverse bits)
"")))
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
next prev parent reply other threads:[~2014-11-30 19:06 UTC|newest]
Thread overview: 133+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-28 2:51 Bidirectional text and URLs Lars Magne Ingebrigtsen
2014-11-28 3:27 ` Stephen J. Turnbull
2014-11-28 14:54 ` Eli Zaretskii
2014-11-29 6:09 ` Stephen J. Turnbull
2014-11-29 8:22 ` Eli Zaretskii
2014-11-29 17:05 ` Richard Stallman
2014-11-29 17:13 ` Lars Magne Ingebrigtsen
2014-11-29 17:49 ` Lars Magne Ingebrigtsen
2014-11-29 17:54 ` Lars Magne Ingebrigtsen
2014-11-29 18:24 ` Eli Zaretskii
2014-11-29 18:29 ` Lars Magne Ingebrigtsen
2014-11-30 9:38 ` Richard Stallman
2014-11-30 15:21 ` Eli Zaretskii
2014-11-29 18:18 ` Eli Zaretskii
2014-11-29 18:33 ` Lars Magne Ingebrigtsen
2014-11-29 18:47 ` Eli Zaretskii
2014-11-29 19:12 ` Andreas Schwab
2014-11-29 19:31 ` Lars Magne Ingebrigtsen
2014-11-29 19:39 ` Andreas Schwab
2014-11-29 20:13 ` Eli Zaretskii
2014-11-30 16:26 ` Lars Magne Ingebrigtsen
2014-11-30 17:29 ` Yuri Khan
2014-11-30 17:57 ` Lars Magne Ingebrigtsen
2014-11-30 18:18 ` Eli Zaretskii
2014-11-30 17:53 ` Eli Zaretskii
2014-11-30 18:13 ` Lars Magne Ingebrigtsen
2014-11-30 19:06 ` Lars Magne Ingebrigtsen [this message]
2014-11-30 19:10 ` Lars Magne Ingebrigtsen
2014-11-30 20:41 ` Eli Zaretskii
2014-11-30 19:19 ` Lars Magne Ingebrigtsen
2014-11-30 21:05 ` Eli Zaretskii
2014-11-30 21:36 ` Lars Magne Ingebrigtsen
2014-12-01 3:45 ` Eli Zaretskii
2014-12-01 16:19 ` Lars Magne Ingebrigtsen
2014-12-01 17:39 ` Eli Zaretskii
2014-12-01 17:49 ` Lars Magne Ingebrigtsen
2014-12-01 18:22 ` Eli Zaretskii
2014-12-01 18:28 ` Lars Magne Ingebrigtsen
2014-12-02 14:17 ` Eli Zaretskii
2014-12-02 16:31 ` Lars Magne Ingebrigtsen
2014-12-01 19:15 ` Richard Stallman
2014-12-01 19:15 ` Richard Stallman
2014-12-01 19:34 ` Eli Zaretskii
2014-12-01 20:21 ` Eli Zaretskii
2014-12-01 20:30 ` David Kastrup
2014-12-01 20:45 ` Eli Zaretskii
2014-12-02 14:45 ` Richard Stallman
2014-12-02 14:45 ` Richard Stallman
2014-12-02 15:03 ` Eli Zaretskii
2014-12-03 8:39 ` Richard Stallman
2014-12-03 17:39 ` Eli Zaretskii
2014-12-04 9:41 ` Eli Zaretskii
2014-12-05 11:16 ` Richard Stallman
2014-12-05 11:28 ` Eli Zaretskii
2014-12-05 22:43 ` Richard Stallman
2014-12-05 23:15 ` Eli Zaretskii
2014-12-06 12:06 ` Richard Stallman
2014-12-06 12:59 ` Eli Zaretskii
2014-12-05 22:43 ` Richard Stallman
2014-12-05 23:17 ` Eli Zaretskii
2014-12-06 12:06 ` Richard Stallman
2014-12-02 14:44 ` Richard Stallman
2014-12-02 15:00 ` Eli Zaretskii
2014-12-03 8:39 ` Richard Stallman
2014-11-30 9:38 ` Richard Stallman
2014-11-30 15:27 ` Eli Zaretskii
2014-12-01 10:17 ` Richard Stallman
2014-12-01 16:17 ` Eli Zaretskii
2014-12-02 14:42 ` Richard Stallman
2014-12-02 14:48 ` Eli Zaretskii
2014-12-03 8:38 ` Richard Stallman
2014-12-03 11:56 ` Nicolas Richard
2014-12-03 17:12 ` Richard Stallman
2014-12-03 17:38 ` Eli Zaretskii
2014-12-04 14:30 ` Richard Stallman
2014-12-04 15:53 ` Stefan Monnier
2014-12-04 17:30 ` Eli Zaretskii
2014-12-04 20:25 ` Paul Eggert
2014-12-02 14:42 ` Richard Stallman
2014-12-02 14:52 ` Eli Zaretskii
2014-12-02 18:05 ` Eli Zaretskii
2014-12-03 17:13 ` Richard Stallman
2014-12-03 18:14 ` Eli Zaretskii
2014-12-05 22:44 ` Richard Stallman
2014-12-05 23:19 ` Eli Zaretskii
2014-12-07 9:20 ` Richard Stallman
2014-12-07 15:50 ` Eli Zaretskii
2014-12-08 0:26 ` Richard Stallman
2014-12-08 15:46 ` Eli Zaretskii
2014-12-03 17:13 ` Richard Stallman
2014-12-03 17:13 ` Richard Stallman
2014-11-29 17:14 ` Ted Zlatanov
2014-11-30 13:42 ` Stephen J. Turnbull
2014-11-30 15:36 ` Eli Zaretskii
2014-12-01 10:18 ` Richard Stallman
2014-12-01 16:18 ` Eli Zaretskii
2014-12-01 18:32 ` Stephen J. Turnbull
2014-12-01 19:12 ` Eli Zaretskii
2014-12-01 20:08 ` Stephen J. Turnbull
2014-12-01 20:42 ` Eli Zaretskii
2014-12-02 14:42 ` Richard Stallman
2014-12-02 14:54 ` Eli Zaretskii
2014-12-03 8:39 ` Richard Stallman
2014-11-28 11:19 ` Ted Zlatanov
2014-11-28 13:58 ` Lars Magne Ingebrigtsen
2014-11-28 19:49 ` Ted Zlatanov
2014-11-28 21:02 ` Stefan Monnier
2014-11-29 0:26 ` Ted Zlatanov
2014-11-28 22:26 ` Eli Zaretskii
2014-11-28 14:24 ` Stefan Monnier
2014-11-28 14:57 ` Eli Zaretskii
2014-11-29 6:17 ` Stephen J. Turnbull
2014-11-28 14:45 ` Eli Zaretskii
2014-11-28 17:09 ` Richard Stallman
2014-11-28 18:28 ` Eli Zaretskii
2014-11-29 17:03 ` Richard Stallman
2014-11-29 17:06 ` Eli Zaretskii
2014-11-30 9:37 ` Richard Stallman
2014-11-30 15:16 ` Eli Zaretskii
2014-12-01 10:18 ` Richard Stallman
2014-12-01 16:02 ` Eli Zaretskii
2014-11-28 19:28 ` Andreas Schwab
2014-11-29 17:04 ` Richard Stallman
2014-11-29 17:11 ` Eli Zaretskii
2014-11-30 9:38 ` Richard Stallman
2014-11-30 15:20 ` Eli Zaretskii
2014-11-30 23:39 ` chad
2014-12-01 3:49 ` Eli Zaretskii
2014-12-01 8:01 ` chad
2014-12-01 15:58 ` Eli Zaretskii
2014-12-02 14:41 ` Richard Stallman
2014-12-01 19:17 ` Richard Stallman
2014-12-01 10:18 ` Richard Stallman
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m3tx1g5wzb.fsf@stories.gnus.org \
--to=larsi@gnus.org \
--cc=emacs-devel@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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.