2010-02-27 12 views
5

Acabo de leer Emacs :TODO indicator at left side y lo probé. Parece intrigante Aparecen los pequeños triángulos indicadores, pero obtengo un extraño efecto secundario: el texto en sí mismo está siendo alterado. Los personajes están siendo eliminados.Emacs: el indicador TODO en el margen izquierdo tiene un extraño efecto secundario: borrar caracteres

Antes:

alt text http://i50.tinypic.com/25ge83s.jpg

Después de:

alt text http://i46.tinypic.com/2qn4e94.jpg

La línea modo sí indica que la memoria intermedia se ha modificado después de ejecutar annotate-todo. ¿Qué explica esto?

(estoy usando emacs 22.2.1 en Windows)

+0

En realidad, no se eliminaron, solo se muestran de manera diferente. Lo cual es casi tan asqueroso. No puedo creer que no haya notado ese efecto secundario la primera vez que hice la solución. Creo que el nuevo funciona como es de esperar. –

Respuesta

5

Ahhh ... veo el error de mis anteriores. Aquí hay una nueva versión.

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

La primera solución utiliza una propiedad 'display texto, que cambia cómo se muestra el texto especificado, en este caso, fue reemplazado por el triángulo en el left fringe. Lo que tenía que hacer era usar un 'before-stringoverlay en su lugar. Lo cual no cambia la cadena que se muestra.

Otra ventaja, el corte/pegado del código anotado por esto no lleva el marcado.

He actualizado el código en la pregunta original para reflejar este cambio también.

+0

esto funciona perfectamente! Gracias Trey – Cheeso

Cuestiones relacionadas