我正在寫一個elisp函數,該函數將給定的鍵永久綁定到當前主模式的鍵映射中的給定命令。例如,當前本地鍵盤映射的Emacs名稱?
(define-key python-mode-map [C-f1] 'python-describe-symbol)
命令和鍵序列從用戶交互式收集。但是,我無法生成對應於當前主要模式的KEYMAP的名稱(例如'python-mode-map')。
我試過了函數(current-local-map),但是這個函數返回鍵映射對象本身,而不是它的名字。
據我所知,許多主要的模式鍵盤映射都是根據慣例''major-mode-name'-mode-map'命名的,但並不總是這種情況(例如python-shell-map),所以我寧願我的代碼不依賴這個約定。 (我甚至不確定如何訪問當前主要模式的名稱)。
的(define-key ...)
將被添加到一個init文件,所以雖然
(define-key (current-local-map) key command)
似乎工作,不爲代碼在初始化文件的工作。
你爲什麼要編寫生成其他代碼的代碼?你試圖解決什麼更深的問題?你可以寫一些其他人可以簡單地「需要」的圖書館嗎?你能編寫一個單一的模式來執行這些基於當前模式做正確事情的「神奇描述符號」功能嗎?等等。 –
我的觀點/問題是,如果你可以用編程方式添加這些,你可以用更通用,更優雅的方式來解決它 - 一個不涉及大量看起來幾乎完全相同的代碼片段,除了模式映射... –
@TreyJackson這些「片段」可能屬於某個'.emacs'中的代碼片段(當然在合理數量內)。生成其他代碼的代碼在Lisp中不會被忽視。 – user4815162342