From: Drew Adams <drew.adams@oracle.com>
To: Eli Zaretskii <eliz@gnu.org>, Tino Calancha <tino.calancha@gmail.com>
Cc: 21391@debbugs.gnu.org
Subject: bug#21391: 24.5; `thing-at-point' should return a string
Date: Mon, 7 Nov 2016 08:10:34 -0800 (PST) [thread overview]
Message-ID: <123efdfd-3a87-4b39-9567-a56ecc3ea82e@default> (raw)
In-Reply-To: <<83a8dbiaps.fsf@gnu.org>>
> > > A proper fix is to convert the result returned by
> > > (funcall (get thing 'thing-at-point)) to a string.
> > > For that, you can use (format "%s" thing).
> >
> > It's natural if `thing-at-point' returns the thing as a string.
> > When the user don't want a string then s?he can use the specific
> > functions, like `number-at-point' or `list-at-point'.
>
> Isn't that completely backward-incompatible? If so, I don't think
> we can do that.
>
> I don't really see what is "improper" with the other suggestions to
> fix this bug, which simply avoid signaling an error if the "thing at
> point" happens to be something other than a string?
`thing-at-point' has always allowed, and rightfully so, its default
behavior to be replaced by putting a function on the THING symbol as
property `thing-at-point'. That function is invoked, and what the
return value was returned by `thing-at-point'.
The two branches of the `if' in `thing-at-point' were thus not
symmetrical (and intentionally so, so that it could return actual
things, not just strings naming things). One branch could return
anything - a THING at point; the other branch returned a string
naming a thing at point.
This meant that `thing-at-point' could return a list, symbol, etc.
- things that are not strings.
What is new (since Emacs 24.4) is that someone added this at the end
of the definition of `thing-at-point', and made it pertain to _both_
branches of the `if'. In addition, they named the result of the `if'
by the variable `text'.
(when (and text no-properties)
(set-text-properties 0 (length text) nil text))
They apparently paid no attention to the important `thing-at-point'
behavior provided by the first `if' clause, and instead just assumed
that the `if' always returned a string.
IIUC, Emacs Dev (not I), has insisted that `thing-at-point' itself
should always return a string, as opposed to what `form-at-point'
(and functions defined using it) returns, which can be a THING (not
just a string naming a thing). For one thing, this allows code
calling `thing-at-point' to count on the result being a string (if
a thing is found) or nil (if not).
I see three possibly reasonable fixes for the bug introduced in
Emacs 24.4:
1. Make `thing-at-point' always return a thing, as (IIUC) wished
by Emacs Dev. Have it convert the result of the first `if'
clause to a string. Anyone needing a real (non-string) thing
can use `form-at-point' to get what they want.
2. Make `thing-at-point', as before, return just what the firat
`if' clause returns, if that clause is taken. IOW, move the
removal of text properties (from non-nil NO-PROPERTIES) into
the second `if' clause. Among other things (sic), this allows
the first `if' clause to return a propertized string.
3. Make `thing-at-point', as before, return just what the firat
`if' clause returns, if that clause is taken, except that if
either clause returns a string then strip that string of text
properties (if NO-PROPERTIES is non-nil).
My understanding is that Emacs Dev has preferred that
`thing-at-point' return a string, and that users should use
`form-at-point' if they want something else. (I've adapted my
own code to that preference.)
If so, then #1 is probably the option of choice: Convert anything
returned by (funcall (get thing 'thing-at-point)) to a string.
Personally, I do not see why Emacs added arg NO-PROPERTIES, as
anyone could always remove properties on a string result from
`thing-at-point'. Dunno who added this arg, or why, but I
don't see that it provides any advantage.
(Perhaps the one advantage it has inadvertently provided is to
raise the question again of whether `thing-at-point' should
always return a string.)
next prev parent reply other threads:[~2016-11-07 16:10 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
[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 [this message]
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=123efdfd-3a87-4b39-9567-a56ecc3ea82e@default \
--to=drew.adams@oracle.com \
--cc=21391@debbugs.gnu.org \
--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).