* lisp/thingatpt.el (bounds-of-thing-at-point): Return nil rather than
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 13 May 2011 17:02:56 +0000 (14:02 -0300)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 13 May 2011 17:02:56 +0000 (14:02 -0300)
bounds for the empty string.

Fixes: debbugs:8667

lisp/ChangeLog
lisp/thingatpt.el

index 3fa18d2..b4807f7 100644 (file)
@@ -1,9 +1,14 @@
+2011-05-13  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * thingatpt.el (bounds-of-thing-at-point): Return nil rather than
+       bounds for the empty string (bug#8667).
+
 2011-05-13  Glenn Morris  <rgm@gnu.org>
 
        * mail/feedmail.el (feedmail-buffer-to-sendmail): Require sendmail.
 
        * mail/sendmail.el (sendmail-program): Try executable-find first.
-       (sendmail-send-it): sendmail-program cannot be unbound.
+       (sendmail-send-it): `sendmail-program' cannot be unbound.
 
        * calendar/appt.el (appt-make-list): Simplify.
        (appt-time-msg-list): Doc fix.
index a56c3e4..a2aeb2e 100644 (file)
@@ -89,18 +89,19 @@ of the textual entity that was found."
              (or (get thing 'beginning-op)
                  (lambda () (forward-thing thing -1))))
            (let ((beg (point)))
-             (if (not (and beg (> beg orig)))
+             (if (<= beg orig)
                  ;; If that brings us all the way back to ORIG,
                  ;; it worked.  But END may not be the real end.
                  ;; So find the real end that corresponds to BEG.
+                  ;; FIXME: in which cases can `real-end' differ from `end'?
                  (let ((real-end
                         (progn
                           (funcall
                            (or (get thing 'end-op)
                                 (lambda () (forward-thing thing 1))))
                           (point))))
-                   (if (and beg real-end (<= beg orig) (<= orig real-end))
-                       (cons beg real-end)))
+                   (when (and (<= orig real-end) (< beg real-end))
+                      (cons beg real-end)))
                (goto-char orig)
                ;; Try a second time, moving backward first and then forward,
                ;; so that we can find a thing that ends at ORIG.
@@ -117,7 +118,7 @@ of the textual entity that was found."
                          (or (get thing 'beginning-op)
                               (lambda () (forward-thing thing -1))))
                         (point))))
-                 (if (and real-beg end (<= real-beg orig) (<= orig end))
+                 (if (and (<= real-beg orig) (<= orig end) (< real-beg end))
                      (cons real-beg end))))))
        (error nil)))))