2

我已经在 Emacs 中安装了“Jedi”模式,但我发现elif每次我创建一个新行然后键入时它都会自动插入这个词,e l s e : Enter因为冒号字符显然启动了 Jedi 的完成逻辑,elif建议作为首要建议,而我的压力Enter显然选择它。所以我总是,每次我尝试输入一个else子句时,elif在继续之前必须先退格多余的部分。

这个问题是我独有的吗?我通过密切关注文档来激活 Jedi:

(添加钩子'python-mode-hook'绝地:设置)                                        
(setq jedi:complete-on-dot t)                                                   
(setq jedi:get-in-function-call-delay 200)                                      
(setq jedi:tooltip-method nil)                                                  

你可以在 GitHub 上找到我的全部.emacs.d/init.el版本控制:

https://github.com/brandon-rhodes/dot-emacs

我系统上当前版本的 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 :名称“系统”)
 (:版本“0.8.0-final0”:文件“/home/brandon/.v/fopnp-py3/lib/python3.4/site-packages/jedi/__init__.py”:名称“绝地”)
 (:版本“0.0.5”:文件“/home/brandon/.v/fopnp-py3/lib/python3.4/site-packages/epc/__init__.py”:名称“epc”)
 (:版本“0.0.3”:文件“/home/brandon/.v/fopnp-py3/lib/python3.4/site-packages/sexpdata.py”:名称“sexpdata”))

我注意到该:角色已绑定到 Emacs 函数python-indent-electric-colon,但我不确定如何确定该函数是否以某种方式无意义地触发 Jedi 的完成逻辑。

4

1 回答 1

1

I think this is a bug with the python-mode: tab-always-indent value is true but the behavior is the same that it was before.

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

My solution:

(add-hook 'python-mode-hook
    (lambda ()
        (setq-local electric-indent-chars (remq ?: electric-indent-chars))
    )
)
于 2015-06-18T14:05:06.187 回答