[வியாழன் ஜனவரி 09, 2025] Ihor Radchenko wrote:

Thanks for the review, and sorry for getting back so late.

>> +(defvar-local org-mouse--old-mouse-map (copy-keymap org-mouse-map))
>> ...
>> +    (when org-mouse-minor-mode
>> +      ;; Without `copy-keymap', later `org-defkey' calls modify the
>> +      ;; value of keymap `org-mouse--old-mouse-map' holds.
>> +      (setq org-mouse--old-mouse-map (copy-keymap org-mouse-map)))
>> +    (setq org-mouse-map (copy-keymap org-mouse--old-mouse-map))
>> +    (org-defkey org-mouse-minor-mode-map [S-mouse-2] nil)
>> +    (org-defkey org-mouse-minor-mode-map [drag-mouse-3] nil)
>> +    (when org-mouse-minor-mode
>> +      (when (memq 'context-menu org-mouse-features)
>> +        (org-defkey org-mouse-map [mouse-3] nil)
>> +        (org-defkey org-mouse-map [C-drag-mouse-1] #'org-mouse-move-tree)
>> +        (org-defkey org-mouse-map [C-down-mouse-1] 
>> #'org-mouse-move-tree-start))
>> ...
>
> `org-mouse--old-mouse-map' is awkward.
> May we use :enable + menu item instead?

Hmm looking closely at the modifications org-mouse does to
org-mouse-map, I see a severe interdependence between all the features
in org-mouse-features.

There's no way C-mouse-1 will move the trees with context-menu in the
list [*] or drag-mouse-3 if move-tree is in the list if activate-stars
is not enabled.  This is making me rethink if it is worth changing
the org-mouse-map and why not just do

    (when (memq 'activate-stars org-mouse-features)
          (funcall fl-fun nil
                   `((,org-outline-regexp
                      0 `(face org-link mouse-face highlight keymap
                               ,(let ((map (make-sparse-keymap)))
                                  (set-keymap-parent map org-mouse-map)
                                  (when (memq 'move-tree org-mouse-features)
                                    (define-key map [C-drag-mouse-1] 
#'org-mouse-move-tree)
                                    ...)))
                      'prepend))))

and so on for the rest?  This would avoid the need for the
org-mouse--old-mouse-map stub.

Reply via email to