为什么Emacs Jedi在输入“else:”后总是插入“elif”?

时间:2014-05-08 19:20:10

标签: python emacs emacs-jedi

我在Emacs中安装了“Jedi”模式,但每次创建新行时都会自动插入单词elif,然后输入 e l < / kbd> s e 输入因为结肠字符显然用{{1}开始了Jedi的完成逻辑建议作为最重要的建议,我按 Enter 显然选择了它。所以我总是在每次尝试输入elif子句时,在继续之前必须对无关的else进行退格。

这个问题对我来说是独一无二的吗?我通过密切关注文档来激活Jedi:

(add-hook 'python-mode-hook 'jedi:setup)                                        
(setq jedi:complete-on-dot t)                                                   
(setq jedi:get-in-function-call-delay 200)                                      
(setq jedi:tooltip-method nil)                                                  

您可以在GitHub上找到我的整个elif版本控制:

.emacs.d/init.el

我系统上当前版本的Jedi及其相关工具是:

(:emacs-version "24.3.1" :jedi-version "0.2.0alpha2")
((:version "3.4.0 |Continuum Analytics, Inc.| (default, Mar 17 2014, 16:13:08) \n[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)]" :file nil :name "sys")
 (:version "0.8.0-final0" :file "/home/brandon/.v/fopnp-py3/lib/python3.4/site-packages/jedi/__init__.py" :name "jedi")
 (:version "0.0.5" :file "/home/brandon/.v/fopnp-py3/lib/python3.4/site-packages/epc/__init__.py" :name "epc")
 (:version "0.0.3" :file "/home/brandon/.v/fopnp-py3/lib/python3.4/site-packages/sexpdata.py" :name "sexpdata"))

我注意到https://github.com/brandon-rhodes/dot-emacs 字符绑定到Emacs函数:,但我不确定如何确定该函数是否以某种方式设置Jedi的完成逻辑而没有意义。

1 个答案:

答案 0 :(得分:1)

我认为这是python-mode的一个错误:tab-always-indent值为true但行为与以前相同。

https://www.gnu.org/software/emacs/manual/html_node/emacs/Indent-Convenience.html

我的解决方案:

(add-hook 'python-mode-hook
    (lambda ()
        (setq-local electric-indent-chars (remq ?: electric-indent-chars))
    )
)