changeset 96178:382d88eb4f25

(bug-reference-map): Bind down-mouse-1 rather than mouse-1. (bug-reference-url-format): Autoload safe if string. (bug-reference-bug-regexp): Make space after "bug" optional. (bug-reference-fontify): Save match data.
author Glenn Morris <rgm@gnu.org>
date Sat, 21 Jun 2008 20:13:48 +0000
parents 68c23dc0c0cc
children 65cbed0b91c9
files lisp/progmodes/bug-reference.el
diffstat 1 files changed, 17 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/bug-reference.el	Sat Jun 21 20:00:04 2008 +0000
+++ b/lisp/progmodes/bug-reference.el	Sat Jun 21 20:13:48 2008 +0000
@@ -32,7 +32,7 @@
 
 (defvar bug-reference-map
   (let ((map (make-sparse-keymap)))
-    (define-key map [mouse-1] 'bug-reference-push-button)
+    (define-key map [down-mouse-1] 'bug-reference-push-button)
     (define-key map (kbd "C-c RET") 'bug-reference-push-button)
     map)
   "Keymap used by bug reference buttons.")
@@ -43,8 +43,11 @@
 The bug number is supplied as a string, so this should have a single %s.
 There is no default setting for this, it must be set per file.")
 
+;;;###autoload
+(put 'bug-reference-url-format 'safe-local-variable 'stringp)
+
 (defconst bug-reference-bug-regexp
-  "\\(?:[Bb]ug #\\|PR [a-z-+]+/\\)\\([0-9]+\\)"
+  "\\(?:[Bb]ug ?#\\|PR [a-z-+]+/\\)\\([0-9]+\\)"
   "Regular expression which matches bug references.")
 
 (defun bug-reference-set-overlay-properties ()
@@ -74,17 +77,18 @@
       ;; Remove old overlays.
       (bug-reference-unfontify beg-line end-line)
       (goto-char beg-line)
-      (while (and (< (point) end-line)
-		  (re-search-forward bug-reference-bug-regexp end-line 'move))
-	(when (or (not bug-reference-prog-mode)
-		  ;; This tests for both comment and string syntax.
-		  (nth 8 (syntax-ppss)))
-	  (let ((overlay (make-overlay (match-beginning 0) (match-end 0)
-				       nil t nil)))
-	    (overlay-put overlay 'category 'bug-reference)
-	    (overlay-put overlay 'bug-reference-url
-			 (format bug-reference-url-format
-				 (match-string-no-properties 1)))))))))
+      (save-match-data
+	(while (and (< (point) end-line)
+		    (re-search-forward bug-reference-bug-regexp end-line 'move))
+	  (when (or (not bug-reference-prog-mode)
+		    ;; This tests for both comment and string syntax.
+		    (nth 8 (syntax-ppss)))
+	    (let ((overlay (make-overlay (match-beginning 0) (match-end 0)
+					 nil t nil)))
+	      (overlay-put overlay 'category 'bug-reference)
+	      (overlay-put overlay 'bug-reference-url
+			   (format bug-reference-url-format
+				   (match-string-no-properties 1))))))))))
 
 ;; Taken from button.el.
 (defun bug-reference-push-button (&optional pos use-mouse-action)