(bug-reference-map): Bind down-mouse-1 rather than mouse-1.
authorGlenn Morris <rgm@gnu.org>
Sat, 21 Jun 2008 20:13:48 +0000 (20:13 +0000)
committerGlenn Morris <rgm@gnu.org>
Sat, 21 Jun 2008 20:13:48 +0000 (20:13 +0000)
(bug-reference-url-format): Autoload safe if string.
(bug-reference-bug-regexp): Make space after "bug" optional.
(bug-reference-fontify): Save match data.

lisp/progmodes/bug-reference.el

index 1e2f22b..d98604a 100644 (file)
@@ -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.")
 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 @@ There is no default setting for this, it must be set per file.")
       ;; 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)