From: "Drew Adams" <drew.adams@oracle.com>
To: <8667@debbugs.gnu.org>
Subject: bug#8667: 24.0.50; `bounds-of-thing-at-point' returns (N . N) for `comment'
Date: Thu, 12 May 2011 20:00:50 -0700 [thread overview]
Message-ID: <5328177EA0C84361A654BB5EEB201D1C@us.oracle.com> (raw)
In-Reply-To: <1273A111E1924DE9BAB49AFE6257D462@us.oracle.com>
> The problem is that there is no `beginning-op' or `end-op' and all of
> the calls to `forward-thing' (with 1 and -1) do not move point at all,
> and return nil. So the code falls through to the end:
>
> (let ((end (point))
> (real-beg
> (progn
> (funcall
> (or (get thing 'beginning-op)
> (lambda () (forward-thing thing -1))))
> (point))))
> ;; real-beg = end = (point). Result is (cons 3061 . 3061).
> (if (and real-beg end (<= real-beg orig) (<= orig end))
> (cons real-beg end)))
>
> `bounds-of-thing-at-point' should foresee such a case (that
> `forward-THING' does nothing). IOW, it should of course be
> fixed for this problem.
This should be all that's needed, if it wasn't obvious:
- (if (and beg real-end (<= beg orig) (<= orig real-end))
- (cons beg real-end))
+ (and beg real-end (<= beg orig) (<= orig real-end)
+ (/= beg read-end)
+ (cons beg real-end))
and
- (if (and real-beg end (<= real-beg orig) (<= orig end))
- (cons real-beg end)))
+ (and real-beg end (<= real-beg orig) (<= orig end)
+ (/= real-beg end)
+ (cons real-beg end))
(Dunno why some people insist on using `(if (and...) singleton)'. It gets in
the way of readability and just represents extra noise. Binary `if' is
generally an impediment to readability and communicating intention.)
> But it sounds like `forward-comment' should also be fixed so
> that it acts like other `forward-THING' functions, and not
> just be a no-op when outside a comment.
And it seems that `forward-comment' is otherwise buggy, in that it moves only
over whitespace when point is within a comment.
E.g.:
;; Some comment with some whitespace somewhere.
Put point before any of the whitespace and (forward-comment 1) moves to the end
of the whitespace. Put point after any of the whitespace and (forward-comment
-1) moves to the beginning of that whitespace. And in these cases swapping 1
and -1 produces a no-op.
The only time `forward-comment' actually moves over a whole (Lisp) comment is
when point is before `;'. And even then, if point is between the two `;' above,
then (forward-comment -1) is a no-op.
`forward-comment' should behave the way other `forward-THING' functions behave.
It should do what we expect of a `forward-*' function.
Yes, I have read the `forward-comment' doc string. If it really needs to behave
this way then it should have a different name. That is, after fixing the bugged
behavior, if we still need a function that does what `forward-comment' does now,
then it needs a different name.
No, it's not too late to change, even if renaming would be bothersome. The way
it is now breaks `thing-at-point' functions, and they should work regardless of
the `forward-*' functions. Thing-at-point depends on this naming convention.
next prev parent reply other threads:[~2011-05-13 3:00 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-13 0:46 bug#8667: 24.0.50; `bounds-of-thing-at-point' returns (N . N) for `comment' Drew Adams
2011-05-13 3:00 ` Drew Adams [this message]
2011-05-13 5:56 ` Kevin Rodgers
2011-05-13 14:24 ` bug#8670: OT: " Drew Adams
2011-05-13 14:11 ` Stefan Monnier
2011-05-13 15:49 ` Drew Adams
2011-05-13 16:11 ` Drew Adams
2011-05-13 17:05 ` Stefan Monnier
2011-05-19 17:12 ` Drew Adams
2011-05-20 2:12 ` Stefan Monnier
2011-05-21 14:52 ` Drew Adams
2011-05-21 15:06 ` Eli Zaretskii
2011-05-21 15:15 ` Drew Adams
2011-05-21 15:52 ` Eli Zaretskii
2011-05-21 18:18 ` Drew Adams
2011-05-19 18:24 ` Drew Adams
2011-05-20 2:18 ` Stefan Monnier
2011-05-21 14:51 ` Drew Adams
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=5328177EA0C84361A654BB5EEB201D1C@us.oracle.com \
--to=drew.adams@oracle.com \
--cc=8667@debbugs.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).