使键盘快捷键在两次按下时执行某些操作

时间:2013-10-25 04:42:55

标签: emacs elisp

在Emacs中,我想让键盘组合做一件事,如果我按一次,另一件事,如果我按两次。除此之外我不在乎(可能交替会最有意义)。我知道如何制作替代品,但问题是,我想让它在我做其他事情时重置,这样按下快捷键一次,移动光标,然后再次按下它会按下一次动作,而不是按两次行动。

2 个答案:

答案 0 :(得分:3)

您可以使用last-command,例如

(defun eab/etags-find-or-pop ()
  (interactive)
  (if (memq last-command '(eab/etags-find-or-pop))
      (call-interactively 'pop-tag-mark)
    (call-interactively 'etags-select-find-tag-at-point)))

(global-set-key (kbd "M-.") 'eab/etags-find-or-pop)

如果您第一次按M-.,则会调用一件事,如果M-. M-.(第二次)调用另一件事。

答案 1 :(得分:1)

测试此类重复的常用方法是使用(eq this-command last-command)