From: Philipp Stephani Date: Thu, 15 Jun 2017 09:49:56 +0000 (+0200) Subject: Correctly detect URLs surrounded by parentheses in comments X-Git-Tag: emacs-26.0.90~521^2~61 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=3b6e01cccf89ba0f3485751125f43463bc429345;p=emacs.git Correctly detect URLs surrounded by parentheses in comments * lisp/thingatpt.el (thing-at-point--bounds-of-well-formed-url): Make parentheses match work inside comments. * test/lisp/thingatpt-tests.el (thing-at-point-url-in-comment): Add unit test. --- diff --git a/lisp/thingatpt.el b/lisp/thingatpt.el index 25e01df70ee..7c3d73e52b7 100644 --- a/lisp/thingatpt.el +++ b/lisp/thingatpt.el @@ -380,7 +380,9 @@ the bounds of a possible ill-formed URI (one lacking a scheme)." (save-restriction (narrow-to-region (1- url-beg) (min end (point-max))) (setq paren-end (ignore-errors - (scan-lists (1- url-beg) 1 0)))) + ;; Make the scan work inside comments. + (let ((parse-sexp-ignore-comments nil)) + (scan-lists (1- url-beg) 1 0))))) (not (blink-matching-check-mismatch (1- url-beg) paren-end)) (setq end (1- paren-end))) ;; Ensure PT is actually within BOUNDARY. Check the following diff --git a/test/lisp/thingatpt-tests.el b/test/lisp/thingatpt-tests.el index d4449eacbf9..128534264e5 100644 --- a/test/lisp/thingatpt-tests.el +++ b/test/lisp/thingatpt-tests.el @@ -120,4 +120,13 @@ position to retrieve THING.") (should (equal (list-at-point) (cdr str-res))))))) +(ert-deftest thing-at-point-url-in-comment () + (with-temp-buffer + (c-mode) + (insert "/* (http://foo/bar)\n(http://foo/bar(baz)) */\n") + (goto-char 6) + (should (equal (thing-at-point 'url) "http://foo/bar")) + (goto-char 23) + (should (equal (thing-at-point 'url) "http://foo/bar(baz)")))) + ;;; thingatpt.el ends here