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

时间:2011-06-14 13:44:35

标签: emacs

我知道有一些解决办法让emacs显示80行专栏,但我不希望出现这种视觉干扰。如果超过80个字符,我只想突出显示一行。

8 个答案:

答案 0 :(得分:49)

另一个简单的选择是在表达式highlight-lines-matching-regexp上运行.\{81\}

每行81个或更多字符的行将以您选择的颜色突出显示。

答案 1 :(得分:32)

请参阅whitespace-mode - 它现在是Emacs的一部分,除了突出显示长行之外,还可以做更多的事情。 (但当然可以用来做那个。)

答案 2 :(得分:6)

这是我Emacs Dev Kit的配置:

;; whitespace-mode
;; free of trailing whitespace and to use 80-column width, standard indentation
(setq whitespace-style '(trailing lines space-before-tab
                                  indentation space-after-tab)
      whitespace-line-column 80)

基本上你只需要最后一点,但我发现其他设置非常有用(我讨厌标签和尾随空格)。

答案 3 :(得分:5)

试试highlight-80+.el。您可以从here获取它。

要安装它,只需将以下内容添加到.emacs

(add-to-list 'load-path "/path/to/highlight-80+")
(require 'highlight-80+)

然后您可以通过以下方式启用它:

M-x highlight-80+-mode

答案 4 :(得分:2)

下面是一些示例代码,它将使用当前“警告”面突出显示超出第80列的文本,并使用一行来启用C ++模式。

;; Turn on warn highlighting for characters outside of the 'width' char limit
(defun font-lock-width-keyword (width)
  "Return a font-lock style keyword for a string beyond width WIDTH
   that uses 'font-lock-warning-face'."
  `((,(format "^%s\\(.+\\)" (make-string width ?.))
     (1 font-lock-warning-face t))))

(font-lock-add-keywords 'c++-mode (font-lock-width-keyword 80))

它没有突出整行,但我发现它有相当的帮助。

答案 5 :(得分:2)

这不完全是您想要的,但我遇到了类似的问题并找到了这个问题/答案。我想要的只是在需要时插入视觉指南。这就是我最终的结果:

(defun insert-80 ()
    "Insert an 80-character-wide guide at beginning of line."
    (interactive)
    (beginning-of-line)
    (insert "0         1         2         3         4         5         6         7         |")
    (newline)
    (insert "01234567890123456789012345678901234567890123456789012345678901234567890123456789|")
    (newline)
)

超级简单,但有时非常有效。

答案 6 :(得分:2)

emacs-goodies-el中有一个内置软件包(建议在终端中安装)名为highlight-beyond-fill-column.el,将其添加到.emacsinit.el

(setq-default fill-column 80)
(add-hook 'prog-mode-hook 'highlight-beyond-fill-column)
(custom-set-faces '(highlight-beyond-fill-column-face
                    ((t (:foreground "red" )))))

代码段中80后的fill-column以外的文字将以red的颜色突出显示。您可以根据需要设置面部。

答案 7 :(得分:1)

这与此处的其他答案类似,具有使用fill-column的优点,并且在模式切换后运行。因此,每种模式都可以拥有自己的线宽,并通过突出显示得到适当的尊重。

(add-hook 'after-change-major-mode-hook
  (lambda ()
    (when (derived-mode-p 'prog-mode)
      (let ((column-re (format "^[^\n]\\{%d\\}\\(.*\\)$" fill-column)))
        (font-lock-add-keywords nil
          `((,column-re 1 font-lock-warning-face prepend)))))))

如果您希望为文本文件启用此功能,则可能不会删除prog-mode检查。