Emacs Kommentar-Bereich in C-Modus
Frage
In GNU Emacs, ist es eine gute Möglichkeit, den Kommentar-Bereich Befehl im Modus C von
zu ändern/* This is a comment which extends */
/* over more than one line in C. */
/* This is a comment which extends
over more than one line in C. */
? Ich habe versucht,
(setq comment-multi-line t)
, aber das hilft nicht. Es gibt einen Abschnitt auf mehrzeiligen Kommentare in dem Emacs Handbuch , aber es hat nichts erwähnt.
Lösung
Seit 21 Emacs, wird es ein Modul mit dem Namen 'newcomment
, 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 diese Einstellung in 'c-mode-hook
machen)
Allerdings keine der Einstellungen machen die Kommentare aussehen wie das, 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
immer Präfix der Kommentarzeilen mit „*“ (wenn nicht dem ganzen „/ *“).
Wenn Sie nicht Emacs 21, ich denke, man könnte einfach herunterladen newcomment.el
aus dem Repository. Ich weiß nicht, ob es in früheren Versionen von Emacs als Service-Leistung funktioniert, aber es könnte einen Versuch wert sein, obwohl Upgrade Emacs wäre eine bessere Lösung sein.
Meine Hack bricht die 'uncomment-region
. Eine passende Lösung würde zu ändern 'comment-padright
sein. Das würde ein wenig mehr Forschung, um nicht andere Dinge zu brechen. Der obige Hack ändert sich nur das Verhalten in 'c-mode
(die Bedingung nach Ihren Wünschen anpassen).
Andere Tipps
Closest ich mit dem eingebauten in Kommentierung Unterstützung finden könnte, ist, wenn Sie Satz comment-style
zu multi-line
, 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 Sie Ihre eigene Kommentierung Funktionen als angemessen.