Самым простым решением этого является изменение функции mouse-drag-track
, которую можно найти в mouse.el
.Чтобы найти определение функции, Mx find-function mouse-drag-track RET .
Скопируйте его в файл .emacs и внесите одно небольшое изменение.Найдите оператор and
, который выглядит следующим образом:
(and mouse-drag-copy-region
do-mouse-drag-region-post-process
(let (deactivate-mark)
(copy-region-as-kill region-commencement
region-termination)))
И измените его так, чтобы проверка включала не менее 2 символов.Я сделал эту проверку для 10 символов, чтобы упростить тестирование:
(and mouse-drag-copy-region
(>= (abs (- region-commencement region-termination)) 10) ;; THIS IS NEW
do-mouse-drag-region-post-process
(let (deactivate-mark)
(copy-region-as-kill region-commencement
region-termination)))
Я не вижу чистого способа сделать это с помощью советов, перехватов или переменных настроек.Обязательно укажите (require 'mouse)
до определения mouse-drag-track
, чтобы гарантировать, что вы переопределяете встроенное определение, а не переопределяете ваше.Возможно, вы захотите добавить проверку к вашему .emacs прямо над переопределением, чтобы напомнить вам проверять наличие новых версий перезаписываемой библиотеки / функции:
(unless (eq emacs-major-version 23)
(error "check for new mouse-drag-track"))