我想定義適用於任何程序模式的自定義模式。我需要爲所有這些模式定義鍵綁定。我選擇使用define-minor-mode
和:keymap
以最小的努力來聲明密鑰綁定。如何正確定義小模式的鍵盤映射
我想綁定comment-or-uncomment-region
到"C-;"
kbd宏給了我[67108923]
這個鍵序列的幻數。
我寫的樣本不工作
(define-minor-mode
my-mode
nil nil
:keymap '(
([67108923] . comment-or-uncomment-region)
)
)
我已經註冊的模式,切換它,但按С-;
產生密鑰序列是沒有定義
,我以後通知已經在臨時緩衝區中寫入並評估了以預期方式執行的簡單的global-set-key
。
(global-set-key [67108923] 'comment-or-uncomment-region)
現在按C-;
會產生預期的comment-or-oncomment-region
行爲。
我試圖通過C-h f
搜索功能信息來調試問題。它產生奇怪輸出,comment-or-oncomment-region
勢必兩次到不同按鍵序列:
It is bound to C - ;, C-;
首先一個出現並且與較小的模式來回切換消失,從global-set-key
調用其他出現。
如果我爲兩個地圖使用了相同的密鑰定義,情況如何?我錯過了什麼細節?
make-sparse-keymap完美工作,但我仍然不明白基於http://www.gnu.org/software/emacs/manual/html_node/elisp/Defining-Minor的原始方法有什麼問題-yodes.html – ayvango
ayvango:您的代碼在Emacs 24.3中可用。我懷疑你的問題是你最初錯了,之後定義了my-mode-map。任何後續評估都不會破壞現有地圖;你需要首先解除綁定my-mode-map。 – phils