unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dgutov@yandex.ru>
To: Paul Eggert <eggert@cs.ucla.edu>, emacs-devel@gnu.org
Subject: Re: Escaping quotes in docstrings, Was: A simple solution to "Upcoming loss of usability ..."
Date: Sun, 2 Aug 2015 00:05:54 +0300	[thread overview]
Message-ID: <55BD34B2.5060001@yandex.ru> (raw)
In-Reply-To: <55BC22BB.4020002@cs.ucla.edu>

On 08/01/2015 04:36 AM, Paul Eggert wrote:

> We can cross that bridge if we ever need to come to it.  Such a use
> can't be the default everywhere, since not every platform supports
> colors and faces (e.g., batch diagnostics).  So we'll need something
> with quotes anyway.  And we already have code that highlights the
> contents of quotations so that may well be good enough.

It doesn't need to be the default, or the default everywhere. But for it 
to be feasible to implement at least in some places, 
substitute-command-keys shouldn't translate the quotes. It should limit 
itself to translating just the constructs it translated before, as well 
as putting `escaped' text property on some characters in the output string.

>> C code is perfectly able to use Lisp functions.
>
> I expect that some of the diagnostics are at a low level, and can't
> assume that Lisp functions are callable, and that we'll need to do some
> of this at the C level regardless.  Once it's done there, why bother
> with redoing it in Lisp?

Highlighting is performed in Lisp. Linkification is performed in Lisp.

For instance, help-make-xrefs scans the Help buffer, the contents of 
which have already passed through substitute-command-keys, for matches 
of help-xref-symbol-regexp. Without knowing which quotes were escaped, 
and which appeared in the docstring as-is, it can make wrong 
cross-references. Take this definition:

(defvar foo nil
   "Referencing `\\=`--pcase-macroexpander' macro.")

The references to the function name is not linkified, and to solve this 
problem better in general, Lisp will need to know which characters were 
escaped and which weren't. Here's a contrived example which can't be 
fixed without that:

(defun ’‘ (a b c)
   "It's called `’‘'."
   (+ 1 2 3))

Of course, we don't have any functions with curly quotes in the name 
now. But weren't some people just recently clamoring for wider use of 
Unicode in Emacs Lisp sources?

> Whether substitute-command-keys does it directly, or via calling some
> other function, is an implementation detail and it's not clear to me yet
> which is the right way to go here.

It shouldn't perform the translation at all. Not directly, nor via 
another function. Its callers can do the translation better, and maybe 
in different ways, depending on the context.



  reply	other threads:[~2015-08-01 21:05 UTC|newest]

Thread overview: 51+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-25 14:59 A simple solution to "Upcoming loss of usability ..." Oleh Krehel
2015-06-25 15:37 ` Dmitry Gutov
2015-06-25 16:36 ` Paul Eggert
2015-06-25 17:00   ` Oleh Krehel
2015-06-25 20:48     ` Paul Eggert
2015-06-25 21:10       ` Dmitry Gutov
2015-06-25 22:15         ` Paul Eggert
2015-06-25 22:25           ` Dmitry Gutov
2015-06-25 22:41             ` Paul Eggert
2015-06-25 22:52               ` Dmitry Gutov
2015-06-27 15:00         ` raman
2015-06-25 18:32   ` Dmitry Gutov
2015-06-25 22:17     ` Paul Eggert
2015-06-25 22:38       ` Dmitry Gutov
2015-06-26  2:35         ` Paul Eggert
2015-06-26 12:06           ` Dmitry Gutov
2015-06-27 17:28             ` Paul Eggert
2015-06-27 17:53               ` Dmitry Gutov
2015-06-27 21:09                 ` Paul Eggert
2015-06-28  1:04                   ` Dmitry Gutov
2015-06-28 15:20                     ` Paul Eggert
2015-06-28 20:27                       ` Escaping quotes in docstrings, Was: " Dmitry Gutov
2015-06-28 23:29                         ` Dmitry Gutov
2015-07-01  2:56                           ` Paul Eggert
2015-07-02  0:09                             ` Dmitry Gutov
2015-07-02  6:57                               ` Paul Eggert
2015-07-02  9:46                                 ` Dmitry Gutov
2015-07-06  6:12                                 ` Paul Eggert
2015-07-06 12:07                                   ` Dmitry Gutov
2015-07-06 16:30                                     ` Paul Eggert
2015-07-06 22:10                                       ` Dmitry Gutov
2015-07-07  7:54                                         ` Paul Eggert
2015-07-07  8:39                                           ` Dmitry Gutov
2015-08-01  1:36                                             ` Paul Eggert
2015-08-01 21:05                                               ` Dmitry Gutov [this message]
2015-08-02  6:56                                                 ` Paul Eggert
2015-08-02 12:51                                                   ` Dmitry Gutov
2015-08-02 15:13                                                     ` Paul Eggert
2015-08-02 18:31                                                       ` Dmitry Gutov
2015-08-02  8:49                                                 ` Przemysław Wojnowski
2015-08-02 19:16                                                   ` Drew Adams
2015-06-27 17:57               ` Dmitry Gutov
2015-06-25 23:12       ` João Távora
2015-06-26  7:40       ` Oleh Krehel
2015-06-26 14:54         ` Paul Eggert
2015-06-26 15:03           ` Dmitry Gutov
2015-06-25 20:58   ` Alan Mackenzie
2015-06-25 22:34     ` Paul Eggert
2015-06-25 22:40       ` Dmitry Gutov
2015-06-25 22:45         ` Paul Eggert
2015-06-25 22:55           ` Dmitry Gutov

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=55BD34B2.5060001@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=eggert@cs.ucla.edu \
    --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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).