升级到Emacs 24.4之后,我注意到在某些主要模式下,electric-pair-mode
正确"保留平衡"当光标在单词字符之前,而在其他单词字符之前。具体来说,假设我在缓冲区中有以下代码,并假设管道字符|
是我的光标:
foo = ["1", "2", |3"]
在python-mode
中,键入双引号字符会产生以下结果:
foo = ["1", "2", "|3"]
这很好 - electric-pair-mode
正确地确定存在无法匹配的双引号,因此无需插入额外的双引号。但是,在ruby-mode
中,我得到了这个:
foo = ["1", "2", "|"3"]
有没有办法在所有其他主要模式中实现相同的python-mode
行为?
修改
我刚刚意识到ruby-mode
中的行为似乎依赖于缓冲区的其他内容。如果我有一个单行foo = ["a", "b", "c"]
的缓冲区,那么一切似乎都没问题。但如果我的缓冲区看起来像:
foo = ["a", "b", "c"]
"#{ bar }"
然后会出现无关的双引号。似乎这可能是electric-pair-mode
确定是否需要保持平衡的错误。
如果光标位于非空格字符之前,是否有人知道强制electric-pair-mode
从不插入额外的双引号的方法?
答案 0 :(得分:2)
没关系,我只是想出来了 - (setq electric-pair-preserve-balance nil)
似乎解决了这个问题。
如果有人有兴趣,可以在emacs-devel
listserv上对此进行一次有趣的讨论:https://lists.gnu.org/archive/html/emacs-devel/2014-04/msg00020.html