Подтвердить что ты не робот

Показывать конечные пробелы на emacs только на непустых строках

Сейчас я использую:

(setq show-trailing-whitespace t)

В моем .emacs, чтобы показать конечные пробелы для моего режима CC. Я не могу понять, как это не показывать пробельный шрифт для пробельных строк.

Пустые строки, отделяющие отступы, иногда отступаются на уровне кода, а иногда вообще не отступаются, и я не хочу привлекать внимание к строке, которую я не хочу менять.

Я хотел бы придерживаться встроенных модулей emacs, но я готов использовать whitespace.el, но это не ясно, как чтобы настроить его для этого.

4b9b3361

Ответ 1

Поскольку вы хотите использовать встроенные модули, я бы посоветовал использовать ссылку whitespace.el, указанную вами - поскольку она поставляется с Emacs 23. Этот ответ работает при использовании этого пробела.

Пока у вас есть 'trailing в вашей переменной 'whitespace-style (которая по умолчанию), следующее изменение в регулярном выражении для того, что указывает пробел "trailing", должно дать вам то, что вы хотите:

(setq whitespace-trailing-regexp
  "\\b\\(\\(\t\\| \\|\xA0\\|\x8A0\\|\x920\\|\xE20\\|\xF20\\)+\\)$")

Примечание. Это только значение по умолчанию, с добавлением \b, указывающее, что пробел должен следовать за словом.

Ответ 2

С

"\\b.*\\(\\(\t\\| \\|\xA0\\|\x8A0\\|\x920\\|\xE20\\|\xF20\\)+\\)$"

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

Edit:
Использование

"\\b.*?\\(\\(\t\\| \\|\xA0\\|\x8A0\\|\x920\\|\xE20\\|\xF20\\)+\\)$")

выделяет все конечные пробелы и, таким образом, устраняет недостаток, упомянутый в комментарии # 1.