unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Eli Zaretskii <eliz@gnu.org>, Dmitry Gutov <dgutov@yandex.ru>
Cc: tino.calancha@gmail.com, 21391@debbugs.gnu.org
Subject: bug#21391: 24.5; `thing-at-point' should return a string
Date: Tue, 8 Nov 2016 08:31:00 -0800 (PST)	[thread overview]
Message-ID: <be3c2c08-aa68-49d3-b6b4-3ed9a97e3dd6@default> (raw)
In-Reply-To: <<83inrygggr.fsf@gnu.org>>

> I'm not sure what issue we are discussing and what problem we are
> trying to solve.  Let me take a step back and describe the situation
> as I see it.
> 
> This bug report started because thing-at-point would signal an error
> for some of its calls.  That bug is already fixed.  Tino was unhappy
> with using sequencep and wanted to replace that with stringp -- fine
> with me, I don't object to such a change.
> 
> From my POV the issue should be closed once we agree on the
> predicate
> to use when deciding whether or not stripping the text properties is
> appropriate.
> 
> But then somehow the discussion shifted to be about whether to
> _force_ thing-at-point value to be a string, even if it isn't
> for some reason.
>
> I don't understand the rationale for such a change.  Yes,
> thing-at-point was most probably always meant to return a string.
> Yes, Lisp code that causes it to return some other object is
> probably wrong.  However, the change that allowed this was
> introduced 19 years ago; who knows what code out there actually
> uses this loophole? If there is such code, why would we want to
> break it?  To what end? And if no code uses this loophole, why
> do we care that it exists?
> 
> IOW, thing-at-point no longer has any known bugs, and we are talking
> about forcibly breaking a use case that does no harm to us, and can
> only happen if someone abuses the 'thing-at-point' property, which
> would make it that someone's bug/misfeature, for them to fix.
> 
> So why would we want to make such a change?  What am I missing?

FWIW, I agree with you here, in general.

(I do not agree that thingatpt no longer has any known bugs,
however.  See bug #9300, which is a very important bug, to me.)

On the other hand, I'm pretty sure that some Emacs Dev deciders
have previously proclaimed that it is wrong for someone to exploit
this "loophole" and thus have `t-a-p' return something other than
a string.  And, as Tino points out, the doc says clearly that it
returns a string - no ifs, ands, or buts about that.

So yes, enforcing returning a string would be an incompatible
change.  But it would (apparently) do what Emacs Dev has said the
function should do, and it would do what the doc says it does
((elisp) `Buffer Contents').

Yes, deciding to enforce returning a string is outside the error
that was reported in this bug report.  On the other hand, the bug
title is precisely, explicitly this question we are discussing now:
Should `t-a-p' return a string?

I can work with this either way.  Long ago, I adapted my own code
to fit the prescription that `t-a-p' must return a string.  But I
guess I could make an incompatible change to my code, to once again
realign it with allowing a non-string return value.

My preference, at least so far, would be for us to do the following:

1. Enforce a string return value, in the way suggested.

2. CLEARLY point out, in the high-level doc, that returning a
   THING at point can mean two different things:

   * For `thing-at-point' it means return text (a string) that
     names/represents a THING.

   * For `form-at-point' and its callers (e.g., `symbol-at-point',
     `list-at-point', `sexp-at-point', `number-at-point'), it
     means return a THING, not its name.  That is, it returns an
     Emacs-Lisp entity - any kind of value that Lisp can return.

