2010-02-11 4 views
19

voglio avere sorta di indiacator sul lato sinistro della linea ovunque io ho nel codice sorgenteEmacs: indicatore TODO sul lato sinistro

#TODO: qualche commento

// TODO: un po ' commenti

L'indicatore potrebbe essere un contrassegno giusto e ho già abilitato i numeri di riga visualizzati su emacs.

risposta

20

Questo comando farà qualcosa di simile.

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

È possibile customize the bitmap come desiderato.

Per ottenere questo da applicare a tutti i file, è possibile aggiungere alla 'find-file-hooks

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

Oppure, se si desidera solo per alcune modalità, è possibile aggiungere a quei ganci modalità.

Vedere Fringes, The 'display' Property, Overlays e, soprattutto, la proprietà before-string.

Nota: Il codice è stato aggiornato il 27/02/2010 per utilizzare gli overlay anziché aggiungere direttamente le proprietà del testo al testo corrente.

+0

Questo lavoro fantastico. sfortunatamente ho abilitato la visualizzazione del numero di linea. Quindi i numeri delle linee hanno la precedenza su TODO: mark. Qualsiasi modo per far apparire entrambi sia –

+0

@ Jackson Jackson. Funziona alla grande ora. Ho aggiunto accanto all'indicatore del numero di riga. Grazie mille –

+0

Fantastico! ma ..... :) ... Ciò che sarebbe più utile è visualizzare barre rosse ai margini, ridimensionate in base alla lunghezza del documento. In altre parole, se TODO appare al 75% del punto del documento, l'indicatore apparirà anche al 75% sulla barra frange, indipendentemente dallo stato di scorrimento e se TODO fosse visibile nella finestra in quel momento. Alcuni strumenti diff fanno questo. Con questo tipo di indicatore, è possibile vedere la presenza di elementi TODO indicati nella frangia, indipendentemente dal fatto che siano visibili attualmente sullo schermo. – Cheeso

6

Mi piace l'approccio descritto in this post su emacs-fu, che aggiunge TODO/FIXME/... alle impostazioni di blocco font delle modalità in cui è necessario. A differenza dell'approccio di Trey, questo dovrebbe evidenziare le parole durante la digitazione, mentre il suo approccio dovrebbe evidenziarle solo quando apri un file (o lo sbaglio).

Ad ogni modo è a voi. Una buona ricerca su Google vi dà probabilmente anche più idee: http://www.google.com/search?q=emacs+highlight+todo

Aggiornamento: La tua domanda è già stata data risposta: Emacs, highlight all occurences of a word