bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#21391: 24.5; `thing-at-point' should return a string


From: Andreas Röhler
Subject: bug#21391: 24.5; `thing-at-point' should return a string
Date: Tue, 15 Nov 2016 08:18:47 +0100
User-agent: Mozilla/5.0 (X11; Linux i686; rv:45.0) Gecko/20100101 Icedove/45.4.0



On 14.11.2016 16:36, Eli Zaretskii wrote:
From: Andreas Röhler <andreas.roehler@easy-emacs.de>
Date: Mon, 14 Nov 2016 11:26:54 +0100

IMHO the current design is really confusing and shouldn't be kept.
IMNSHO it would be madness to make incompatible changes 20 years after
the code was admitted into Emacs.

if (get thing 'thing-at-point)
               (funcall (get thing 'thing-at-point))

AFAIU an arbitrary function might  be stored here, no real relation to
thing-at-point at all.
Correct.  We have gobs of functions that can return several different
kinds of objects.

Next clause deals with buffer-substring - which is thing-at-point about
in my understanding.
IMO, your understanding is wrong at least since 1997.

So lets have closer a look at thing-at-point, which under the hood is called also by list-at-point, form-at-point:

((text
         (if (get thing 'thing-at-point)
             (funcall (get thing 'thing-at-point))
           (let ((bounds (bounds-of-thing-at-point thing)))
             (when bounds
               (buffer-substring (car bounds) (cdr bounds)))))))

The second clause returns a string. All further deals with this string-var text AFAICS.
That's why I'm calling the string the native return type here.

The first clause was discussed above. Seeing just one use-case for now:

(put 'email 'thing-at-point
     (lambda ()
       (let ((boundary-pair (bounds-of-thing-at-point 'email)))
         (if boundary-pair
             (buffer-substring-no-properties
              (car boundary-pair) (cdr boundary-pair))))))


However, also returning a string. And definitely dressed up from behind.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]