(mouse-wheel-mode): New global minor mode.
authorMiles Bader <miles@gnu.org>
Wed, 25 Oct 2000 11:39:51 +0000 (11:39 +0000)
committerMiles Bader <miles@gnu.org>
Wed, 25 Oct 2000 11:39:51 +0000 (11:39 +0000)
(mwheel-install): Use `mouse-wheel-mode'.

lisp/ChangeLog
lisp/mwheel.el

index f30be3f..7882d1e 100644 (file)
@@ -1,3 +1,11 @@
+2000-10-25  Miles Bader  <miles@gnu.org>
+
+       * recentf.el (recentf-mode): Variable removed.
+       (recentf-mode): Use `define-minor-mode'.
+
+       * mwheel.el (mouse-wheel-mode): New global minor mode.
+       (mwheel-install): Use `mouse-wheel-mode'.
+
 2000-10-25  Dave Love  <fx@gnu.org>
 
        * wid-edit.el (widget-field-keymap, widget-text-keymap): Don't
index d6b562b..f7feab4 100644 (file)
@@ -94,9 +94,19 @@ This can be slightly disconcerting, but some people may prefer it."
                (t (error "Bad binding in mwheel-scroll"))))
       (if curwin (select-window curwin)))))
 
+
+;;; Note this definition must be at the end of the file, because
+;;; `define-minor-mode' actually calls the mode-function if the
+;;; associated variable is non-nil, which requires that all needed
+;;; functions be already defined.  [This is arguably a bug in d-m-m]
 ;;;###autoload
-(defun mwheel-install ()
-  "Enable mouse wheel support."
+(define-minor-mode mouse-wheel-mode
+  "Toggle mouse wheel support.
+With prefix argument ARG, turn on if positive, otherwise off.
+Returns non-nil if the new state is enabled."
+  nil nil nil
+  :global t
+  :group 'mouse
   ;; In the latest versions of XEmacs, we could just use
   ;; (S-)*mouse-[45], since those are aliases for the button
   ;; equivalents in XEmacs, but I want this to work in as many
@@ -111,11 +121,20 @@ This can be slightly disconcerting, but some people may prefer it."
     ;; that if the wheeled-mouse is there, it just works, and this way it
     ;; doesn't yell at me if I'm on my laptop or another machine, etc.
     (condition-case ()
-       (while keys
-         (define-key global-map (car keys) 'mwheel-scroll)
-         (setq keys (cdr keys)))
+       (dolist (key keys)
+         (cond (mouse-wheel-mode
+                (define-key global-map key 'mwheel-scroll))
+               ((eq (lookup-key global-map key) 'mwheel-scroll)
+                (define-key global-map key nil))))
       (error nil))))
-    
+
+;;; Compatibility entry point
+;;;###autoload
+(defun mwheel-install (&optional uninstall)
+  "Enable mouse wheel support."
+  (mouse-wheel-mode t))
+
+
 (provide 'mwheel)
 
 ;;; mwheel.el ends here