If we do NOT go down this road, but we instead stick with what is
there now (i.e., we do not enforce a string value for `t-a-p')
then I think it is imperative that we point out, in the doc,
that `t-a-p', like `form-at-point' and its callers, can return
a Lisp THING of any kind OR a string naming such a THING, and
that the former case is realized via property `thing-at-point'
on the THING-argument symbol.

Being clear and explicit about what it does and how will help
avoid the kinds of ambiguity that have plagued this function
for a long time now.





  parent reply	other threads:[~2016-11-08 16:31 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-01  1:59 bug#21391: 24.5; `thing-at-point' returns error when called with arguments 'number t Tino Calancha
2015-09-05  8:23 ` Eli Zaretskii
2016-10-13  7:00 ` bug#21391: 24.5; `thing-at-point' returns error when called with arguments 'number t) Tino Calancha
2016-11-04 16:31   ` Drew Adams
2016-11-04 18:31     ` Andreas Röhler
2016-11-04 19:27       ` Drew Adams
2016-11-04 20:21         ` Drew Adams
2016-11-07  9:30           ` Andreas Röhler
2016-11-07 15:00             ` Drew Adams
2016-11-07 15:01             ` Drew Adams
2016-11-04 20:03     ` Drew Adams
2016-11-07  3:17       ` bug#21391: 24.5; `thing-at-point' should return a string Tino Calancha
2016-11-07 15:14         ` Eli Zaretskii
2016-11-07 19:12           ` Dmitry Gutov
2016-11-07 19:47             ` Eli Zaretskii
2016-11-07 19:51               ` Dmitry Gutov
2016-11-07 20:02                 ` Eli Zaretskii
2016-11-07 20:03                   ` Dmitry Gutov
2016-11-08 13:15                     ` Tino Calancha
2016-11-08 15:05                     ` Eli Zaretskii
2016-11-09  0:04                       ` Dmitry Gutov
2016-11-09  6:43                         ` Andreas Röhler
2016-11-09 15:45                         ` Eli Zaretskii
2016-11-09 23:30                           ` Dmitry Gutov
2016-11-10 16:08                             ` Eli Zaretskii
2016-11-10 16:19                               ` Dmitry Gutov
2016-11-10 17:13                                 ` Eli Zaretskii
2016-11-10 17:28                                   ` Dmitry Gutov
2016-11-10 18:49                                     ` Eli Zaretskii
2016-11-10 18:55                                       ` Dmitry Gutov
2016-11-10 19:59                                         ` Eli Zaretskii
2016-11-10 21:12                                           ` Dmitry Gutov
2016-11-11 10:07                                             ` Tino Calancha
2016-11-11 10:57                                               ` Eli Zaretskii
2016-11-11 14:13                                                 ` Tino Calancha
2016-11-11 14:35                                                   ` Eli Zaretskii
2016-11-11 14:46                                                     ` Dmitry Gutov
2016-11-11 14:51                                                       ` Eli Zaretskii
2016-11-11 14:57                                                         ` Dmitry Gutov
2016-11-11 15:31                                                           ` Eli Zaretskii
2016-11-11 15:05                                                         ` Tino Calancha
2016-11-11 15:37                                                           ` Eli Zaretskii
2016-11-14  1:52                                                             ` Dmitry Gutov
2016-11-14  2:43                                                               ` Drew Adams
2016-11-14 10:26                                                                 ` Andreas Röhler
2016-11-14 15:19                                                                   ` Drew Adams
2016-11-16 13:49                                                                     ` Andreas Röhler
2016-11-16 14:45                                                                       ` Drew Adams
2016-11-14 15:36                                                                   ` Eli Zaretskii
2016-11-15  7:18                                                                     ` Andreas Röhler
2016-11-14 15:34                                                                 ` Eli Zaretskii
2016-11-10 18:27                                 ` Drew Adams
2016-11-09 17:58                         ` Drew Adams
2016-11-09 23:35                           ` Dmitry Gutov
2016-11-10  0:40                             ` Drew Adams
2016-11-10  8:55                               ` Dmitry Gutov
2020-08-24 18:32                       ` Lars Ingebrigtsen
     [not found]                     ` <<83inrygggr.fsf@gnu.org>
2016-11-08 16:31                       ` Drew Adams [this message]
     [not found]                       ` <<cc2e7eab-e58d-db76-b5ed-0ec9871fad9d@yandex.ru>
     [not found]                         ` <<83y40sfyij.fsf@gnu.org>
     [not found]                           ` <<76505436-e66c-0ed3-6d7a-ce654f38ef30@yandex.ru>
     [not found]                             ` <<83bmxnfhbi.fsf@gnu.org>
     [not found]                               ` <<73600483-1df5-597c-6066-232189bbdd4a@yandex.ru>
     [not found]                                 ` <<834m3ffeb9.fsf@gnu.org>
     [not found]                                   ` <<fcb1bcf1-20f0-3eda-1c33-df7ba085d487@yandex.ru>
     [not found]                                     ` <<83twbfdvav.fsf@gnu.org>
     [not found]                                       ` <<73be4b9d-2df8-cc83-b873-398cb7dd043b@yandex.ru>
     [not found]                                         ` <<83pom3ds3e.fsf@gnu.org>
     [not found]                                           ` <<ef67e387-0302-1aaa-4764-cab2d3337a2c@yandex.ru>
     [not found]                                             ` <<alpine.DEB.2.20.1611111851250.21428@calancha-pc>
     [not found]                                               ` <<83bmxme12w.fsf@gnu.org>
     [not found]                                                 ` <<alpine.DEB.2.20.1611112313020.23900@calancha-pc>
     [not found]                                                   ` <<834m3edqyr.fsf@gnu.org>
     [not found]                                                     ` <<6dbea00c-3bde-6ec3-b109-7aa205bedb5f@yandex.ru>
     [not found]                                                       ` <<8337iydq8z.fsf@gnu.org>
     [not found]                                                         ` <<alpine.DEB.2.20.1611112355090.24203@calancha-pc>
     [not found]                                                           ` <<83y40qc9jv.fsf@gnu.org>
     [not found]                                                             ` <<df484e47-dbd7-06d5-5987-a067185d3e00@yandex.ru>
     [not found]                                                               ` <<bd8f220e-6ac2-4996-91ed-7bcf4cc5413f@default>
     [not found]                                                                 ` <<83a8d2hy8f.fsf@gnu.org>
2016-11-14 16:24                                                                   ` Drew Adams
2016-11-14 16:44                                                                     ` Eli Zaretskii
2016-11-08  8:22                   ` Andreas Röhler
     [not found]       ` <<874m3krnb6.fsf_-_@gmail.com>
     [not found]         ` <<83a8dbiaps.fsf@gnu.org>
2016-11-07 16:10           ` Drew Adams
2016-11-07 18:04             ` Eli Zaretskii
2016-11-07 17:22       ` bug#21391: 24.5; `thing-at-point' returns error when called with arguments 'number t) Andreas Röhler
2016-11-07 17:37         ` Drew Adams
2016-11-08  8:43           ` Andreas Röhler
2016-11-08 16:31             ` Drew Adams
     [not found]       ` <<<874m3krnb6.fsf_-_@gmail.com>
     [not found]         ` <<<83a8dbiaps.fsf@gnu.org>
     [not found]           ` <<123efdfd-3a87-4b39-9567-a56ecc3ea82e@default>
     [not found]             ` <<831syni2u1.fsf@gnu.org>
2016-11-07 18:37               ` bug#21391: 24.5; `thing-at-point' should return a string Drew Adams
     [not found] <<<<alpine.LRH.2.20.1509011056480.5317@calancha-ilc.kek.jp>
     [not found] ` <<<<83pom7gjhl.fsf@gnu.org>
     [not found]   ` <<<<0a8d76e4-4d1b-a26d-2b76-a2d9384d9f72@yandex.ru>
     [not found]     ` <<<<83mvhbgitf.fsf@gnu.org>
     [not found]       ` <<<<25bb22e8-1388-275a-d0da-7e698acdf6da@yandex.ru>
     [not found]         ` <<<<83inrygggr.fsf@gnu.org>
     [not found]           ` <<<<cc2e7eab-e58d-db76-b5ed-0ec9871fad9d@yandex.ru>
     [not found]             ` <<<<83y40sfyij.fsf@gnu.org>
     [not found]               ` <<<<76505436-e66c-0ed3-6d7a-ce654f38ef30@yandex.ru>
     [not found]                 ` <<<<83bmxnfhbi.fsf@gnu.org>
     [not found]                   ` <<<<73600483-1df5-597c-6066-232189bbdd4a@yandex.ru>
     [not found]                     ` <<<<834m3ffeb9.fsf@gnu.org>
     [not found]                       ` <<<<fcb1bcf1-20f0-3eda-1c33-df7ba085d487@yandex.ru>
     [not found]                         ` <<<<83twbfdvav.fsf@gnu.org>
     [not found]                           ` <<<<73be4b9d-2df8-cc83-b873-398cb7dd043b@yandex.ru>
     [not found]                             ` <<<<83pom3ds3e.fsf@gnu.org>
     [not found]                               ` <<<<ef67e387-0302-1aaa-4764-cab2d3337a2c@yandex.ru>
     [not found]                                 ` <<<<alpine.DEB.2.20.1611111851250.21428@calancha-pc>
     [not found]                                   ` <<<<83bmxme12w.fsf@gnu.org>
     [not found]                                     ` <<<<alpine.DEB.2.20.1611112313020.23900@calancha-pc>
     [not found]                                       ` <<<<834m3edqyr.fsf@gnu.org>
     [not found]                                         ` <<<<6dbea00c-3bde-6ec3-b109-7aa205bedb5f@yandex.ru>
     [not found]                                           ` <<<<8337iydq8z.fsf@gnu.org>
     [not found]                                             ` <<<<alpine.DEB.2.20.1611112355090.24203@calancha-pc>
     [not found]                                               ` <<<<83y40qc9jv.fsf@gnu.org>
     [not found]                                                 ` <<<<df484e47-dbd7-06d5-5987-a067185d3e00@yandex.ru>
     [not found]                                                   ` <<<<bd8f220e-6ac2-4996-91ed-7bcf4cc5413f@default>
     [not found]                                                     ` <<<<83a8d2hy8f.fsf@gnu.org>
     [not found]                                                       ` <<<5a6ddd21-ebf9-42bf-9fb6-7fc9e037b3ed@default>
     [not found]                                                         ` <<<83zil2ggf7.fsf@gnu.org>
     [not found]                                                           ` <<fe942899-b2b4-4add-9f80-87ddf53bc680@default>
     [not found]                                                             ` <<83wpg6gc8h.fsf@gnu.org>
2016-11-14 18:54                                                               ` Drew Adams
     [not found] <<<alpine.LRH.2.20.1509011056480.5317@calancha-ilc.kek.jp>
     [not found] ` <<<83pom7gjhl.fsf@gnu.org>
     [not found]   ` <<<0a8d76e4-4d1b-a26d-2b76-a2d9384d9f72@yandex.ru>
     [not found]     ` <<<83mvhbgitf.fsf@gnu.org>
     [not found]       ` <<<25bb22e8-1388-275a-d0da-7e698acdf6da@yandex.ru>
     [not found]         ` <<<83inrygggr.fsf@gnu.org>
     [not found]           ` <<<cc2e7eab-e58d-db76-b5ed-0ec9871fad9d@yandex.ru>
     [not found]             ` <<<83y40sfyij.fsf@gnu.org>
     [not found]               ` <<<76505436-e66c-0ed3-6d7a-ce654f38ef30@yandex.ru>
     [not found]                 ` <<<83bmxnfhbi.fsf@gnu.org>
     [not found]                   ` <<<73600483-1df5-597c-6066-232189bbdd4a@yandex.ru>
     [not found]                     ` <<<834m3ffeb9.fsf@gnu.org>
     [not found]                       ` <<<fcb1bcf1-20f0-3eda-1c33-df7ba085d487@yandex.ru>
     [not found]                         ` <<<83twbfdvav.fsf@gnu.org>
     [not found]                           ` <<<73be4b9d-2df8-cc83-b873-398cb7dd043b@yandex.ru>
     [not found]                             ` <<<83pom3ds3e.fsf@gnu.org>
     [not found]                               ` <<<ef67e387-0302-1aaa-4764-cab2d3337a2c@yandex.ru>
     [not found]                                 ` <<<alpine.DEB.2.20.1611111851250.21428@calancha-pc>
     [not found]                                   ` <<<83bmxme12w.fsf@gnu.org>
     [not found]                                     ` <<<alpine.DEB.2.20.1611112313020.23900@calancha-pc>
     [not found]                                       ` <<<834m3edqyr.fsf@gnu.org>
     [not found]                                         ` <<<6dbea00c-3bde-6ec3-b109-7aa205bedb5f@yandex.ru>
     [not found]                                           ` <<<8337iydq8z.fsf@gnu.org>
     [not found]                                             ` <<<alpine.DEB.2.20.1611112355090.24203@calancha-pc>
     [not found]                                               ` <<<83y40qc9jv.fsf@gnu.org>
     [not found]                                                 ` <<<df484e47-dbd7-06d5-5987-a067185d3e00@yandex.ru>
     [not found]                                                   ` <<<bd8f220e-6ac2-4996-91ed-7bcf4cc5413f@default>
     [not found]                                                     ` <<<83a8d2hy8f.fsf@gnu.org>
     [not found]                                                       ` <<5a6ddd21-ebf9-42bf-9fb6-7fc9e037b3ed@default>
     [not found]                                                         ` <<83zil2ggf7.fsf@gnu.org>
2016-11-14 17:33                                                           ` Drew Adams
2016-11-14 18:14                                                             ` Eli Zaretskii
     [not found] <<alpine.LRH.2.20.1509011056480.5317@calancha-ilc.kek.jp>
     [not found] ` <<83pom7gjhl.fsf@gnu.org>
     [not found]   ` <<0a8d76e4-4d1b-a26d-2b76-a2d9384d9f72@yandex.ru>
     [not found]     ` <<83mvhbgitf.fsf@gnu.org>

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=be3c2c08-aa68-49d3-b6b4-3ed9a97e3dd6@default \
    --to=drew.adams@oracle.com \
    --cc=21391@debbugs.gnu.org \
    --cc=dgutov@yandex.ru \
    --cc=eliz@gnu.org \
    --cc=tino.calancha@gmail.com \
    /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).