如何使用down-mouse-1使用case和read-event

时间:2014-01-07 06:41:25

标签: emacs elisp

我有一个使用(case (read-event) . . .)的函数 - 在函数持续时间内,我无法使down-mouse-1等于整数。以下是down-mouse-1生成Try again而不是Hello world的结果的示例。以下所有示例均有效,down-mouse-1除外:('f12 516); (?\s-k 517); ('f3 518); ('C-tab 519); ('C-M-s-right 520); (?m 522)

(let* (
    (test (case (read-event)
      ('down-mouse-1 9999))))
  (cond
    ((eq test 9999)
      (message "Hello world."))
    (t (message "Try again."))))

2 个答案:

答案 0 :(得分:1)

我不清楚你要做什么。但是你不应该引用case子句中的键。例如,使用down-mouse-1,而不是'down-mouse-1

答案 1 :(得分:1)

read-event永远不会返回down-mouse-1。对于鼠标单击,它将返回的第一个事件看起来像(down-mouse-1 ...)。所以你可以这样做:

(pcase (read-event)
  (`(down-mouse-1 . ,_) 9999))

请注意,根据我的经验,read-event 99%的用途会更好地重写。