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

Tim*_*Tim 3 python emacs coding-style

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

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

顺便说一句,我假设每行79个字符是一个很好的做法.如果我错了,请随时纠正我.

谢谢.

Jor*_*ndo 6

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

一个"自动"解决方案是内置的auto-fill-mode.

进一步的想法/讨论:

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

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

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

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

column-enforce-mode(我是这个的作者)可以工作,whitespace-mode除了它只会突出显示一行超过80列的文本,而不是整行.

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

如何让emacs突出显示超过80个字符的行?

emacs突出显示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)))))
Run Code Online (Sandbox Code Playgroud)