4 Stimmen

M-q in Emacs zu verwenden, ohne meinen gesamten Code in Kommentare zu verwandeln

Angenommen, Sie schreiben einen Code wie diesen (im Ruby-Modus, aber ich habe gesehen, dass dies auch in anderen Modi passiert):

# This is a comment.
def foo
    puts "foo!"
end

Wenn Sie den Punkt auf die erste Zeile setzen und M-q drücken, erhalten Sie folgendes Ergebnis:

# This is a comment. def foo puts "foo!" end

Wie kann ich das vermeiden? Ich verwende die Version 21.3.

Klarstellung: Dies geschieht nicht, wenn ich eine Leerzeile zwischen dem Kommentar und dem Code einfüge. Als Workaround, wenn ich meine Kommentare auffüllen möchte, muss ich einen lästigen dreistufigen Prozess durchlaufen:

  1. Ich füge eine Leerzeile vor und nach dem Kommentarabsatz
  2. M-q
  3. die leeren Zeilen löschen

Es wäre viel schöner, wenn M-q das Auffüllen von Kommentarabsätzen ohne das Hinzufügen und Löschen von Leerzeilen erledigen würde. Emacs weiß bereits, welcher Text ein Kommentar ist, also muss es einen Weg geben, dies zu tun.

5voto

Trey Jackson Punkte 72000

filladapt.el erfüllt den Zweck. Das mit der neuesten Version von RubyMode .

Die Verwendung dieser beiden Pakete löst das M-q Problem, das Sie sehen. (Unter Verwendung von GNU Emacs 22.1)

Wenn man sich den Code für ruby-mode anschaut, sieht es so aus, als ob er die Variablen zur Steuerung der Absatzfüllung wie folgt angepasst hat:

(make-local-variable 'paragraph-start)
(setq paragraph-start (concat "$\\|" page-delimiter))
(make-local-variable 'paragraph-separate)
(setq paragraph-separate paragraph-start)
(make-local-variable 'paragraph-ignore-fill-prefix)
(setq paragraph-ignore-fill-prefix t)

Die kann zu einem benutzerdefinierten Haken für Ihre aktuelle Ruby hinzugefügt werden, oder was auch immer großen Modus, wo Sie wollen, füllen Verhalten zu handeln, wie Sie beschrieben - vorausgesetzt, Sie verwenden filladapt.el.

1voto

Trey Jackson Punkte 72000

M-q ist an fill-paragraph gebunden und versucht, den Text auf intelligente Weise in einen Absatz zu verwandeln. Es verfügt über Funktionen, die versuchen, das "fill-prefix" zu erraten, was bei Ihnen der Fall zu sein scheint.

Sie können M-q abbinden, wenn es Ihnen nicht gefällt.

(global-unset-key (kbd "M-q"))

1voto

ashawley Punkte 3966

Das Ausfüllen von Kommentaren funktioniert in sh-mode .

Vielleicht sollten Sie einen Fehler bei der ruby-mode Instandhalter?

0voto

Brian Campbell Punkte 304982

Sie müssen sich im Ruby-Modus befinden, damit Emacs versteht, dass " # This is a comment. " ist ein Kommentar. Wenn Sie sich im grundlegenden Modus befinden, wird alles wie ein Textabsatz behandelt, was dazu führt, dass der Text in der nächsten Zeile als Teil desselben Absatzes angesehen wird.

Hier sind eine Anleitung zur Installation des Ruby-Modus, falls Sie ihn noch nicht haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X