2010-02-11 2 views
19

Я хочу иметь вид indiacator на левой стороне линии, где у меня есть в исходном кодеEmacs: индикатор TODO на левой стороне

#TODO: некоторые комментарии

// TODO: некоторые комментарии

Индикатор может быть справедливой меткой, и я уже включил номера строк, отображаемые в emacs.

ответ

20

Эта команда будет делать то, что вам нужно.

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

+0

Эта работа велика. К сожалению, я включил номер строки для отображения. Поэтому номера строк переопределяют знак TODO:. Любой способ заставить оба появиться – 2010-02-11 13:44:05

+0

@Trey Jackson. Теперь он отлично работает. Я добавил рядом с индикатором номера строки. Большое спасибо – 2010-02-11 13:58:18

+0

Прохладный! но ..... :) ... Было бы более полезно отображать красные полосы на краю, масштабированные по длине документа. Другими словами, если TODO появляется в 75% -ной точке документа, тогда индикатор также будет отображаться на 75% на полосе бахромы, независимо от состояния прокрутки, и будет ли TODO в то время отображаться в окне. Некоторые инструменты diff делают это. С помощью такого индикатора вы можете увидеть наличие элементов TODO, указанных в бахроме, независимо от того, видны ли они в данный момент на экране. – Cheeso

6

Мне нравится подход, описанный в this post на emacs-fu, который добавляет TODO/FIXME/... к настройкам блокировки шрифтов в тех режимах, в которых он вам нужен. В отличие от подхода Трей, это должно выделять слова по мере ввода, тогда как его подход должен только выделять их, когда вы открываете файл (или я ошибаюсь).

В любом случае, это зависит от вас. Хороший поиск Google дает вам, вероятно, еще больше идей: http://www.google.com/search?q=emacs+highlight+todo

Update: уже ответил на ваш вопрос: Emacs, highlight all occurences of a word

Смежные вопросы