我正在寻找通过点击几个键让Emacs格式化Python缓冲区的任何方法.按格式,我的意思是:
>用4个空格替换标签
>以79个字符正确包裹所有长线.这包括包装和包装.连接长字符串,包装长注释,包装列表,函数头等.
>不相关,但是当我按下回车键时,如果光标被自动选中,那就太好了.
总的来说,我想根据PEP 8格式化所有内容.
我已经找到了一个漂亮的打印机/代码美化/代码格式化程序,用于Python运行缓冲区,但无法找到一个开源的.
我的.emacs是here.
对于那些打算回答“你不需要Python的格式化程序,它的语言本质很漂亮”的人,我告诉你这不正确.在真实的软件系统中,评论应该为你自动包装,字符串将超过79个字符,标签级别为3深.如果没有关于格式化Python源代码的优点的哲学讨论,请直接帮我解决我的问题.
解决方法:
要将选项卡更改为空格并同时填充注释,可以使用以下命令:
(defun my-format-python-text ()
"untabify and wrap python comments"
(interactive)
(untabify (point-min) (point-max))
(goto-char (point-min))
(while (re-search-forward comment-start nil t)
(call-interactively 'fill-paragraph)
(forward-line 1)))
哪个你可以绑定到你选择的键,大概是这样的:
(eval-after-load "python"
'(progn
(define-key python-mode-map (kbd "RET") 'newline-and-indent)
(define-key python-mode-map (kbd "<f4>") 'my-format-python-text)))
请注意RET键的设置以自动缩进.
如果您希望所有带有空格的选项卡都只有内置命令,这是一个可能的顺序:
C-x h ;; mark-whole-buffer
M-x untabify ;; tabs->spaces
要使填充列和标签宽度符合您的要求,请添加到.emacs:
(setq fill-column 79)
(setq-default tab-width 4)
可以说,tab-width应设置为8,具体取决于其他人如何在您的环境中缩进代码(其中8是其他编辑器的默认代码).如果是这种情况,你可以在’python-mode-hook中将它设置为4.这取决于你的环境.