Emacs 禁用右侧鼠标按钮上的帮助菜单(x-coord>0x7F)
当我单击或滚动鼠标滚轮时,其指针位于屏幕的右侧,没有文本,emacs显示帮助菜单,如下所示: Press PageUp key to reach this buffer from the minibuffer. Alternatively, you can use Up/Down keys (or your History keys) to change --/.../-- In this buffer, type RET to select the completion near point. Possible completions are: e==>Emacs Tutorial E==>Emacs Tutorial (choose language)... --/.../-- a==>About Emacs A==>About GNU ================================================================================= ;; here my work buffer ================================================================================= Help (up/down to change, PgUp to menu): e==>Emacs Tutorial 这是非常令人不安的,我必须按C-g返回编辑。 如何禁用此功能 另外,我试着按C-HKEmacs 禁用右侧鼠标按钮上的帮助菜单(x-coord>0x7F),emacs,Emacs,当我单击或滚动鼠标滚轮时,其指针位于屏幕的右侧,没有文本,emacs显示帮助菜单,如下所示: Press PageUp key to reach this buffer from the minibuffer. Alternatively, you can use Up/Down keys (or your History keys) to change --/.../-- In this buffer, type RET to select the completion near point.
我在PuTTy ssh客户端上使用GNU emacs 23.2.1。这听起来不像emacs默认配置中的任何功能。我建议您尝试:a,然后是C-HL,它应该显示emacs接收到的最后几个事件。尝试找出其中哪些事件对应,它们将在a之后立即出现以查看当您这样做时,操作系统会向Emacs发送什么。这实际上是一个bug。 这里有一个解决方法:
;; 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)))
它关闭了菜单栏,但我并不需要它。
此外,它不能正确处理选择和滚动,但至少它能正确定位点。谢谢,后天我将在访问该机器时尝试,并报告结果。测试结果:…a ESC[M SPC\300\256 6 ESC[M\300\256 6 C-g C-hl@Necto:Aha!听起来这可能是Emacs的一个功能,毕竟,有趣的字节序列可能是Putty完成的点击编码,显然Emacs错误地认为这些字节意味着您正在单击显示菜单栏的顶行。您可能希望M-x报告Emacs错误,以便对此代码有更多了解的ne可以尝试找出问题所在。也许它在更新版本的Emacs中得到了修复(不保证,但值得一试)。不确定为什么会被否决。这为我解决了同样的问题,在ssh会话中使用基于终端的Emacs。