Domanda

In GNU Emacs, c'è un buon modo per cambiare il comando commento regione in modalità C da

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

a

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

? Ho cercato

(setq comment-multi-line t)

, ma questo non aiuta. V'è una sezione di su più righe commenta nel manuale di Emacs , ma non menziona nulla.

È stato utile?

Soluzione

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

(setq comment-style 'multi-line)

(Nota: probabilmente si dovrebbe fare tale impostazione in 'c-mode-hook).

Tuttavia, nessuna delle impostazioni rendono i commenti che assomigliano ciò che si desidera.

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 funziona così com'è nelle versioni precedenti di Emacs, ma forse vale la pena un colpo, anche se l'aggiornamento di Emacs sarebbe una soluzione migliore.

Il mio mod rompe il 'uncomment-region. Una correzione adeguata sarebbe quella di cambiare 'comment-padright. Che avrebbe preso un po 'più di ricerca in modo da non rompere altre cose. Quanto sopra mod cambia solo il comportamento in 'c-mode (regolare la condizione di a proprio piacimento).

Altri suggerimenti

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

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

Se questo non è abbastanza vicino, un'occhiata a newcomment.el e definire le proprie funzioni commentando a seconda dei casi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top