all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Ted Zlatanov <tzz@lifelogs.com>
To: emacs-devel@gnu.org
Subject: Re: Bidirectional text and URLs
Date: Sat, 29 Nov 2014 12:14:38 -0500	[thread overview]
Message-ID: <87h9xi2akh.fsf@lifelogs.com> (raw)
In-Reply-To: 83r3wml8kq.fsf@gnu.org

On Sat, 29 Nov 2014 10:22:45 +0200 Eli Zaretskii <eliz@gnu.org> wrote: 

EZ> Once we decide which cases we want to avoid or flag, we could be smart
EZ> there, by comparing the original and reordered strings, perhaps aided
EZ> by some dictionary lookup.  The infrastructure is either already there
EZ> or easy to add.  It's "just" a matter of deciding what to do and when.

EZ> Someone(TM) should present a list of well-thought requirements, and we
EZ> can take it from there.

Well, here are the pieces I think will be useful for SHR and EWW. I
don't claim they are well-thought :)

Items 1-3 could be used through font-lock and just set some special text
properties in the buffer in text modes that request it (so this will be
an optional piece that is always available). Then themes and packages
can add special highlighting or handling for those properties.

1) bring uni-confusables in the core. In regular expressions, support
either a new syntax char class \s~ to mean "confusable" or a new
character class [:confusable:] (or some other way to easily search for
such characters, especially if they used outside of their
native script).  Possible text property: 'uni-confusable

2) in regular expressions, support a new character class [:unicodemeta:]
for any characters that have meta meaning in Unicode and no printable
representation, from bidi markers to composition. I'm not sure if that's
already possible. That will allow packages to detect these characters in
places where they are not expected, e.g. inside URL buttons. Possible
text property: 'uni-meta

3) make it easy in the core to scan the buffer for places where scripts
are mixed in a single sentence, string, word, symbol, etc. syntactic
unit. markchars.el does that but only inside words. Possible text
property: 'uni-mixedscripts

4) modify `browse-url' to intercept suspicious URLs where any of the
above happened in the source buffer. I think the calling package will
have to help set the context. I don't know if it can be automated...
maybe the function could look for those special text properties around
point in the buffer where it was invoked?

5) modify SHR/EWW to highlight these text properties and interrupt the
user when the text or content of the URL button has them.

Does that seem useful?

Ted




  parent reply	other threads:[~2014-11-29 17:14 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
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 [this message]
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=87h9xi2akh.fsf@lifelogs.com \
    --to=tzz@lifelogs.com \
    --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.