我正在使用Emacs(23),并将C-.
键组合绑定到一个函数:
(global-set-key (kbd "C-.") 'myfunction)
是否可以绑定快速“双击”键的功能?例如,当快速两次输入.
时,我想调用函数myfunction
。
我正在使用Emacs(23),并将C-.
键组合绑定到一个函数:
(global-set-key (kbd "C-.") 'myfunction)
是否可以绑定快速“双击”键的功能?例如,当快速两次输入.
时,我想调用函数myfunction
。
虽然没有内置的功能,但您可以使用此代码。自定义变量dc-single-click-cmd
和dc-double-click-cmd
以成为您想要的命令。
注意:这会引入轻微的延迟,因为代码需要等待一小段时间来确定事件是单击还是双击。
(defvar dc-single-click-cmd 'dc-example-single-click)
(defvar dc-double-click-cmd 'dc-example-double-click)
(defvar dc-click-timer nil
"Pending single-click event.")
(defun dc-example-single-click ()
(interactive)
(message "A single click just happened."))
(defun dc-example-double-click ()
(interactive)
(message "Wait! I meant double click."))
(defun dc-click-cmd ()
"Either kick off a single click, or a double click."
(interactive)
(if dc-click-timer
(progn
(cancel-timer dc-click-timer)
(setq dc-click-timer nil)
(call-interactively dc-double-click-cmd))
(setq dc-click-timer (run-at-time (when double-click-time
(/ 1000.0 double-click-time))
nil
'dc-call-single-click))))
(defun dc-call-single-click ()
"spawn the single click"
(setq dc-click-timer nil)
(call-interactively dc-single-click-cmd))
'
时,emacs将等待下一个字符并修改缓冲区内容('a
将变成á
)。然而,这是另一个问题的主题,我可能会在自己做研究后再提出。 - YuppieNetworking