diff options
| author | Craig Jennings <c@cjennings.net> | 2025-10-20 13:25:21 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2025-10-20 13:25:21 -0500 |
| commit | 2c41142debe94e7863f1c5365e5f865b1e67cc6a (patch) | |
| tree | 1f6d7cd5ac91607b7e190511e1d72e5eb0c0c833 | |
| parent | 03627ac73eefb582e8680afcd64c40a0be728ed7 (diff) | |
feat:mouse-trap-mode: add buffer-local activation and excluded modes
Modify `mouse-trap-mode` to activate buffer-locally and add an
exclusion list of major modes where the mode should not be enabled.
Update description and bindings for improved text and prog mode
integration.
| -rw-r--r-- | modules/mousetrap-mode.el | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/modules/mousetrap-mode.el b/modules/mousetrap-mode.el index 0d5210d9..fa9ee6dd 100644 --- a/modules/mousetrap-mode.el +++ b/modules/mousetrap-mode.el @@ -1,12 +1,12 @@ ;;; mousetrap-mode.el --- -*- coding: utf-8; lexical-binding: t; -*- ;; ;;; Commentary: -;; Mouse Trap Mode is a minor mode for Emacs that globally disables most mouse and +;; Mouse Trap Mode is a minor mode for Emacs that disables most mouse and ;; trackpad events to prevent accidental text modifications. Hitting the trackpad and ;; finding my text is being inserted in an unintended place is quite annoying, ;; especially when you're overcaffeinated. ;; -;; The mode unbinds almost every mouse event, including clicks, drags, and wheel +;; The mode unbinds almost every mouse event, including clicks, drags, and wheel ;; movements, with various modifiers like Control, Meta, and Shift. ;; ;; Inspired by this blog post from Malabarba @@ -38,16 +38,29 @@ Disabling mouse prevents accidental mouse moves modifying text.") (define-minor-mode mouse-trap-mode - "Globally disable most mouse and trackpad events. + "Buffer-locally disable most mouse and trackpad events. When active, <mouse-*>, <down-mouse-*>, <drag-mouse-*>, <double-mouse-*>, <triple-mouse-*>, and wheel events are bound to `ignore', with or without C-, M-, S- modifiers." - :global t :lighter " 🐭" - :keymap mouse-trap-mode-map) -(global-set-key (kbd "C-c M") #'mouse-trap-mode) -(mouse-trap-mode 1) + :keymap mouse-trap-mode-map + :group 'convenience) + +(defvar mouse-trap-excluded-modes + '(nov-mode pdf-view-mode dashboard-mode image-mode eww-mode Info-mode dired-mode) + "Major modes where `mouse-trap-mode' should not be enabled.") + +(defun mouse-trap-maybe-enable () + "Enable `mouse-trap-mode' unless in an excluded mode." + (unless (apply #'derived-mode-p mouse-trap-excluded-modes) + (mouse-trap-mode 1))) + +;; Enable in text and prog modes +(add-hook 'text-mode-hook #'mouse-trap-maybe-enable) +(add-hook 'prog-mode-hook #'mouse-trap-maybe-enable) + +(keymap-global-set "C-c M" #'mouse-trap-mode) (provide 'mousetrap-mode) ;;; mousetrap-mode.el ends here. |
