Эта команда будет делать то, что вам нужно.
(defun annotate-todo()
"put fringe marker on TODO: lines in the curent buffer"
(interactive)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "TODO:" nil t)
(let ((overlay (make-overlay (- (point) 5) (point))))
(overlay-put overlay 'before-string (propertize "A"
'display '(left-fringe right-triangle)))))))
customize the bitmap по желанию.
Чтобы получить это применить ко всем файлам, вы можете добавить его в 'find-file-hooks
(add-hook 'find-file-hooks 'annotate-todo)
Или, если вы хотите только для определенных режимов, вы можете добавить его в этих крюки режима.
См. Fringes, The 'display' Property, Overlays, и, самое главное, before-string.
Примечание: Код был обновлен 27/02/2010, чтобы использовать наложения вместо прямого добавления свойств текста к текущему тексту.
Эта работа велика. К сожалению, я включил номер строки для отображения. Поэтому номера строк переопределяют знак TODO:. Любой способ заставить оба появиться – 2010-02-11 13:44:05
@Trey Jackson. Теперь он отлично работает. Я добавил рядом с индикатором номера строки. Большое спасибо – 2010-02-11 13:58:18
Прохладный! но ..... :) ... Было бы более полезно отображать красные полосы на краю, масштабированные по длине документа. Другими словами, если TODO появляется в 75% -ной точке документа, тогда индикатор также будет отображаться на 75% на полосе бахромы, независимо от состояния прокрутки, и будет ли TODO в то время отображаться в окне. Некоторые инструменты diff делают это. С помощью такого индикатора вы можете увидеть наличие элементов TODO, указанных в бахроме, независимо от того, видны ли они в данный момент на экране. – Cheeso