【问题标题】:Enforce 79 characters per line in emacs?在emacs中每行强制79个字符?
【发布时间】:2015-05-22 14:11:33
【问题描述】:

我想知道在 Python 代码中每行 79 个字符是否可以在 emacs 中自动智能地完成? 智能,我的意思是它可以在适当的地方破坏一长行代码。

如果无法自动完成,是否可以以某种方式半自动完成,或者比完全手动更方便(例如手动计算每行的字符数)?

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

谢谢。

【问题讨论】:

  • "我认为每行 79 个字符是一个很好的做法。如果我错了,请随时纠正我。"将行保持在最多 79 个字符是 the official style recommendation for Python
  • 你是怎么做到的? @克里斯?
  • 我没有为您的主要问题提供解决方案;我只是确认你有正确的想法来包装 79 个字符。 choroba 的评论是一种有效的选择。它不是超级智能,但它应该可以完成工作。
  • 另一种解决方案是让所有窗口的宽度为 80 个字符,然后最右边一列中的任何内容(光标除外)都不应该存在。 (add-to-list 'default-frame-alist '(width . 80))
  • 自动填充模式不会这样做。请在回答之前阅读文档或尝试。填充模式将重新分配 '/n' 到该行中任何先前的空白(如果存在)不超过 80,它不会自动添加新的 '\n' 这就是这个问题的意义。

标签: python emacs coding-style


【解决方案1】:

是的,这是一种很好的做法,有很多解决方案,但它们不是“自动的”,大多数依赖于在您超过限制时简单地向您显示,而不是为您进行更改。

一个“自动”解决方案是内置的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)))))

【讨论】:

  • 自动填充模式不会这样做。请在回答之前阅读文档或尝试。填充模式将重新分配 '/n' 到该行中任何先前的空白(如果存在)不超过 80,它不会自动添加新的 '\n' 这就是这个问题的意义
猜你喜欢
  • 2018-09-19
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 2018-07-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-29
相关资源
最近更新 更多