Как выделить части кода, длина которых превышает 80 символов?

В Emacs я хотел бы выделить части длинных строк, длина которых превышает 80 символов.

Пакет highlight-80+ отлично подходит для этого. Но как я могу автоматически включить его при загрузке исходного файла C++?

Я попытался добавить highlight-80+ в режим C++, но это не сработало:

(require 'highlight-80+)
(defun my-c++-mode-common-hook ()
  (highlight-80+-mode 1))
(add-hook 'c++-mode-common-hook 'my-c++-mode-common-hook)

Когда я загружаю файл .cc, он переходит в режим C++, но highlight-80+ не включен, поэтому длинные строки не помечаются.


person Frank    schedule 15.03.2012    source источник
comment
Фрэнк, я думаю, ты почти у цели. В последней строке вашего кода это не C++-mode-common-hook, а C++-mode-hook или c-mode-common-hook   -  person kindahero    schedule 16.03.2012


Ответы (3)


Обратите внимание, что в вики Highlight80Plus говорится, что он встроен в emacs, начиная с 23. Я считаю, что это ссылаясь на режим пробела; он делает это и встроен в emacs.

В emacs-starter-kit есть функция, которая уже делает что-то подобное, но вы может легко повторить его,

(defun esk-turn-on-whitespace ()
  (whitespace-mode t))

(add-hook 'prog-mode-hook 'esk-turn-on-whitespace)
person milkypostman    schedule 16.03.2012

См. whitespace-mode, он делает такую ​​подсветку и многое другое:

http://www.emacswiki.org/emacs/WhiteSpace

person Eli Barzilay    schedule 16.03.2012

Можете ли вы попробовать это:

(autoload 'highlight-80+)
(add-to-list 'auto-mode-alist '("\\.cpp$" . highlight-80+-mode))
person moul    schedule 15.03.2012
comment
Спасибо. Но тогда это уже не режим C++, а только режим highlight-80+, как основной режим. - person Frank; 16.03.2012
comment
Извините, вы можете попробовать (add-hook... после (eval-after-load "c++-mode" ? - person moul; 16.03.2012
comment
так это будет выглядеть: (eval-after-load "c++-mode" (add-hook 'c++-mode-common-hook 'my-c++-mode-common-hook)) - person moul; 16.03.2012
comment
eval-after-load здесь не нужен, потому что вы можете добавить к символу любой хук, независимо от того, существует ли он. И: если вы используете eval-after-load, вы должны указать форму для оценки, иначе она будет оценена сразу, таким образом, (eval-after-load "c++-mode" '(add-hook 'c++-mode-common-hook 'my-c++-mode-common-hook)) - person Michael Markert; 16.03.2012