From 3b6e01cccf89ba0f3485751125f43463bc429345 Mon Sep 17 00:00:00 2001 From: Philipp Stephani Date: Thu, 15 Jun 2017 11:49:56 +0200 Subject: [PATCH] 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. --- lisp/thingatpt.el | 4 +++- test/lisp/thingatpt-tests.el | 9 +++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) 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 -- 2.39.2