3

当我单击或滚动鼠标滚轮时,它的指针位于屏幕的右侧,没有文本,emacs 显示如下帮助菜单:

按 PageUp 键从 minibuffer 到达这个缓冲区。
或者,您可以使用向上/向下键(或您的历史键)来更改
--/.../--
在此缓冲区中,键入 RET 以选择完成近点。

可能的完成是:
e==>Emacs 教程 E==>Emacs 教程(选择语言)...
--/.../--
a==>关于 Emacs A==>关于 GNU
==================================================== ================================

;; 这是我的工作缓冲区

==================================================== ================================
帮助(向上/向下更改,PgUp 到菜单):e==>Emacs 教程

这很令人不安,我必须按 Cg 才能返回编辑。如何禁用此功能?

PS 我尝试按 Ch k < LMB at right>,但它没有显示键的代码,它再次显示该菜单。

编辑(回应斯特凡):

按下后:aaa <LMB at right> C-g C-h l我看到以下顺序:

... aaa ESC [ M SPC \300\256 6 ESC [ M # \300\256 6 Cg Ch l

正如我发现的那样,这些符号:\300\2566取决于我单击时光标的位置。\300\256是一个水平坐标,6是一个垂直坐标。

我对其进行了进一步调查:当 y 坐标从普通符号a}DEL(实际上它是最后一个普通符号)变成类似代码\300\200(这是第一个值,导致帮助菜单)时,菜单出现。正如 unicode符号表所示DEL代码为 U+007F(0b01111111),下一个值将是 U+00800(0b10000000)(填充字符),位于另一个表中:C1 控件和 Latin-1 补充

我在 PuTTy ssh 客户端上使用 GNU emacs 23.2.1。

4

2 回答 2

1

这听起来不像 Emacs 在其默认配置中的任何功能。我建议您尝试:a a a <LMB at right>然后C-h l哪个应该向您显示 Emacs 收到的最后几个事件。尝试找出其中对应的事件(它们将出现在 之后a a a)以查看操作系统在执行此操作时发送给 Emacs 的内容。

于 2012-09-09T00:29:50.270 回答
0

这实际上是一个错误。这是一个解决方法:

;; Disable menubar
(menu-bar-mode -1)

;; Workaround for "mouse on menu-bar" bug
(defun transform-to-start-event (event)
  (let ((y0 (second (window-inside-edges (selected-window))))
        (x0 (first (window-inside-edges (selected-window)))))
    (let ((x (- (car (third (second event))) #x3fff00 x0))
          (y (- (cdr (third (second event))) y0))
          (time (fourth (second event))))
      `(down-mouse-1 ,(posn-at-x-y x y (window-at 0 0) t)))))

(defun tmm-menubar-mouse (event)
  (interactive "e")
  (let ((evt (transform-to-start-event event)))
    (push (cons 'up-mouse-1 (cdr evt)) unread-command-events)
    (mouse-drag-track evt t)))

它会停用菜单栏,但无论如何我都不需要它。它也不能正确处理选择和滚动,但至少它可以正确定位点。

于 2012-10-09T08:15:46.920 回答