我有一个函数permanent-set-key
可以自动将本地和全局的键绑定定义添加到初始化文件中。当用户请求添加本地键绑定时,该函数使用我之前提出的问题的答案中的这种非常强大的方法来确定当前的本地键映射。
所以现在我知道了的符号名称(current-local-map)
并且有适当的 sexp 来定义所需的键,例如:
(define-key python-shell-map [3 6] 'python-describe-symbol)
但是,在初始化的时候,通常这样的映射是未定义的,所以急切地评估上面的形式会导致错误。
什么是一种强大的编程方法来安排这些表格在适当的时间进行评估?
到目前为止,我一直在假设当前本地地图存在次要模式,然后eval-after-load
根据约定猜测次要模式的文件的名称,以便将上述 sexp 包装在一个表单中foo-mode-mode-map
。例如,这是自动生成的:
(eval-after-load 'dired '(define-key dired-mode-map [8388711] 'run_gdmap_dired))
并且恰好可以工作(因为确实存在dired
模式和文件)。
对于第一个示例,这种方法不起作用:不存在python-shell
次要或主要模式。主要模式comint-mode
处理几个“子模式”,因此向其添加仅适用于“python”版本的自定义似乎不合适。
如何确定将定义符号的文件的名称,例如python-shell-map
?
我想我可以使用加载后功能并检查所有可能已定义的新符号,但也许有更直接的解决方案。