在emacs中每行强制使用79个字符?

时间:2015-03-19 12:46:47

标签: python emacs coding-style

我想知道在Python代码中每行包含79个字符是否可以在emacs中自动且智能地完成? 通过智能化,我的意思是它可以在适当的位置打破一长串代码。

如果不能自动完成,可以半自动地完成,或者比完全手动更方便(例如手动计算每行字符数)?

顺便说一句,我假设每行79个字符是一个好习惯。如果我错了,请随时纠正我。

感谢。

1 个答案:

答案 0 :(得分:5)

是的,这是一个很好的做法,那里有很多解决方案,但它们不是"自动",大多数依靠只是在你超过限制时向你展示,而不是制作为你而改变。

One"自动"解决方案是内置的auto-fill-mode

进一步的想法/讨论:

阅读Emacs Wiki上的这篇文章:EightyColumnRule

它提供了几种非自动方式来帮助您保持线条少于80个字符。

内置于 whitespace-mode的emacs可以突出显示超过一定长度的所有行。

column-marker可用于在特定列的缓冲区中绘制一条线。

column-enforce-mode(我是此作者)可以像whitespace-mode一样工作,但它只会突出显示一行中超过80列的文本,而不是整行。

有很多关于这个主题的讨论要找到并找到更多解决方案:

How can I make emacs highlight lines that go over 80 chars?

Have emacs highlight characters over 80?

http://emacsredux.com/blog/2013/05/31/highlight-lines-that-exceed-a-certain-length-limit/

这是我在init中设置的自定义解决方案,它设置当前缓冲区的边距,使缓冲区中的可编辑空间只有80列宽。当你的文字进入下一行时,你知道你何时超过了限制。

(defun toggle-80-editting-columns-balanced (&optional columns)
  "Set both window margins so the edittable space is only 80 columns."
  (interactive "p")
  (let ((margins (window-margins)))
    (if (or (car margins) (cdr margins))
        (set-window-margins nil 0 0)
      (let* ((change (max (- (window-width) (or columns 80)) 0))
             (left (/ change 2))
             (right (- change left)))
        (set-window-margins nil left right)))))