Как сделать так, чтобы emacs выделял строки, которые превышают 80 символов? - PullRequest
42 голосов
/ 14 июня 2011

Я знаю, что есть способы сделать так, чтобы emacs отображал столбец из 80 строк, но я не хочу такого визуального нарушения.Я просто хотел бы выделить строку, если она содержит более 80 символов.

Ответы [ 8 ]

49 голосов
/ 14 июня 2011

Другой простой вариант - запустить highlight-lines-matching-regexp в выражении .\{81\}.

Каждая строка с 81 символом или более будет выделена выбранным вами цветом.

32 голосов
/ 14 июня 2011

См. whitespace-mode - теперь это часть Emacs, и может делать гораздо больше, чем просто выделять только длинные строки (Но, конечно, можно использовать только это.)

6 голосов
/ 15 июня 2011

Вот мой конфиг из 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)

В принципе вам нужен только последний бит, но я нахожу другие настройки весьма полезными (я ненавижу вкладки и конечные пробелы).

5 голосов
/ 17 июня 2011

Попробуйте highlight-80+.el. Вы можете приобрести его у здесь .

Чтобы установить его, просто добавьте в ваш .emacs следующее:

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

Затем вы можете включить его с помощью:

М-х highlight-80+-mode

2 голосов
/ 24 декабря 2014

В emacs-goodies-el есть встроенный пакет (рекомендуется установить его в терминале), который называется highlight-beyond-fill-column.el , добавьте его в .emacs или init.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" )))))

Текст после fill-column, который в фрагменте равен 80, будет выделен цветом red.Вы можете установить лицо, как вам нравится.

2 голосов
/ 08 июля 2013

Это не совсем то, что вы хотели, но у меня была похожая проблема, и я нашел этот вопрос / ответ.Все, что я хотел, это вставить визуальное руководство, когда мне это было нужно.Вот что я наконец-то получил:

(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)
)

Супер просто, но иногда очень эффективно.

2 голосов
/ 14 июня 2011

Вот пример кода, который будет выделять текст, который находится за пределами столбца 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))

Он не выделяетцелая строка, но я считаю, что это достаточно полезно.

1 голос
/ 11 марта 2018

Это похоже на другие ответы здесь, с преимуществом использования 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, если вы хотите, чтобы эта функция была включена и для текстовых файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...