From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kenichi Handa Newsgroups: gmane.emacs.devel Subject: Re: [Emacs-diffs] /srv/bzr/emacs/trunk r105429: New function `string-mark-left-to-right' for handling LRMs. Date: Sat, 13 Aug 2011 16:00:40 +0900 Message-ID: References: <8362m3xfgz.fsf@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Trace: dough.gmane.org 1313218861 27462 80.91.229.12 (13 Aug 2011 07:01:01 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Sat, 13 Aug 2011 07:01:01 +0000 (UTC) Cc: cyd@stupidchicken.com, monnier@iro.umontreal.ca, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Aug 13 09:00:56 2011 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Qs8DI-0003XN-C5 for ged-emacs-devel@m.gmane.org; Sat, 13 Aug 2011 09:00:56 +0200 Original-Received: from localhost ([::1]:33999 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qs8DH-0004Qu-If for ged-emacs-devel@m.gmane.org; Sat, 13 Aug 2011 03:00:55 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:49554) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qs8DE-0004Qm-Uq for emacs-devel@gnu.org; Sat, 13 Aug 2011 03:00:53 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Qs8DC-0004BI-1o for emacs-devel@gnu.org; Sat, 13 Aug 2011 03:00:52 -0400 Original-Received: from mx1.aist.go.jp ([150.29.246.133]:60844) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Qs8DB-0004B4-Hw; Sat, 13 Aug 2011 03:00:49 -0400 Original-Received: from rqsmtp2.aist.go.jp (rqsmtp2.aist.go.jp [150.29.254.123]) by mx1.aist.go.jp with ESMTP id p7D70gFe003987; Sat, 13 Aug 2011 16:00:42 +0900 (JST) env-from (handa@m17n.org) Original-Received: from smtp4.aist.go.jp by rqsmtp2.aist.go.jp with ESMTP id p7D70gCA021074; Sat, 13 Aug 2011 16:00:42 +0900 (JST) env-from (handa@m17n.org) Original-Received: by smtp4.aist.go.jp with ESMTP id p7D70ed7020167; Sat, 13 Aug 2011 16:00:40 +0900 (JST) env-from (handa@m17n.org) In-Reply-To: <8362m3xfgz.fsf@gnu.org> (message from Eli Zaretskii on Fri, 12 Aug 2011 10:21:16 +0300) X-detected-operating-system: by eggs.gnu.org: Solaris 9 X-Received-From: 150.29.246.133 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:143187 Archived-At: In article <8362m3xfgz.fsf@gnu.org>, Eli Zaretskii writes: > Btw, is there a way to regex-search for a character by its bidi > category? That would make the code more elegant, and probably quite > faster as well. You can do that as follows: (1) Generate a special category table. (defvar special-category-table-for-bidi (let ((category-table (make-category-table)) (uniprop-table (unicode-property-table-internal 'bidi-class))) (define-category ?r "Bidi class R, AL, or RL" category-table) (map-char-table #'(lambda (key val) (if (memq val '(R AL RL)) (modify-category-entry key ?r category-table))) uniprop-table) category-table)) (2) Check if a string or buffer contains a special bidi-related charaters. ;; For string... (defun check-special-bidi-character (str) (with-category-table special-category-table-for-bidi (string-match "\\cr" str))) (check-special-bidi-character "abc") =3D> nil (check-special-bidi-character "abc =D7=90") =3D> 4 --- Kenichi Handa handa@m17n.org