我在 Emacs 上python-mode
启用了以下代码:
def func(a):
if a:
return True
return False
当我在之间移动光标时return False
,def func(
代码会自动缩进,打破它:
def func(a):
if a:
return True
return False #Oops!
我开始知道发生这种情况是因为electric-indent-mode
, 一个次要的全局模式。但是,我试图将其关闭,但问题仍然存在。
我使用的 elisp 代码是这样的:
(defun disable-electric-indent ()
(set (make-local-variable 'electric-indent-functions)
(list (lambda (arg) 'no-indent))))
这就是我的python-mode-hook
样子:
(add-hook 'python-mode-hook
(lambda ()
(flyspell-prog-mode)
(auto-complete-mode)
(nlinum-mode)
(toggle-truncate-lines t)
(setq autopair-handle-action-fns
(list 'autopair-default-handle-action 'autopair-python-triple-quote-action))
(centered-cursor-mode)
(auto-indent-mode)
(autopair-mode)
(column-marker-1 80)
(flycheck-mode)
(setq ac-auto-start 2)
(disable-electric-indent) ;; esto deberia hacer que emacs deje de romper las pelotas con el codigo en python
(jedi:setup)))
如果我关闭auto-indent-mode
此行为会停止(但是,我没有自动缩进,gol)。
我的 emacs 版本:GNU Emacs 24.3.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.8.1) of 2013-04-29 on eric
编辑:根据 melpa python
,我在其版本中使用包(内置 Python 对 Emacs 的飞行马戏团支持,你知道) 。0.24.2
也许我应该删除它并python-mode
在其版本 6.0.10 中使用包?