如何配置delete-selection-mode只删除?

时间:2009-06-24 04:01:27

标签: emacs editing

我在Windows上使用GNU Emacs 22.3.1。

在我的Emacs中,我启用了delete-selection-mode,选择一个区域并删除或替换它非常有用。但我有一个缺点。

当我在选择上写或按DEL时,Emacs不仅删除文本,而且它杀死(a.k.a。发送到剪贴板*)。这对我来说非常烦人,因为我无法控制我的杀戮戒指(a.k.a.剪贴板)并可能导致意想不到的效果。

delete-selection-mode有一种方法可以不删除文本,只删除它吗?也许修改the source code

(*:我已经同步了杀手圈和Windows剪贴板,所以对我来说(实际用途)它是一样的)


编辑[2009年6月24日]

谢谢,丹尼尔波。即使有了Trey Jackson的想法,选择仍然是杀戮。我找到了原因。

我发现问题不在delete-selection-mode。问题是,当我选择区域时,我用鼠标做了。并且从来没有想到鼠标正在复制文本。使用set-mark命令和箭头键,文本最终不会被杀死,只会被删除。

我在.emacs中禁用了此行为:

(require 'delsel)
(setq mouse-drag-copy-region nil)
(global-unset-key (kbd "<mouse-2>"))
(global-unset-key (kbd "<mouse-3>"))

感谢您的建议。如果禁用此鼠标行为的此方法可能会导致与其他选项冲突,请发表评论。

2 个答案:

答案 0 :(得分:0)

看起来您只需要修改源的一小部分,即进行此更改:

(defun delete-active-region (&optional killp)
  (delete-region (point) (mark))
  t)

原始代码查看了参数killp并使用它来决定是否将区域添加到kill-ring中,并且您说您不希望这样。此更改会强制始终删除该区域。

现在,您不需要实际修改源代码,只需将该函数定义放在.emacs中(require 'delsel)之后(或(delete-selection-mode)之后)。

答案 1 :(得分:0)

您是否尝试使用emacs启动-Q。如果我这样做而只启用M-x: delete-selection-mode,我无法重现您描述的内容。什么都没被杀死只删除?!你能查一下吗?