当我使用鼠标点击emacs窗口的时候,我希望粘贴到缓冲区中的x选项被吹掉了。这似乎是由于我应用左键导致无意中“拖拽副本”时手的轻微移动造成的。我不相信我能够打破这种特殊的习惯。
我发现阻止这种情况的一个解决方案是设置:
(setq mouse-drag-copy-region nil)
然而,这有一个令人遗憾的副作用,即阻止我在emacs中使用鼠标拖动功能。有没有办法控制鼠标拖动行为,以便忽略点击,除非它在缓冲区中展开两个或多个字符?
我正在使用GNU emacs 23.3.1在Centos 5.x + GNOME 2上进行编码,以防它有所作为。
这似乎是一个GTK / X问题;我可以与其他应用程序产生类似的行为。
答案 0 :(得分:1)
最简单的解决方案是修改mouse-drag-track
中的mouse.el
功能。要查找函数定义, M-x查找函数鼠标拖动轨迹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"))
答案 1 :(得分:0)
这是在2001年引入源代码历史记录的emacs中的一个错误。我发布了一个可以应用于本地安装的补丁。希望emacs维护人员能够进一步调查。
这是我的补丁和讨论:
http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00818.html