2009-10-11 7 views

Antwort

7

Seit 21 Emacs gibt es ein Modul 'newcomment genannt worden, die unterschiedliche Kommentarstile hat (siehe die Variable 'comment-styles Diese Einstellung wird nah an, was Sie wollen:

(setq comment-style 'multi-line) 

(Hinweis: Sie sollten wahrscheinlich machen, dass .. Einstellung in 'c-mode-hook)

jedoch keine der Einstellungen machen die Kommentare aussehen, was Sie wollen

der einfachste Weg, ich sah zu bekommen, was Sie wollen, ist diesen Hack hinzuzufügen:

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

Die aktuellen Einstellungen für comment-style Präfix immer die Kommentarzeilen mit „*“ (wenn nicht dem ganzen „/ *“). Wenn Sie Emacs 21 nicht haben, können Sie einfach newcomment.el aus dem Repository herunterladen. Ich weiß nicht, ob es in früheren Versionen von Emacs funktioniert, aber es könnte einen Versuch wert sein, obwohl die Aktualisierung von Emacs eine bessere Lösung wäre.

Mein Hack bricht die 'uncomment-region. Eine richtige Lösung wäre, 'comment-padright zu ändern. Das würde ein wenig mehr Forschung erfordern, um andere Dinge nicht zu brechen. Der obige Hack ändert nur das Verhalten in 'c-mode (den Zustand nach Ihren Wünschen anpassen).

+0

Das einzige, was mir auf Google nach „Kommentar-Arten“ gibt, ist http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=3371 Emacs Ch ein Kommentar-Arten geben nichts entweder. –

+0

Es ist in Emacs 23.1 definiert, verwenden Sie eine ältere Version? –

+0

Ich benutze die Emacs, die mit Ubuntu/FreeBSD geliefert wurden. Unter Windows habe ich Emacs 23.1, aber ich verwende gerade FreeBSD und es steht 22.3.1. Wie auch immer, dein Beispiel hat funktioniert, also danke. –

3

Closest ich mit der integrierten Unterstützung Kommentierung finden könnte, ist, wenn Sie comment-style-multi-line gesetzt, die diese produzieren:

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

Wenn das nicht nahe genug ist, werfen Sie einen Blick auf newcomment.el und definieren Ihre eigenen Kommentarfunktionen entsprechend. .

+0

Danke für Ihre Antwort. –