在SLIME中有两个非常有用的函数:slime-copy-or-inspect-presentation-at-mouse和slime-presentation-menu。但是必须用事件参数来调用它们。为了生成一个偶数,我需要做很多后勤工作(计算“鼠标”当前指向的对象的打印表示所占用的区域,行和列--这是我真的不想做的事情,因为Emacs中肯定有一些东西已经计算出来了。
那么,有一种简单的方法来生成“假”鼠标事件吗?因为在编辑器中只使用鼠标做两件事情,否则不需要鼠标感觉.不是很聪明。:)
编辑
以下是我尝试过的:
(define-key lisp-mode-map (kbd "C-x ?")
#'(lambda ()
(interactive)
(message "called")
(slime-copy-or-inspect-presentation-at-mouse
`(mouse-2 ;; button
(,(selected-window) ;; window
,(point) ;; position
(0 . 0) ;; window-relative pixel
0 ;; timestamp
nil ;; object
,(point) ;; text position
(,(current-column) . ;; column
,(line-number-at-pos (point))) ;; line
nil ;; image
(0 . 0) ;; object-relative pixel
(1 . 1))))))
(define-key lisp-mode-map (kbd "C-x SPC")
#'(lambda ()
(interactive)
(message "called")
(slime-presentation-menu
`(mouse-3 ;; button
(,(selected-window) ;; window
,(point) ;; position
(0 . 0) ;; window-relative pixel
0 ;; timestamp
nil ;; object
,(point) ;; text position
(,(current-column) . ;; column
,(line-number-at-pos (point))) ;; line
nil ;; image
(0 . 0) ;; object-relative pixel
(1 . 1))))))这实际上可以让我了解到它显示菜单的程度,但是当slime-presentation-menu调用任何绑定到菜单项的函数时,他们都会发现它们不是用“真正的”鼠标事件调用的,抛出和退出。:(
EDIT2
实际上,我认为这是因为x-popup-menu,当您用鼠标或键盘选择菜单项时,它会分派不同的事件.阿罗瑞。
发布于 2012-06-21 15:39:00
希望绑定到鼠标的命令,请单击“接受事件参数”。这是一个列满了诸如点击按钮、位置、窗口等内容的列表。参见21.7.4单击Elisp手册中的事件。
下面是一个伪造滚动轮事件的简单示例:
(mwheel-scroll `(mouse-5 ;; button
(,(selected-window) ;; window
,(point) ;; position
(0 . 0) ;; window-relative pixel
0 ;; timestamp
nil ;; object
,(point) ;; text position
(,(current-column) . ;; column
,(line-number-at-pos (point))) ;; line
nil ;; image
(0 . 0) ;; object-relative pixel
(1 . 1)))) ;; object size下面是一个真实事件的例子:
'(mouse-4
(#<window 374 on *scratch*>
120
(6 . 10)
1301935153
nil
120
(0 . 0)
nil
(6 . 10)
(7 . 15)))发布于 2016-02-07 18:38:47
posn-at-point所做的几乎是正确的。下面是一种将其输出与真正的鼠标事件进行比较的方法:
(defun my/test-posn (e)
(interactive "e")
(message "%S\n%S" e `(down-mouse-3 ,(posn-at-point))))
(global-set-key [down-mouse-3] #'my/test-posn)输出:
(down-mouse-3 (#<window 73 on blah> 3152 (0 . 594) 145393072 nil 3152 (0 . 33) nil (1 . 4) (8 . 18)))
(down-mouse-3 (#<window 73 on blah> 3152 (0 . 594) 0 nil 3152 (0 . 33) nil (0 . 0) (8 . 18)))https://stackoverflow.com/questions/11124050
复制相似问题