From: Dmitry Gutov <dgutov@yandex.ru>
To: Eli Zaretskii <eliz@gnu.org>
Cc: tino.calancha@gmail.com, 21391@debbugs.gnu.org
Subject: bug#21391: 24.5; `thing-at-point' should return a string
Date: Thu, 10 Nov 2016 01:30:20 +0200 [thread overview]
Message-ID: <76505436-e66c-0ed3-6d7a-ce654f38ef30@yandex.ru> (raw)
In-Reply-To: <83y40sfyij.fsf@gnu.org>
[-- Attachment #1: Type: text/plain, Size: 1296 bytes --]
On 09.11.2016 17:45, Eli Zaretskii wrote:
> I don't think I understand what you are suggesting. Can you show a
> proposed patch, so I could see the light?
See the attached patch.
Or to take a step further, we might want to deprecate the
`thing-at-point' property, and recommend to only use the
`bounds-of-thing-at-point' property. This way, we get the string-ness
guarantee automatically, and the bounds-of-thing-at-point function will
work for all things (it currently fails for `number').
>>> 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?
>>
>> To make thing-at-point behavior more consistent.
>
> It is consistent now.
Put point on a number. Number is a sexp. Not all sexps are strings.
(thing-at-point 'number) => 123
(thing-at-point 'sexp) => "123"
That doesn't looks consistent to me. And there's no way to guess the
return value type in advance without knowing which exact function is the
thing's `thing-at-point' property.
> The only way to make it inconsistent is to have
> a 'thing-at-point' property that violates that, but we never do that
> in Emacs proper, so if someone else does that, it would be their bug.
number's `thing-at-point' property is not like the others.
[-- Attachment #2: thingatpt-number.diff --]
[-- Type: text/x-diff, Size: 1579 bytes --]
diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el
index 9920fa0..1c630f7 100644
--- a/lisp/thingatpt.el
+++ b/lisp/thingatpt.el
@@ -128,7 +128,7 @@ bounds-of-thing-at-point
;;;###autoload
(defun thing-at-point (thing &optional no-properties)
- "Return the THING at point.
+ "Return the THING at point as a string.
THING should be a symbol specifying a type of syntactic entity.
Possibilities include `symbol', `list', `sexp', `defun',
`filename', `url', `email', `word', `sentence', `whitespace',
@@ -145,7 +145,7 @@ thing-at-point
(let ((bounds (bounds-of-thing-at-point thing)))
(when bounds
(buffer-substring (car bounds) (cdr bounds)))))))
- (when (and text no-properties (sequencep text))
+ (when (and text no-properties)
(set-text-properties 0 (length text) nil text))
text))
@@ -557,6 +557,14 @@ thing-at-point-email-regexp
(put 'buffer 'end-op (lambda () (goto-char (point-max))))
(put 'buffer 'beginning-op (lambda () (goto-char (point-min))))
+;; Number
+
+(put 'number 'thing-at-point
+ (lambda ()
+ (let ((thing (thing-at-point 'sexp)))
+ (when (numberp (thing-at-point--read-from-whole-string thing))
+ thing))))
+
;; Aliases
(defun word-at-point ()
@@ -604,7 +612,6 @@ symbol-at-point
(defun number-at-point ()
"Return the number at point, or nil if none is found."
(form-at-point 'sexp 'numberp))
-(put 'number 'thing-at-point 'number-at-point)
;;;###autoload
(defun list-at-point ()
"Return the Lisp list at point, or nil if none is found."
next prev parent reply other threads:[~2016-11-09 23:30 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 [this message]
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
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=76505436-e66c-0ed3-6d7a-ce654f38ef30@yandex.ru \
--to=dgutov@yandex.ru \
--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 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.