changeset 18611:a3267de991c3

Require thingatpt when compiling. (browse-url-url-at-point): Use `thing-at-point' (with URL code moved from here). (browse-url-looking-at): Moved to thingatpt.el, renamed and changed.
author Richard M. Stallman <rms@gnu.org>
date Fri, 04 Jul 1997 20:00:43 +0000
parents 4726c7bb05a9
children 88efccff8970
files lisp/browse-url.el
diffstat 1 files changed, 4 insertions(+), 54 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/browse-url.el	Fri Jul 04 19:59:49 1997 +0000
+++ b/lisp/browse-url.el	Fri Jul 04 20:00:43 1997 +0000
@@ -208,7 +208,8 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; Code:
 
-(eval-when-compile (require 'dired))
+(eval-when-compile (require 'dired)
+		   (require 'thingatpt))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Variables
@@ -378,61 +379,10 @@
 ;; URL input
 
 (defun browse-url-url-at-point ()
-  "Return the URL around or before point.
-Search backwards for the start of a URL ending at or after 
-point.  If no URL found, return the empty string.  The
-access scheme, `http://' will be prepended if absent."
-  (let ((url "") short strip)
-    (if (or (setq strip (browse-url-looking-at browse-url-markedup-regexp))
-	    (browse-url-looking-at browse-url-regexp)
-	    ;; Access scheme omitted?
-	    (setq short (browse-url-looking-at browse-url-short-regexp)))
-	(progn
-	  (setq url (buffer-substring-no-properties (match-beginning 0)
-						    (match-end 0)))
-	  (and strip (setq url (substring url 5 -1))) ; Drop "<URL:" & ">"
-	  ;; strip whitespace
-	  (while (string-match "\\s +\\|\n+" url)
-	    (setq url (replace-match "" t t url)))
-	  (and short (setq url (concat (if (string-match "@" url)
-					   "mailto:" "http://") url)))))
+  (let ((url (thing-at-point 'url)))
+    (set-text-properties 0 (length url) nil url)
     url))
 
-;; thingatpt.el doesn't work for complex regexps.  This should work
-;; for almost any regexp wherever we are in the match.  To do a
-;; perfect job for any arbitrary regexp would mean testing every
-;; position before point.  Regexp searches won't find matches that
-;; straddle the start position so we search forwards once and then
-;; back repeatedly and then back up a char at a time.
-
-(defun browse-url-looking-at (regexp)
-  "Return non-nil if point is in or just after a match for REGEXP.
-Set the match data from the earliest such match ending at or after
-point."
-  (save-excursion
-    (let ((old-point (point)) match)
-      (and (looking-at regexp)
-	   (>= (match-end 0) old-point)
-	   (setq match (point)))
-      ;; Search back repeatedly from end of next match.
-      ;; This may fail if next match ends before this match does.
-      (re-search-forward regexp nil 'limit)
-      (while (and (re-search-backward regexp nil t)
-		  (or (> (match-beginning 0) old-point)
-		      (and (looking-at regexp)	; Extend match-end past search start
-			   (>= (match-end 0) old-point)
-			   (setq match (point))))))
-      (if (not match) nil
-	(goto-char match)
-	;; Back up a char at a time in case search skipped
-	;; intermediate match straddling search start pos.
-	(while (and (not (bobp))
-		    (progn (backward-char 1) (looking-at regexp))
-		    (>= (match-end 0) old-point)
-		    (setq match (point))))
-	(goto-char match)
-	(looking-at regexp)))))
-
 ;; Having this as a separate function called by the browser-specific
 ;; functions allows them to be stand-alone commands, making it easier
 ;; to switch between browsers.