递归识别Emacs中超过80个字符的行

时间:2010-10-28 15:35:19

标签: emacs coding-style

it may be a good idea to have lines that are not wider than 80 characters in code files开始,使用Emacs在现有项目中递归识别这些行的最有效方法是什么?

更新

使用Trey的建议,我目前正在使用以下代码:

(defun find-long-lines (base-dir)
  "Recursively look for lines longer than 80 characters files"
  (interactive "DPath:")
  (grep-compute-defaults)
  (rgrep "^................................................................................." "*" base-dir))

空白模式结合使用效果很好。

2 个答案:

答案 0 :(得分:4)

我无法满足EMACS特定的解决方案,但您可以稍微更改命令以包含文件名(并输入更少)。

rgrep "^.\{81\}" . -n (include line numbers)


rgrep "^.\{81\}" . -c (summary view per file)

交互式rgrep提示不需要引号。

rgrep RET ^。{81} RET文件类型RET路径

答案 1 :(得分:3)

您可以使用igrep-find并使用匹配81(+)字符的正则表达式,如下所示:

M-x igrep-find ^.................................................................................. RET /path/to/area/to/search/* RET

然后你在编译模式下得到一个缓冲区,让你轻松跳转到每个违规行(通过鼠标点击,或 Cx` Mx next-error )。

或者,您可以使用内置的M-x grep-find并使用相同的正则表达式。

要输入81 .,请输入 C-u 81。

而且,如果你想让这一切都包含在一个命令中(提示你输入文件的路径),你可以使用它:

(defun find-lines-longer-than-80 (files)
  "Recursively look for lines longer than 80 characters files"
  (interactive (list (igrep-read-files)))
  (igrep igrep-program "^................................................................................." files igrep-options))

Emacs Wiki上提供了Find Long Lines的其他一些提示,包括在您访问文件时突出显示长度超过80个字符的行的几个选项。