有一個emacs擴展可以將密鑰構建到非常不方便的位置,並且在加載擴展後在我的.emacs文件中重新分配鍵綁定。我窺見了擴展代碼,它沒有使用可能在加載前傳遞的變量或defcustoms。undefine空的前綴鍵遞歸
我首先禁用與(define-key ... nil)
的現有綁定,然後重新綁定它們。
問題是,所有的前綴綁定鏈仍然存在並污染我的鍵盤設置。
如何以遞歸方式刪除所有空的(沒有註冊的子項)前綴密鑰?
與例如
更新假設map
是一個空的稀疏鍵映射。
(define-key map (kbd "C-c M-p b") 'do-first)
(define-key map (kbd "C-c M-p b f g") 'do-second)
(define-key map (kbd "C-c M-p b r s") 'do-third)
(define-key map (kbd "C-c M-p b r s") nil)
(define-key map (kbd "C-c M-p b f g") nil)
(define-key map (kbd "C-c M-p b") nil)
之後,我想使用某種功能像(clean-map map)
使map
空一次。
能否請您提供一個更具體的例子,以更好地說明問題?例如,顯示一些代碼。 – Drew
我認爲問題是如果'Cc b'最初沒有被定義,它將在以下之後保持爲「空前綴」:'(global-set-key(kbd「Cc ba」)'func)(global- unset-key(kbd「Cc ba」))'。 ayvango希望以遞歸的方式刪除所有這樣的空白前綴(這樣,只有其他前綴作爲後代的前綴也將被刪除)。 – phils
哪個分機導致問題?如果它在ELPA或其他常見回購站點中可用,或者我可以在某處獲取源代碼,那麼我會在emacs -q會話中加載它,然後使用它來查看是否可以提供解決方案。 –