在Emacs中禁用包密钥绑定覆盖

在Emacs中禁用包密钥绑定覆盖,emacs,elisp,perforce,Emacs,Elisp,Perforce,这似乎是一些我不理解的基本Emacs配置问题 我在现场预装了Emacs 24.3。在Verilog文件中,按M-s键绑定到p4当前文件“编辑”(性能操作),同样地,M-e键绑定到p4当前文件“同步”。一切都很好。 问题是在VHDL文件中,M-s也会这样做,但M-e绑定到“VHDL语句结束”。我想它做“p4编辑”像在Verilog 似乎vhdl模式正在覆盖M-e键函数,我找不到如何永久更改它。如果我执行本地unset key和unset M-e,我会得到所需的结果,M-e执行p4编辑,但是当我重新

这似乎是一些我不理解的基本Emacs配置问题

我在现场预装了Emacs 24.3。在Verilog文件中,按M-s键绑定到p4当前文件“编辑”(性能操作),同样地,M-e键绑定到p4当前文件“同步”。一切都很好。 问题是在VHDL文件中,M-s也会这样做,但M-e绑定到“VHDL语句结束”。我想它做“p4编辑”像在Verilog

似乎vhdl模式正在覆盖M-e键函数,我找不到如何永久更改它。如果我执行本地unset key和unset M-e,我会得到所需的结果,M-e执行p4编辑,但是当我重新启动Emacs时,M-e会再次执行“vhdl语句结束”

如何将M-e永久更改为“p4编辑”?我不是一个流利的口齿不清,但会很高兴得到指示如何改变这一点。
谢谢。

要从模式键映射中删除过度绑定,以便Emacs恢复到通常使用的方式,通常需要执行以下操作:

(加载后评估“vhdl模式”
"(progn)
(定义键vhdl模式映射(kbd“M-e”)nil);解除绑定M-e
(定义键vhdl模式映射(kbd“M-a”)nil);;解绑并购
不过,正如MrBones所评论的,这些并不是非常理想的自定义绑定。M-和M—E在Emacs中都有标准的用法(前者通常是一组有用的东西挂起的前缀绑定),如果可能的话,你应该考虑把这些绑定移到其他键。
(我的印象是,“现场预装”版本已经有了这些绑定,但是?在这种情况下,这更像是对那些坚持这一点的人的注释…

注意,在许多主要模式下,
M-e
将设置为与语句结尾/句子结尾相当的值。在日志运行中,您可能会发现重新绑定perforce绑定更容易。请在VHDL模式代码中查找它使用的键映射-很可能是
VHDL模式映射
。在该键映射中将
M-e
定义为所需的命令。如果有必要(例如,如果一开始没有定义模式映射),您可以将
define键
sexp放在模式挂钩上,以便在模式打开时生效。MrBones,感谢您的建议,我会这样做,这也是更改所绘制的performe绑定(见下文)的最简单解决方案,感谢您的帮助。我看不到“vhdl模式图”,你能给我详细的说明吗?在emacs安装目录中有一个文件emacs/24.3/lisp/progmodes/vhdl mode.elc,可能是定义vhdl绑定的地方。它是公共的,所以我不能更改它,但也许我可以将vhdl模式定义复制到本地文件,让emacs从本地文件中读取定义,我可以修改这些定义?感谢phils,perforce绑定是我的.emacs文件中的全局设置键,我可以编辑它们。我决定听从您和MrBones的建议,我将perforce绑定更改为ESC M-e、ESC M-s等。加载后的eval看起来很有用,保存起来以备不时之需:-)。根据我对Drew的评论,为了提高我的理解,我如何修改vhdl模式映射?(vhdl mode.elc)您可以使用我上面介绍的技术修改
vhdl模式映射
中的绑定,这是
vhdl模式
的关键映射
eval after load
确保您的代码不会在密钥映射存在之前尝试修改它。我在代码中添加了一个
progn
包装器和一个额外的示例,以演示如何执行多项操作。如果希望将某个键绑定到该键映射中的某个命令,只需将
nil
替换为
'some-command