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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top