我在 (远程) 远程 Linux ((CentOS) 机器上运行 GNU Emacs 21.4.1,使用我的 MacBook 作为 X 服务器。工作正常,除非我尝试删除一个单词、一行或一个区域。然后它会锁定 30 秒左右。这听起来像是一件小事,但是当你每次都必须停下来 30 秒时,你就会意识到你删除的频率有多高。
我的理论是,Emacs 试图将文本放入 X 服务器剪切粘贴缓冲区,而后者又试图将其放入 OSX 剪切粘贴缓冲区,在此过程中,该过程被阻止,直到超时。(我对这一理论的唯一证据是 (a) 复制区域的行为方式相同,并且 (b) 已删除的文本不会显示在缓冲区中。)
欢迎提出任何建议。
编辑:
(setq interprogram-cut-function nil)
帮我解决了问题。这很有道理。谢谢,Trey。
答案1
我偶尔也会在 Linux 机器上遇到同样的问题(使用 Gnome),但还没有找到最终原因。不过,切换剪切/粘贴行为通常可以解决问题。我编写了这两个实用程序,当问题出现时我会运行它们。您可能会发现它们很有用:
(defun xor (a b)
(or (and a (not b)) (and (not a) b)))
(defun reset-cut ()
"toggle the intprogram cut function to avoid odd x hangup"
(interactive)
(message "Cut is %s" (setq interprogram-cut-function (xor interprogram-cut-function 'x-select-text))))
(defun reset-paste ()
"toggle the intprogram paste function to avoid odd x hangup"
(interactive)
(message "Paste is %s" (setq interprogram-paste-function (xor interprogram-paste-function 'x-cut-buffer-or-selection-value))))