2009-10-11 16 views

risposta

7

Dal Emacs 21, c'è stato un modulo chiamato 'newcomment, che ha diversi commento stili (si veda la variabile 'comment-styles Questa impostazione si avvicina a ciò che si vuole:

(setq comment-style 'multi-line) 

(Nota: probabilmente si dovrebbe fare che .. impostazione nel 'c-mode-hook)

Tuttavia, nessuna delle impostazioni fanno i commenti che assomigliano ciò che si vuole

Il modo più semplice che ho visto per ottenere ciò che si vuole è quello di aggiungere questo hack:

(defadvice comment-region-internal (before comment-region-internal-hack-ccs activate) 
    "override 4th argument to be just spaces" 
    (when (eq major-mode 'c-mode) ; some condition here 
    (let ((arg (ad-get-arg 4))) 
     (when arg 
     (ad-set-arg 4 (make-string (length arg) ?\)))))) 

le impostazioni correnti per comment-style prefix sempre le righe di commento con "*" (se non tutta "/ *").

Se non si dispone di Emacs 21, suppongo che si possa semplicemente scaricare newcomment.el dal repository. Non so se funzioni come nelle precedenti versioni di Emacs, ma potrebbe valerne la pena, sebbene l'aggiornamento di Emacs sarebbe una soluzione migliore.

Il mio hack interrompe il 'uncomment-region. Una soluzione corretta sarebbe quella di cambiare 'comment-padright. Ciò richiederebbe un po 'più di ricerca per non rompere altre cose. La modifica precedente modifica solo il comportamento in 'c-mode (regola le condizioni a tuo piacimento).

+0

L'unica cosa che Google mi dà per "stili di commento" è http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=3371 Emacs Ch uno stile di commento non fornisce nulla o. –

+0

È definito in Emacs 23.1, stai utilizzando una versione precedente? –

+0

Sto usando Emacs fornito con Ubuntu/FreeBSD. Su Windows ho Emacs 23.1 ma sto usando FreeBSD adesso e dice 22.3.1. Ad ogni modo il tuo esempio ha funzionato, quindi grazie. –

3

più vicino che ho trovato con il built-in di commentare supporto è se si imposta comment-style-multi-line, che produrrà questo:

/* This is a comment which extends 
* over more than one line in C. */ 

Se questo non è abbastanza vicino, dare un'occhiata a newcomment.el e definire le tue funzioni di commento come appropriato. .

+0

Grazie per la risposta. –