在emacs中突出显示行*少于80个字符

时间:2014-08-25 18:44:25

标签: emacs

我遇到了突出显示大于80个字符的常见问题的相反问题。我需要突出显示少于80个字符的行。我用Google搜索但找不到任何解决方案。我没有运行命令并获得少于80个字符的hte行号转储。投入赞赏 感谢

2 个答案:

答案 0 :(得分:3)

您可以将highlight-regexp用于此

M-x highlight-regexp enter ^.\\{1,80\\}$ enter enter

然后使用unhighlight-regexp撤消它。您输入的那个将在历史中。

你可以将它包装在你自己的次要模式中,如下所示:

(define-minor-mode highlight-less-than-80-mode
  "Minor mode for highlighting lines less than 80 characters."
  :init-value nil
  :global nil
  :lighter "<80"
  (if highlight-less-than-80-mode
      (highlight-regexp "^.\\{1,80\\}$" 'error)
    (unhighlight-regexp "^.\\{1,80\\}$")))

另外

我写了column-enforce-mode来突出显示超过80列的行,并且我只能将一个unless更改为if和一个(point),从而使其工作方式相反到(point-at-bol)。如果您愿意,也可以从melpa安装column-enforce-mode并自行进行修改。从2014年8月25日开始,需要在第200行和第202行进行两项更改。与column-enforce-mode和使用highlight regexp的区别在于它测量的是列,而不是字符,所以这可能是也可能不是你的正在寻找。

答案 1 :(得分:2)

此函数将转储(作为列表)短于80个字符的行的行号:

(defun id-short-lines (&optional nchars)
  "Returns a list of lines less than NCHARS characters
long (default: 80)."
  (let (lines)
    (save-excursion
      (goto-char (point-min))
      (while (not (eobp))
        (when (< (- (point-at-eol) (point-at-bol)) 
                 (or nchars 80))
          (push (line-number-at-pos) lines))
        (forward-line 1))
      (nreverse lines))))

如果这是一次性问题(或至少是一个罕见问题),那么线路转储可能很好;否则,您可能需要根据评论建议调查fill-column-indicator和面孔。