2013-10-25 53 views
2

在Emacs中,我想讓鍵盤組合做一件事,如果我按下它一次,而另一件事,如果我按兩次。除此之外,我不在乎(可能交替會最有意義)。我知道如何製作替代的東西,但事情是,我希望它在我做其他事情時重置,以便按下快捷方式一次,移動光標,然後再按一次,按下一次動作,而不是按兩次行動。做一個鍵盤快捷鍵在兩臺印刷機上做一些事

回答

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-.(第二次)它調用另一件事。

+0

謝謝。如果你想知道我用的是什麼:https://github.com/asmeurer/dotfiles/commit/91ae190e5f1647688947ac2ebb36a3905e64d53e – asmeurer

+0

我想讓它交替,你可以爲if的第一部分定義一些布爾變量,並且那麼對於其他部分,如果它是真的,那麼做一件事,如果它是假的,則每次都翻轉它。 – asmeurer

+0

是的。在我的情況下,它不會改變行爲,它繼續稱之爲「另一件事」(例如,對於「M-。M-。M-。」等)。 – artscan

1

測試這種重複的通常方法是使用(eq this-command last-command)