Emacs: у индикатора TODO на левой стороне есть странный побочный эффект - удаление символов - PullRequest
5 голосов
/ 27 февраля 2010

Я только что прочитал Emacs: индикатор TODO слева и попробовал его. Это кажется интригующим. Появляются маленькие индикаторные треугольники, но я получаю странный побочный эффект: сам текст изменяется. Персонажи удаляются.

До:

alt text

После:

alt text

Строка режима действительно указывает, что буфер был изменен после выполнения annotate-todo. Чем это объясняется?

(я использую emacs 22.2.1 в Windows)

1 Ответ

6 голосов
/ 27 февраля 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 (format "A")
                                                        'display '(left-fringe right-triangle)))))))

В первом решении использовалось текстовое свойство 'display, которое изменяет способ отображения указанного текста, в этом случае было заменено на треугольник в левой части . Мне нужно было использовать оверлей 'before-string . Что не меняет отображаемую строку.

Еще одно преимущество - вырезанный / вставленный код, аннотированный этим, не содержит разметки.

Я обновил код в исходном вопросе, чтобы отразить и это изменение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...