Emacs: индикатор TODO слева - PullRequest
19 голосов
/ 11 февраля 2010

Я хочу иметь указатель в левой части строки, где бы я ни находился в исходном коде

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

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

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

Ответы [ 2 ]

20 голосов
/ 11 февраля 2010

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

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

Вы можете настроить растровое изображение по желанию.

Чтобы применить это ко всем файлам, вы можете добавить его к 'find-file-hooks

(add-hook 'find-file-hooks 'annotate-todo)

Или, если вы хотите использовать его только для определенных режимов, вы можете добавить его к этим режимам.

См. Fringes , Свойство 'display' , Наложения и, что наиболее важно, свойство before-string .

Примечание: Код был обновлен 27.02.2010 для использования наложений вместо непосредственного добавления свойств текста к текущему тексту.

6 голосов
/ 11 февраля 2010

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

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

Обновление: На ваш вопрос уже дан ответ: Emacs, выделите все вхождения слова

...