From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Lars Magne Ingebrigtsen Newsgroups: gmane.emacs.devel Subject: Re: Bidirectional text and URLs Date: Sun, 30 Nov 2014 20:10:29 +0100 Organization: Programmerer Ingebrigtsen Message-ID: References: <87a93cngwv.fsf@uwakimon.sk.tsukuba.ac.jp> <837fyfml31.fsf@gnu.org> <874mtio7wh.fsf@uwakimon.sk.tsukuba.ac.jp> <83r3wml8kq.fsf@gnu.org> <83zjb9an0q.fsf@gnu.org> <831toka82r.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1417374952 28339 80.91.229.3 (30 Nov 2014 19:15:52 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 30 Nov 2014 19:15:52 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Nov 30 20:15:46 2014 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Xv9yD-0002aV-Ig for ged-emacs-devel@m.gmane.org; Sun, 30 Nov 2014 20:15:45 +0100 Original-Received: from localhost ([::1]:51478 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xv9yD-0004n9-3Q for ged-emacs-devel@m.gmane.org; Sun, 30 Nov 2014 14:15:45 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36202) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xv9xg-0004mx-Ba for emacs-devel@gnu.org; Sun, 30 Nov 2014 14:15:18 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xv9xa-0005Qp-4Z for emacs-devel@gnu.org; Sun, 30 Nov 2014 14:15:12 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:60675) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xv9xZ-0005O4-Ul for emacs-devel@gnu.org; Sun, 30 Nov 2014 14:15:06 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1Xv9xX-0002Hp-Dm for emacs-devel@gnu.org; Sun, 30 Nov 2014 20:15:03 +0100 Original-Received: from cm-84.215.51.58.getinternet.no ([84.215.51.58]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 30 Nov 2014 20:15:03 +0100 Original-Received: from larsi by cm-84.215.51.58.getinternet.no with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sun, 30 Nov 2014 20:15:03 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: emacs-devel@gnu.org Original-Lines: 35 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: cm-84.215.51.58.getinternet.no Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAAFVBMVEW+sqD9+ecJCw4ABQgn HiBeTUUBBwt57iBIAAACQklEQVQ4jXVTwa7bIBBcV+HuSM292mJ/QHnyOUXsnVjsD+An/v8TOgt2 +nooimzCsDPDLKb7fwbZY6brH/0DzDeWPLuUEvskeboAVyJ7eYiWFDFLKQ/AJebIMQkVzJKqRkNo 2qNXLcwq0QMuQuTARr93UVHdOXofWQRYF6G8C90SF4Eys4/+Au47C3YmSVETL6LstQNTklgWOCrR g4+lwLsBzyXHIupSkd3IUO/TCwCL8zcll5aXY1/YKj1kiJ9FSWeHo2WnE00zLOCMBP85F8ogGOT3 HoRR3SCftShM+ZfJFl7SBACaEQE5SfBsNZiVF7FxAFoKe8pSDElKT4rfkCfXn82cIsk9T7MoZdpL Sj804swZWabFyTRn557kCk6Wy9mfGfE+HzDypOzv9Jjm0bY7shS9qQg0li83AOya9eaSZhL6AjyQ Gjr1XRHB6+udeajep9vLXl/3g2qC1pxnXCNC85Wu4fJ7SmuzEbbW8Dsqt1ptgWmsH1t/t2r71g7g uR1hrG+NB4yGdarQqU742Gr7NGC7ABTUYzB+aqTV5kcIoUu2zd61AOisIQzkgNxqQIpd4wgDCqfO L6tY2wENI4PlYwuDqsTrgKHZcndwtA33/qTC2NqQQeW7wpYN2PrJwxsIVrEZFXPPDd8Vn1QbKrqj XsgFGkMabsB9jD3maqTbxa+Eof2Z3nZRsR0jFMSOivUERquuhtQEKj4D7eu1dqB9nP24ilplM3yE j70i3foXYh4n+dhBtdq2ld9A5bXh6/0DlnQLbdeKcrIAAAAASUVORK5CYII= Mail-Copies-To: never X-Now-Playing: Depeche Mode's _Shake The Disease_: "Shake The Disease (Remixed Extended Version)" User-Agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/25.0.50 (gnu/linux) Cancel-Lock: sha1:YRFwchQ7C9Aq1gao96GO/AUy85c= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:178539 Archived-At: Bug fix! Leading neutralish characters would defeat it. (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) (setq start pos)) (when (memq current '(L R AL)) (setq prev current)) (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