在Emacs中编辑Python
我看过python-mode和python.el,现在我在用python-mode.el。同时我也在用rope和ropemacs。我希望能找到一些对我有帮助的文档,或者其他的elisp包之类的东西。
我现在遇到的问题是,给我的代码缩进不一致。有的地方是两个空格,有的地方是四个空格。我想把这个整理一下,但不知道为什么,当我在emacs里选择“修复缩进”时,它基本上只是对每一行按了tab键,这样反而把代码搞乱了。我想保持相对缩进不变,但统一成4个空格。有没有什么简单的方法可以做到这一点?
我想我可以找到每个缩进不好的地方,把它们选中,然后用查询替换把2个空格换成4个空格。但这太依赖我的细心了,我得注意到哪里需要这样做。而且,代码量也挺大的。
有人告诉我说“自行车修理工”可以解决这个问题,但那个工具已经好几年没更新了……还有其他建议吗?
谢谢。
3 个回答
(custom-set-variables
...
'(indent-tabs-mode nil)
'(tab-stop-list (quote (4 8 16 24 32 40 48 56 64 72 80 88 96 104 112 120)))
'(tab-width 4))
显然,这些是一些全局设置,适用于那些会遵循这些设置的模式(比如python-mode就会遵循)。我没有对python-mode的缩进设置做任何修改。
把py-smart-indentation设置为`t'。
现在的python-mode.el应该可以做到这一点。
http://launchpad.net/python-mode
如果遇到问题,请在那个地方反馈。
假设你已经按照Sven Marnach的建议整理过代码了,我猜现在你只需要让python-mode.el使用你喜欢的缩进风格就可以了?
你可以看看几个变量:py-indent-offset
、py-smart-indentation
(也许还有py-continuation-offset
和py-honor-comment-indentation
)。还有一个普通的indent-tabs-mode
。
你可以通过自定义这些设置来调整它们(按M-x然后输入customize-group
,接着按RET再输入python
,最后再按RET),或者你也可以在python-mode-hook
里添加一个自定义函数。例如:
(add-hook 'python-mode-hook 'my-python-mode-hook)
(defun my-python-mode-hook ()
(setq indent-tabs-mode nil
py-smart-indentation nil
py-indent-offset 4))