Subject: bug#572: thing-at-point 'url gets confused if url has paren

From: xah lee <[email-masked]>
Date: Fri, 18 Jul 2008 05:41:38 -0700

(thing-at-point 'url) gets confused if the url contains a
parenthesis such as in
http://en.wikipedia.org/wiki/Oz_(programming_language)

Note that, according to
  http://en.wikipedia.org/wiki/Percent-encoding

parenthesis in uri do not necessarily needs to be percent encoded,  
depending on the context the uri is used. Quote: «When a character  
from the reserved set (a "reserved character") has special meaning (a  
"reserved purpose") in a certain context, and a URI scheme says that  
it is necessary to use that character for some other purpose, then  
the character must be percent-encoded.»

But anyhow, practically speaking, often uri will contain parens. e.g.  
Wikipedia has lots of article with url containing paren, and in  
browser they are shown as paren, and this is often copied and pasted  
as is to editors.

the above should be the complete bug description.
The following are supplementary to this bug report.

--------------------------------------------
Here's a sample code

(defun wrap-url ()
   "Make the url at cursor point into a html link.

If there is a region, use the region as url instead.

This function is interface wrapper for `wrap-url-string'.
See that function for detail."
   (interactive)
   (let (bds p1 p2 url)
     (if (and transient-mark-mode mark-active)
         (progn
           (setq p1 (region-beginning))
           (setq p2 (region-end))
           )
       (progn
         (setq bds (bounds-of-thing-at-point 'url))
         (setq p1 (car bds))
         (setq p2 (cdr bds))
         )
       )

     (setq url (buffer-substring-no-properties p1 p2))
     (delete-region p1 p2)
     (goto-char p1)
     (insert (wrap-url-string url))
     )
   )

the error from the above code when the cursor is on the following line:
http://en.wikipedia.org/wiki/Oz_(programming_language)

is:
setq: Wrong type argument: integer-or-marker-p, nil

presumably because the boundary p1 or p2 is not a integer or marker.

-----------------

In GNU Emacs 22.2.1 (powerpc-apple-darwin8.11.0, Carbon Version 1.6.0)
  of 2008-04-05 on g5.tokyo.stp.isas.jaxa.jp
Windowing system distributor `Apple Inc.', version 10.4.11

   Xah
∑ http://xahlee.org/

☄

☄